module Horsefield::Diggable
Public Instance Methods
fields()
click to toggle source
# File lib/horsefield/diggable.rb, line 50 def fields @fields ||= {} end
many(name, selector, lookup = :optional, &block)
click to toggle source
# File lib/horsefield/diggable.rb, line 8 def many(name, selector, lookup = :optional, &block) docs = search(selector) raise MissingSelectorError, "Couldn't find required selector (#{selector})" if lookup == :required && docs.empty? return fields if lookup == :presence && docs.empty? nodes = docs.map do |doc| doc.instance_eval(&processor(&block)) end fields.merge!(Hash[[[name, nodes]]]) end
many!(name, selector, &block)
click to toggle source
# File lib/horsefield/diggable.rb, line 30 def many!(name, selector, &block) many(name, selector, :required, &block) end
many?(name, selector, &block)
click to toggle source
# File lib/horsefield/diggable.rb, line 34 def many?(name, selector, &block) many(name, selector, :presence, &block) end
one(name, selector = nil, lookup = :optional, &block)
click to toggle source
# File lib/horsefield/diggable.rb, line 21 def one(name, selector = nil, lookup = :optional, &block) doc = selector ? at(selector) : self.dup raise MissingSelectorError, "Couldn't find required selector (#{selector})" if lookup == :required && !doc return fields if lookup == :presence && !doc fields.merge!(Hash[[[name, doc && doc.with_fresh_fields.instance_eval(&processor(&block))]]]) end
one!(name, selector = nil, &block)
click to toggle source
# File lib/horsefield/diggable.rb, line 38 def one!(name, selector = nil, &block) one(name, selector, :required, &block) end
one?(name, selector = nil, &block)
click to toggle source
# File lib/horsefield/diggable.rb, line 42 def one?(name, selector = nil, &block) one(name, selector, :presence, &block) end
processor(&block)
click to toggle source
# File lib/horsefield/diggable.rb, line 46 def processor(&block) block || Proc.new { text.strip } end
with_fresh_fields()
click to toggle source
# File lib/horsefield/diggable.rb, line 3 def with_fresh_fields @fields = {} self end