module FidoMetadata::Attributes
Public Instance Methods
from_json(hash = {})
click to toggle source
# File lib/fido_metadata/attributes.rb, line 27 def from_json(hash = {}) instance = new hash.each do |k, v| method_name = :"#{underscore_name(k)}=" instance.public_send(method_name, v) if instance.respond_to?(method_name) end instance end
json_accessor(name, coercer = nil)
click to toggle source
# File lib/fido_metadata/attributes.rb, line 15 def json_accessor(name, coercer = nil) underscored_name = underscore_name(name) attr_accessor underscored_name if coercer define_method(:"#{underscored_name}=") do |value| coerced_value = coercer.coerce(value) instance_variable_set(:"@#{underscored_name}", coerced_value) end end end
Private Instance Methods
underscore_name(name)
click to toggle source
# File lib/fido_metadata/attributes.rb, line 5 def underscore_name(name) name .gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2') .gsub(/([a-z\d])([A-Z])/, '\1_\2') .downcase .to_sym end