class Statics::Collection

Attributes

records[R]

Public Class Methods

new(records) click to toggle source

@param records [Array<Statics::Model>]

# File lib/statics/collection.rb, line 12
def initialize(records)
  @records = records
end

Public Instance Methods

each(&block) click to toggle source

@return [Statics::Collection]

# File lib/statics/collection.rb, line 17
def each(&block)
  self.class.new(records.each(&block))
end
find_by(conditions) click to toggle source

@param conditions [Hash] @return [Statics::Model]

# File lib/statics/collection.rb, line 45
def find_by(conditions)
  find { |record| filter?(record, conditions) }
end
keys() click to toggle source

@return [Array<Symbol>]

# File lib/statics/collection.rb, line 50
def keys
  pluck(:key)
end
pluck(*attributes) click to toggle source

@param attributes [Array<Symbol>] @return [Array<Object>]

# File lib/statics/collection.rb, line 56
def pluck(*attributes)
  map { |record| record.attributes.slice(*attributes).values }
    .tap { |result| result.flatten! if attributes.size == 1 }
end
reject(&block) click to toggle source

@return [Statics::Collection]

# File lib/statics/collection.rb, line 27
def reject(&block)
  self.class.new(records.reject(&block))
end
select(&block) click to toggle source

@return [Statics::Collection]

# File lib/statics/collection.rb, line 22
def select(&block)
  self.class.new(records.select(&block))
end
where(conditions) click to toggle source

@param conditions [Hash] @return [Statics::Collection]

# File lib/statics/collection.rb, line 33
def where(conditions)
  select { |record| filter?(record, conditions) }
end
where_not(conditions) click to toggle source

@param conditions [Hash] @return [Statics::Collection]

# File lib/statics/collection.rb, line 39
def where_not(conditions)
  reject { |record| filter?(record, conditions) }
end

Private Instance Methods

filter?(record, conditions) click to toggle source

@param record [Static::Model] @param conditions [Hash] @return [true, false]

# File lib/statics/collection.rb, line 68
def filter?(record, conditions)
  conditions.all? do |attribute, value|
    case value
    when Array
      value.include?(record.send(attribute))
    else
      record.send(attribute) == value
    end
  end
end