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.



177
178
179
180
# File 'lib/jabara/parse_com/schema.rb', line 177

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

Instance Method Details

#parse(data) ⇒ Object

Raises:

  • (ArgumentError)


181
182
183
184
185
186
187
188
189
# File 'lib/jabara/parse_com/schema.rb', line 181

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

#variant(key:, schema:) ⇒ Object

following methods are for DSL



193
194
195
# File 'lib/jabara/parse_com/schema.rb', line 193

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