Class: Lutaml::Lml::Format::Adapter::StandardAdapter
- Inherits:
-
Document
- Object
- KeyValue::Document
- Document
- Lutaml::Lml::Format::Adapter::StandardAdapter
- Defined in:
- lib/lutaml/lml/format/adapter/standard_adapter.rb
Constant Summary collapse
- TYPE_KEY =
"__type__"
Class Method Summary collapse
- .instance_to_hash(instance) ⇒ Object
- .parse(data, _options = {}) ⇒ Object
- .primitive_value(val) ⇒ Object
Instance Method Summary collapse
-
#initialize(attributes = {}, **options) ⇒ StandardAdapter
constructor
A new instance of StandardAdapter.
- #to_lml(_options = {}) ⇒ Object
Constructor Details
#initialize(attributes = {}, **options) ⇒ StandardAdapter
Returns a new instance of StandardAdapter.
18 19 20 |
# File 'lib/lutaml/lml/format/adapter/standard_adapter.rb', line 18 def initialize(attributes = {}, **) super end |
Class Method Details
.instance_to_hash(instance) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/lutaml/lml/format/adapter/standard_adapter.rb', line 31 def self.instance_to_hash(instance) return nil unless instance hash = {} hash[TYPE_KEY] = instance.type if instance.type Array(instance.attributes).each do |attr| if attr.instances.any? hashes = attr.instances.map { |i| instance_to_hash(i) } hash[attr.name] = attr.instances.one? ? hashes.first : hashes elsif attr.value.is_a?(Array) hash[attr.name] = attr.value.map { |v| primitive_value(v) } elsif !attr.value.nil? hash[attr.name] = primitive_value(attr.value) end end if instance.instance hash.merge!(instance_to_hash(instance.instance)) end hash end |
.parse(data, _options = {}) ⇒ Object
10 11 12 13 14 15 16 |
# File 'lib/lutaml/lml/format/adapter/standard_adapter.rb', line 10 def self.parse(data, = {}) return data if data.is_a?(Hash) input = data.is_a?(IO) ? data : StringIO.new(data.to_s) doc = Lutaml::Lml::Pipeline.call(input, resolve: false) instance_to_hash(doc.instance) end |
.primitive_value(val) ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/lutaml/lml/format/adapter/standard_adapter.rb', line 55 def self.primitive_value(val) case val when TrueClass, FalseClass then val when Integer, Float then val else val.to_s end end |
Instance Method Details
#to_lml(_options = {}) ⇒ Object
22 23 24 25 26 27 |
# File 'lib/lutaml/lml/format/adapter/standard_adapter.rb', line 22 def to_lml( = {}) attrs = @attributes.dup type_name = attrs.delete(TYPE_KEY) || "Data" body = hash_to_lml_body(attrs) "instance #{type_name} {\n#{body}\n}" end |