module Microformats # stub to get around the tests for now class ParserResult def initialize(hash) @hash = hash end def to_h @hash end def to_hash @hash end def to_json to_hash.to_json end def to_s return @hash['value'] if @hash['value'] @hash.to_s end def [](key) @hash[key] end def value @hash['value'] end def properties PropertySet.new(@hash['properties']) end def respond_to?(sym, include_private = false) key?(sym) || property?(sym) || super(sym, include_private) end def method_missing(sym, *args, &block) name = sym.to_s name_dash = name.tr('_', '-') if name.include?('_') if !@hash[name].nil? result_hash = @hash[name] elsif !@hash['properties'].nil? && !@hash['properties'][name].nil? result_hash = @hash['properties'][name] elsif !name_dash.nil? && !@hash[name_dash].nil? result_hash = @hash[name_dash] elsif !name_dash.nil? && !@hash['properties'].nil? && !@hash['properties'][name_dash].nil? result_hash = @hash['properties'][name_dash] else super(sym, *args, &block) end if result_hash.is_a?(Array) if args[0].nil? result_hash = result_hash[0] # will return nil for an empty array elsif args[0] == :all return result_hash.map do |x| ParserResult.new(x) end elsif args[0].to_i < result_hash.count result_hash = result_hash[args[0].to_i] else result_hash = result_hash[0] # will return nil for an empty array end end if result_hash.nil? || result_hash.empty? result_hash elsif result_hash.is_a?(Hash) ParserResult.new(result_hash) else result_hash end end private def key?(name) name = name.to_s name_dash = name.tr('_', '-') if name.include?('_') !@hash[name].nil? || !@hash[name_dash].nil? end def property?(name) name = name.to_s name_dash = name.tr('_', '-') if name.include?('_') return false if @hash['properties'].nil? !@hash['properties'][name].nil? || !@hash['properties'][name_dash].nil? end end end