Class: Jsonity::Builder
- Inherits:
- BasicObject
- Defined in:
- lib/jsonity/builder.rb
Class Method Summary collapse
-
.build(object = nil, content = nil, &block) ⇒ Hash
Build Jsonity.
Instance Method Summary collapse
-
#<=(obj) ⇒ Object
Set ‘obj` for the object.
-
#[] ⇒ Jsonity::Builder
Create array context.
-
#call(obj = nil, &block) ⇒ Object
Mixin / Scoping.
-
#initialize(object, content) ⇒ Builder
constructor
Initializer.
Constructor Details
#initialize(object, content) ⇒ Builder
Initializer
31 32 33 34 |
# File 'lib/jsonity/builder.rb', line 31 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
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/jsonity/builder.rb', line 73 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 : {} [:_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
Build Jsonity
13 14 15 16 17 18 19 20 21 22 23 |
# 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, nil } end builder.(&block) builder.__send__ :content end |
Instance Method Details
#<=(obj) ⇒ Object
Set ‘obj` for the object
39 40 41 |
# File 'lib/jsonity/builder.rb', line 39 def <=(obj) @object = obj end |
#[] ⇒ Jsonity::Builder
Create array context
48 49 50 51 |
# File 'lib/jsonity/builder.rb', line 48 def [] @array = true self end |