Sha256: 3dd5265bf5ecbce05f10c4b2ef7248abe7c84fdacc1689129c7c71fc1d5b7f35

Contents?: true

Size: 827 Bytes

Versions: 9

Compression:

Stored size: 827 Bytes

Contents

require "metamorpher/builders/ruby/ensuring_visitor"
require "metamorpher/builders/ruby/deriving_visitor"

module Metamorpher
  module Builders
    module Ruby
      module Term
        def ensuring(variable_name, &condition)
          accept_and_decorate(
            EnsuringVisitor.new(
              variable_name.downcase.to_sym,
              condition
            )
          )
        end

        def deriving(variable_name, *base_names, &derivation)
          accept_and_decorate(
            DerivingVisitor.new(
              variable_name.downcase.to_sym,
              *base_names.map { |n| n.downcase.to_sym },
              derivation
            )
          )
        end

        private

        def accept_and_decorate(visitor)
          accept(visitor).extend(Term)
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
metamorpher-0.2.6 lib/metamorpher/builders/ruby/term.rb
metamorpher-0.2.5 lib/metamorpher/builders/ruby/term.rb
metamorpher-0.2.4 lib/metamorpher/builders/ruby/term.rb
metamorpher-0.2.3 lib/metamorpher/builders/ruby/term.rb
metamorpher-0.2.2 lib/metamorpher/builders/ruby/term.rb
metamorpher-0.2.1 lib/metamorpher/builders/ruby/term.rb
metamorpher-0.2.0 lib/metamorpher/builders/ruby/term.rb
metamorpher-0.1.1 lib/metamorpher/builders/ruby/term.rb
metamorpher-0.1.0 lib/metamorpher/builders/ruby/term.rb