Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
lobbyist-ruby / lib / lobbyist / collection.rb
Size: Mime:
module Lobbyist
  class Collection

    attr_accessor :elements, :count, :page, :total, :rpp, :match_copied

    def initialize(elements, count = nil, total = nil, rpp = nil, page = nil)
      @elements = elements
      @count = count
      @total = total
      @rpp = rpp
      @page = page
    end

    def sum(column, conditions = {})
      selected = conditions.blank? ? @elements :
        @elements.select { |element| valid_element? element, conditions }

      selected.inject(0) do |sum, element|
        num = element.send(column).to_f
        sum + num
      end
    end

    private

    def valid_element?(element, conditions)
      conditions.each do |key, value|
        return false if element.send(key) != value
      end
    end
  end
end