Module: UniverseCompiler::Universe::Query
- Included in:
- Base
- Defined in:
- lib/universe_compiler/universe/query.rb
Instance Method Summary collapse
- #basic_criteria ⇒ Object
- #get_entities(criterion: nil, value: nil, &filter_block) ⇒ Object
- #get_entity(type, name) ⇒ Object
Instance Method Details
#basic_criteria ⇒ Object
6 7 8 |
# File 'lib/universe_compiler/universe/query.rb', line 6 def basic_criteria self.private_methods.grep /^by_/ end |
#get_entities(criterion: nil, value: nil, &filter_block) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/universe_compiler/universe/query.rb', line 15 def get_entities(criterion: nil, value: nil, &filter_block) res = if criterion.nil? then entities.clone else raise "Invalid criterion '#{criterion}' !" unless basic_criteria.include? criterion if value.nil? self.send(criterion).clone else self.send(criterion).clone[value] end end res = case res when NilClass [] when Array res else [res] end if block_given? res.select! do |entity| filter_block.call entity end end res end |
#get_entity(type, name) ⇒ Object
10 11 12 13 |
# File 'lib/universe_compiler/universe/query.rb', line 10 def get_entity(type, name) res = get_entities criterion: :by_uniq_key, value: [type, name] res.empty? ? nil : res.first end |