Sha256: b8a95dafcef4d45d77753f131550fb7d7c60d31963ea9422dea44b9ea549774a

Contents?: true

Size: 831 Bytes

Versions: 3

Compression:

Stored size: 831 Bytes

Contents

module Runbook::Extensions
  module Statements
    module DSL
      def method_missing(name, *args, &block)
        if (klass = Statements::DSL._statement_class(name))
          klass.new(*args, &block).tap do |statement|
            parent.add(statement)

            if statement.respond_to?(:into)
              Runbook.runtime_methods << statement.into
            end
          end
        else
          super
        end
      end

      def respond_to?(name, include_private = false)
        !!(Statements::DSL._statement_class(name) || super)
      end

      def self._statement_class(name)
        "Runbook::Statements::#{name.to_s.camelize}".constantize
      rescue NameError
      end
    end
  end

  Runbook::Entities::Setup::DSL.prepend(Statements::DSL)
  Runbook::Entities::Step::DSL.prepend(Statements::DSL)
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
runbook-1.0.0 lib/runbook/extensions/statements.rb
runbook-0.16.1 lib/runbook/extensions/statements.rb
runbook-0.16.0 lib/runbook/extensions/statements.rb