module Parsed::Parseable::ClassMethods
Attributes
parseable_fields[RW]
parseable_hash[RW]
parser[RW]
Public Instance Methods
parse(data, parser = ParsesJson)
click to toggle source
# File lib/parsed/parseable.rb, line 21 def parse(data, parser = ParsesJson) @parser = parser @parseable_hash = parser.parse(data) instance = new parse_fields(instance) instance end
parses(*attributes)
click to toggle source
Public: Registers attributes that are to be parsed.
attributes - The fields to be parsed
Examples
class Foo include Parsed::Parseable attr_accessor :foo, :bar, :baz parsed :foo, :bar, :baz end
# File lib/parsed/parseable.rb, line 42 def parses(*attributes) attributes.each do |attributes| parseable_fields << attributes end end
Private Instance Methods
determine_collection_class(field)
click to toggle source
# File lib/parsed/parseable.rb, line 75 def determine_collection_class(field) if @collection_class_cache.has_key? field @collection_class_cache[field] else @collection_class_cache[field] = field.to_s.singularize.camelize.constantize end rescue NameError => e @collection_class_cache[field] = nil end
parse_field(field)
click to toggle source
# File lib/parsed/parseable.rb, line 57 def parse_field(field) clazz = determine_collection_class(field) if clazz elements = parser.parse_elements(parseable_hash, field) elements.map do |element| if element.instance_of? Hash clazz.parse(element) else element end end else parser.parse_value(parseable_hash, field) end end
parse_fields(instance)
click to toggle source
# File lib/parsed/parseable.rb, line 50 def parse_fields(instance) parseable_fields.each do |field| value = parse_field(field) instance.send("#{field}=".to_sym, value) end end