Class: Jsonity::Builder
- Inherits:
- BasicObject
- Defined in:
- lib/jsonity/builder.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#<=(obj) ⇒ Object
Set ‘obj` for the object.
-
#[] ⇒ Jsonity::Builder
Create array context.
-
#_content ⇒ Hash<Object, Object> | nil
Getter for ‘@content`.
-
#call(obj = nil, &block) ⇒ Object
Mixin / Scoping.
-
#get ⇒ Object
Get the object.
-
#initialize(object, content) ⇒ Builder
constructor
Initializer.
Constructor Details
#initialize(object, content) ⇒ Builder
Initializer
35 36 37 38 |
# File 'lib/jsonity/builder.rb', line 35 def initialize(object, content) @object, @content = object, content @deferred_array_blocks = {} end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object (private)
Handle ghost methods
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 |
# File 'lib/jsonity/builder.rb', line 102 def method_missing(name, *args, &block) name = name.to_s is_object = name.match OBJECT_SUFFIX name, is_object = name[0..-2], is_object[0] if is_object = args.last.is_a?(::Hash) ? args.pop.dup : {} [:_object] = args[0] [:_nullable] = ('?' == is_object) if @array @array = false if is_object array name, , &block else ::Kernel.raise UnexpectedNodeOnArrayError.new("Unexpected attribute node `#{name}`") end else if is_object hash name, , &block else attribute name, , &block end end self end |
Class Method Details
.build(object = nil, content = nil, &block) ⇒ Hash<String, Object>
Build Jsonity
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/jsonity/builder.rb', line 13 def self.build(object = nil, content = nil, &block) content = {} unless content.is_a?(::Hash) builder = new object, content if object.respond_to? :json_attributes object.json_attributes.each { |a| builder.__send__(:attribute, a, {}) } end if object.respond_to? :json_attribute_blocks object.json_attribute_blocks.each { |b| builder.(&b) } end builder.(&block) builder._content end |
Instance Method Details
#<=(obj) ⇒ Object
Set ‘obj` for the object
45 46 47 |
# File 'lib/jsonity/builder.rb', line 45 def <=(obj) @object = obj end |
#[] ⇒ Jsonity::Builder
Create array context
63 64 65 66 |
# File 'lib/jsonity/builder.rb', line 63 def [] @array = true self end |
#_content ⇒ Hash<Object, Object> | nil
Getter for ‘@content`
87 88 89 90 |
# File 'lib/jsonity/builder.rb', line 87 def _content evaluate_array_blocks! @content end |