Module: UniverseCompiler::Universe::Query

Included in:
Base
Defined in:
lib/universe_compiler/universe/query.rb

Instance Method Summary collapse

Instance Method Details

#basic_criteriaObject



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