Class: Jabara::ParseCom::Schema::Variants

Inherits:
Object
  • Object
show all
Defined in:
lib/jabara/parse_com/schema.rb

Instance Method Summary collapse

Constructor Details

#initialize(&block) ⇒ Variants

Returns a new instance of Variants.



185
186
187
188
# File 'lib/jabara/parse_com/schema.rb', line 185

def initialize(&block)
  @variants = {}
  instance_eval(&block)
end

Instance Method Details

#object_typesObject



200
201
202
203
204
# File 'lib/jabara/parse_com/schema.rb', line 200

def object_types
  @variants.map { |_, input|
    [input.schema.object_type] + input.schema.inner_object_types
  }.flatten
end

#parse(data) ⇒ Object

Raises:

  • (ArgumentError)


190
191
192
193
194
195
196
197
198
# File 'lib/jabara/parse_com/schema.rb', line 190

def parse(data)
  return ::Jabara.null if data.nil?
  raise ArgumentError, 'data must be hash' unless data.is_a? ::Hash

  reprs = @variants.map { |key, schema|
    if not data[key].nil? then schema.decode(data[key]) else nil end
  }.compact
  ::Jabara.set(reprs)
end

#schema(&block) ⇒ Object



212
213
214
# File 'lib/jabara/parse_com/schema.rb', line 212

def schema(&block)
  Builder.build(&block)
end

#variant(key:, schema:) ⇒ Object

following methods are for DSL



208
209
210
# File 'lib/jabara/parse_com/schema.rb', line 208

def variant(key:, schema:)
  @variants[key] = ::Jabara::ParseCom::Input.new(schema)
end