Sha256: 629723715673cb76954855fa5c8441bff78681b7f9f7d987b7192211066d2448
Contents?: true
Size: 1.11 KB
Versions: 2
Compression:
Stored size: 1.11 KB
Contents
module Rooftop module Content class Collection < ::Array def initialize(content_fields) content_fields.each do |field| self << Rooftop::Content::Field.new(field) end end # Find content_fields by attribute. Assume there will only be one attribute in the search def find_by(hash) raise ArgumentError, "you can only find a field by one attribute at a time" unless hash.length == 1 attr = hash.first.first val = hash.first.last self.select {|l| l.send(attr) == val.to_s} end def named(name) find_by(name: name.to_s) end def field_names collect(&:name) end def method_missing(method, *args, &block) fields = named(method) if fields.length > 0 fields.first.value else raise Rooftop::Content::FieldNotFoundError, "No field named #{method} was found" end end def respond_to_missing?(method, private=false) if named(method).length == 0 super else true end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rooftop-0.0.6 | lib/rooftop/content/collection.rb |
rooftop-0.0.5 | lib/rooftop/content/collection.rb |