Module: Factbase::Lists
- Included in:
- Term
- Defined in:
- lib/factbase/terms/lists.rb
Overview
Lists management.
- Author
-
Yegor Bugayenko ([email protected])
- Copyright
-
Copyright © 2024-2025 Yegor Bugayenko
- License
-
MIT
Instance Method Summary collapse
- #head(_fact, _maps, _fb) ⇒ Object
- #head_predict(maps, fb, params) ⇒ Object
- #inverted(_fact, _maps, _fb) ⇒ Object
- #inverted_predict(maps, fb, params) ⇒ Object
- #sorted(_fact, _maps, _fb) ⇒ Object
- #sorted_predict(maps, fb, params) ⇒ Object
Instance Method Details
#head(_fact, _maps, _fb) ⇒ Object
43 44 45 |
# File 'lib/factbase/terms/lists.rb', line 43 def head(_fact, _maps, _fb) true end |
#head_predict(maps, fb, params) ⇒ Object
47 48 49 50 51 52 53 54 55 56 |
# File 'lib/factbase/terms/lists.rb', line 47 def head_predict(maps, fb, params) assert_args(2) max = @operands[0] raise "An integer is expected as first argument of 'sorted'" unless max.is_a?(Integer) term = @operands[1] raise "A term is expected, but '#{term}' provided" unless term.is_a?(Factbase::Term) fb.query(term, maps).each(fb, params).to_a .take(max) .map { |m| m.all_properties.to_h { |k| [k, m[k]] } } end |
#inverted(_fact, _maps, _fb) ⇒ Object
30 31 32 |
# File 'lib/factbase/terms/lists.rb', line 30 def inverted(_fact, _maps, _fb) true end |
#inverted_predict(maps, fb, params) ⇒ Object
34 35 36 37 38 39 40 41 |
# File 'lib/factbase/terms/lists.rb', line 34 def inverted_predict(maps, fb, params) assert_args(1) term = @operands[0] raise "A term is expected, but '#{term}' provided" unless term.is_a?(Factbase::Term) fb.query(term, maps).each(fb, params).to_a .reverse .map { |m| m.all_properties.to_h { |k| [k, m[k]] } } end |
#sorted(_fact, _maps, _fb) ⇒ Object
14 15 16 |
# File 'lib/factbase/terms/lists.rb', line 14 def sorted(_fact, _maps, _fb) true end |
#sorted_predict(maps, fb, params) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/factbase/terms/lists.rb', line 18 def sorted_predict(maps, fb, params) assert_args(2) prop = @operands[0] raise "A symbol is expected as first argument of 'sorted'" unless prop.is_a?(Symbol) term = @operands[1] raise "A term is expected, but '#{term}' provided" unless term.is_a?(Factbase::Term) fb.query(term, maps).each(fb, params).to_a .reject { |m| m[prop].nil? } .sort_by { |m| m[prop].first } .map { |m| m.all_properties.to_h { |k| [k, m[k]] } } end |