Class: Jabara::ParseCom::Schema::Variants
- Inherits:
-
Object
- Object
- Jabara::ParseCom::Schema::Variants
- Defined in:
- lib/jabara/parse_com/schema.rb
Instance Method Summary collapse
-
#initialize(&block) ⇒ Variants
constructor
A new instance of Variants.
- #object_types ⇒ Object
- #parse(data) ⇒ Object
- #schema(&block) ⇒ Object
-
#variant(key:, schema:) ⇒ Object
following methods are for DSL.
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_types ⇒ Object
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
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 |