Module: Factbase::Term::Aliases
- Included in:
- Factbase::Term
- Defined in:
- lib/factbase/terms/aliases.rb
Overview
Aliases terms.
- Author
-
Yegor Bugayenko ([email protected])
- Copyright
-
Copyright © 2024 Yegor Bugayenko
- License
-
MIT
Instance Method Summary collapse
Instance Method Details
#as(fact, maps) ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'lib/factbase/terms/aliases.rb', line 31 def as(fact, maps) assert_args(2) a = @operands[0] raise "A symbol expected as first argument of 'as'" unless a.is_a?(Symbol) vv = the_values(1, fact, maps) vv&.each { |v| fact.send("#{a}=", v) } true end |
#join(fact, maps) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/factbase/terms/aliases.rb', line 40 def join(fact, maps) assert_args(2) mask = @operands[0] raise "A string expected as first argument of 'join'" unless mask.is_a?(String) term = @operands[1] raise "A term expected, but '#{term}' provided" unless term.is_a?(Factbase::Term) subset = maps.select { |m| term.evaluate(Factbase::Tee.new(Factbase::Fact.new(Mutex.new, m), fact), maps) } subset.each do |m| m.each do |k, vv| vv.each do |v| fact.send("#{mask.gsub('*', k)}=", v) end end end true end |