Module: Factbase::Aliases
- Included in:
- Term
- Defined in:
- lib/factbase/terms/aliases.rb
Overview
Aliases terms.
- Author
-
Yegor Bugayenko ([email protected])
- Copyright
-
Copyright © 2024-2025 Yegor Bugayenko
- License
-
MIT
Instance Method Summary collapse
Instance Method Details
#as(fact, maps, fb) ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/factbase/terms/aliases.rb', line 14 def as(fact, maps, fb) assert_args(2) a = @operands[0] raise "A symbol is expected as first argument of 'as'" unless a.is_a?(Symbol) vv = _values(1, fact, maps, fb) vv&.each { |v| fact.send(:"#{a}=", v) } true end |
#join(fact, maps, fb) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/factbase/terms/aliases.rb', line 23 def join(fact, maps, fb) assert_args(2) jumps = @operands[0] raise "A string is expected as first argument of 'join'" unless jumps.is_a?(String) jumps = jumps.split(',') .map(&:strip) .map { |j| j.split('<=').map(&:strip) } .map { |j| j.size == 1 ? [j[0], j[0]] : j } term = @operands[1] raise "A term is expected, but '#{term}' provided" unless term.is_a?(Factbase::Term) subset = fb.query(term, maps).each(fb, fact).to_a subset.each do |s| jumps.each do |to, from| s[from]&.each do |v| fact.send(:"#{to}=", v) end end end true end |