module UniverseCompiler::Universe::Query

Public Instance Methods

basic_criteria() click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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