Class: Jsoning::Mapper
- Inherits:
-
Object
- Object
- Jsoning::Mapper
- Defined in:
- lib/jsoning/foundations/mapper.rb
Overview
responsible of mapping from object to representable values, one field at a time
Instance Attribute Summary collapse
- #default_value(version_name = self.version.version_name) ⇒ Object
- #name ⇒ Object
-
#nullable ⇒ Object
writeonly
Sets the attribute nullable.
-
#parallel_variable ⇒ Object
what variable in the object will be used to obtain the value.
-
#value_processor ⇒ Object
Returns the value of attribute value_processor.
-
#version ⇒ Object
access to a version instance.
Instance Method Summary collapse
-
#extract(object, requested_version_name, target_hash) ⇒ Object
map this very specific object’s field to target_hash.
-
#initialize(version_instance) ⇒ Mapper
constructor
A new instance of Mapper.
- #nullable? ⇒ Boolean
Constructor Details
#initialize(version_instance) ⇒ Mapper
15 16 17 18 19 20 |
# File 'lib/jsoning/foundations/mapper.rb', line 15 def initialize(version_instance) self.parallel_variable = nil @default_value = nil self.nullable = true self.version = version_instance end |
Instance Attribute Details
#default_value(version_name = self.version.version_name) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/jsoning/foundations/mapper.rb', line 63 def default_value(version_name = self.version.version_name) if @default_value if @default_value.is_a?(Proc) return deep_parse(@default_value.(), version_name, true) else return deep_parse(@default_value, version_name, true) end else nil end end |
#name ⇒ Object
31 32 33 34 |
# File 'lib/jsoning/foundations/mapper.rb', line 31 def name @name_as_string = @name.to_s if @name_as_string.nil? @name_as_string end |
#nullable=(value) ⇒ Object (writeonly)
Sets the attribute nullable
10 11 12 |
# File 'lib/jsoning/foundations/mapper.rb', line 10 def nullable=(value) @nullable = value end |
#parallel_variable ⇒ Object
what variable in the object will be used to obtain the value
12 13 14 |
# File 'lib/jsoning/foundations/mapper.rb', line 12 def parallel_variable @parallel_variable end |
#value_processor ⇒ Object
Returns the value of attribute value_processor.
13 14 15 |
# File 'lib/jsoning/foundations/mapper.rb', line 13 def value_processor @value_processor end |
#version ⇒ Object
access to a version instance
4 5 6 |
# File 'lib/jsoning/foundations/mapper.rb', line 4 def version @version end |
Instance Method Details
#extract(object, requested_version_name, target_hash) ⇒ Object
map this very specific object’s field to target_hash
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/jsoning/foundations/mapper.rb', line 37 def extract(object, requested_version_name, target_hash) target_value = nil if object.respond_to?(parallel_variable) parallel_val = object.send(parallel_variable) target_value = parallel_val end if target_value.nil? target_value = self.default_value(requested_version_name) if target_value.nil? && !self.nullable? raise Jsoning::Error, "Null value given for '#{name}' when serializing #{object}" end end # apply extractor to extracted value, if processor is defined if value_processor target_value = deep_parse(target_value, requested_version_name, false) target_value = value_processor.(target_value) else target_value = deep_parse(target_value, requested_version_name, true) end target_hash[name] = target_value end |
#nullable? ⇒ Boolean
22 23 24 25 26 27 28 29 |
# File 'lib/jsoning/foundations/mapper.rb', line 22 def nullable? if @nullable.is_a?(TrueClass) || @nullable.is_a?(FalseClass) return @nullable else # by default, allow every mapped things to be nil true end end |