lutaml-model 0.3.4 → 0.3.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +7 -7
- data/README.adoc +22 -2
- data/lib/lutaml/model/serialize.rb +21 -5
- data/lib/lutaml/model/version.rb +1 -1
- data/lib/lutaml/model/xml_adapter/nokogiri_adapter.rb +10 -2
- data/lib/lutaml/model/xml_adapter/ox_adapter.rb +9 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 55348c33e2e23ce7c53c33e588621b8e73df49c5ca4e82e70c8216ad8f0cc6ab
|
4
|
+
data.tar.gz: dd39d10a7f036596de8bce7f154197d446d065c76deee5a0b334522b8bbfdcea
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46d78508e5cd397bf19c79c4dfba9bb49835945ae6ae83744588bc134c7809988716ea83c2f83485efdf50bf4a31e8be4daafbf6ada78a22dbfa90e14def72ba
|
7
|
+
data.tar.gz: 05005dc4d4e6309913e706f38bf925c0ac77533728b34b89f8a69c901ea728d53bddf163e377ec7638be145ebf7bf7eb77f2d3c3ff078d7e7feb9ad6e52ff14f
|
data/.rubocop_todo.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on 2024-08-
|
3
|
+
# on 2024-08-17 14:46:05 UTC using RuboCop version 1.64.1.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
@@ -14,7 +14,7 @@ Gemspec/RequireMFA:
|
|
14
14
|
Exclude:
|
15
15
|
- 'lutaml-model.gemspec'
|
16
16
|
|
17
|
-
# Offense count:
|
17
|
+
# Offense count: 77
|
18
18
|
# This cop supports safe autocorrection (--autocorrect).
|
19
19
|
# Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
|
20
20
|
# URISchemes: http, https
|
@@ -55,11 +55,11 @@ Metrics/AbcSize:
|
|
55
55
|
- 'lib/lutaml/model/xml_adapter/ox_adapter.rb'
|
56
56
|
- 'lib/lutaml/model/xml_adapter/xml_document.rb'
|
57
57
|
|
58
|
-
# Offense count:
|
58
|
+
# Offense count: 4
|
59
59
|
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns, inherit_mode.
|
60
60
|
# AllowedMethods: refine
|
61
61
|
Metrics/BlockLength:
|
62
|
-
Max:
|
62
|
+
Max: 31
|
63
63
|
|
64
64
|
# Offense count: 23
|
65
65
|
# Configuration parameters: AllowedMethods, AllowedPatterns, Max.
|
@@ -75,7 +75,7 @@ Metrics/CyclomaticComplexity:
|
|
75
75
|
# Offense count: 38
|
76
76
|
# Configuration parameters: CountComments, CountAsOne, AllowedMethods, AllowedPatterns.
|
77
77
|
Metrics/MethodLength:
|
78
|
-
Max:
|
78
|
+
Max: 52
|
79
79
|
|
80
80
|
# Offense count: 4
|
81
81
|
# Configuration parameters: CountKeywordArgs, MaxOptionalParameters.
|
@@ -102,7 +102,7 @@ RSpec/ContextWording:
|
|
102
102
|
- 'spec/lutaml/model/xml_adapter/oga_adapter_spec.rb'
|
103
103
|
- 'spec/lutaml/model/xml_adapter/ox_adapter_spec.rb'
|
104
104
|
|
105
|
-
# Offense count:
|
105
|
+
# Offense count: 72
|
106
106
|
# Configuration parameters: CountAsOne.
|
107
107
|
RSpec/ExampleLength:
|
108
108
|
Max: 57
|
@@ -129,7 +129,7 @@ RSpec/MultipleDescribes:
|
|
129
129
|
- 'spec/lutaml/model/xml_adapter/xml_namespace_spec.rb'
|
130
130
|
- 'spec/lutaml/model/xml_adapter_spec.rb'
|
131
131
|
|
132
|
-
# Offense count:
|
132
|
+
# Offense count: 70
|
133
133
|
RSpec/MultipleExpectations:
|
134
134
|
Max: 15
|
135
135
|
|
data/README.adoc
CHANGED
@@ -1291,10 +1291,30 @@ each serialization mapping block for `from` and `to`.
|
|
1291
1291
|
|
1292
1292
|
Syntax:
|
1293
1293
|
|
1294
|
+
.XML serialization with custom methods
|
1294
1295
|
[source,ruby]
|
1295
1296
|
----
|
1296
|
-
xml
|
1297
|
-
|
1297
|
+
xml do
|
1298
|
+
map_element 'element_name', to: :name_of_element, with: {
|
1299
|
+
to: :method_name_to_serialize,
|
1300
|
+
from: :method_name_to_deserialize
|
1301
|
+
}
|
1302
|
+
map_attribute 'attribute_name', to: :name_of_attribute, with: {
|
1303
|
+
to: :method_name_to_serialize,
|
1304
|
+
from: :method_name_to_deserialize
|
1305
|
+
}
|
1306
|
+
map_content, to: :name_of_content, with: {
|
1307
|
+
to: :method_name_to_serialize,
|
1308
|
+
from: :method_name_to_deserialize
|
1309
|
+
}
|
1310
|
+
end
|
1311
|
+
----
|
1312
|
+
|
1313
|
+
.Key-value data model serialization with custom methods
|
1314
|
+
[source,ruby]
|
1315
|
+
----
|
1316
|
+
json | yaml | toml do
|
1317
|
+
map 'attribute_name', to: :name_of_attribute, with: {
|
1298
1318
|
to: :method_name_to_serialize,
|
1299
1319
|
from: :method_name_to_deserialize
|
1300
1320
|
}
|
@@ -210,9 +210,7 @@ module Lutaml
|
|
210
210
|
else
|
211
211
|
# TODO: This code is problematic because Type.cast does not know
|
212
212
|
# about all the types.
|
213
|
-
Lutaml::Model::Type.cast(
|
214
|
-
v, attr_rule.type
|
215
|
-
)
|
213
|
+
Lutaml::Model::Type.cast(v, attr_rule.type)
|
216
214
|
end
|
217
215
|
end
|
218
216
|
elsif value.is_a?(Hash) && attr_rule.type != Lutaml::Model::Type::Hash
|
@@ -276,7 +274,7 @@ module Lutaml
|
|
276
274
|
end.public_send(:[]=, path.last.to_s, child_obj.send(attr_name))
|
277
275
|
end
|
278
276
|
end
|
279
|
-
|
277
|
+
|
280
278
|
hash[map_key] = map_value
|
281
279
|
end
|
282
280
|
|
@@ -337,6 +335,8 @@ module Lutaml
|
|
337
335
|
mapping_hash.item_order = doc.item_order
|
338
336
|
mapping_hash.ordered = mappings_for(:xml).mixed_content? || mixed_content
|
339
337
|
|
338
|
+
mapping_from = []
|
339
|
+
|
340
340
|
mappings.each_with_object(mapping_hash) do |rule, hash|
|
341
341
|
attr = attributes[rule.to]
|
342
342
|
raise "Attribute '#{rule.to}' not found in #{self}" unless attr
|
@@ -372,8 +372,22 @@ module Lutaml
|
|
372
372
|
value = attr.type.cast(value) unless is_content_mapping
|
373
373
|
end
|
374
374
|
|
375
|
+
mapping_from << rule if rule.custom_methods[:from]
|
376
|
+
|
375
377
|
hash[rule.to] = value
|
376
378
|
end
|
379
|
+
|
380
|
+
mapping_from.each do |rule|
|
381
|
+
value = if rule.name.nil?
|
382
|
+
mapping_hash[rule.to].join("\n").strip
|
383
|
+
else
|
384
|
+
mapping_hash[rule.to]
|
385
|
+
end
|
386
|
+
|
387
|
+
mapping_hash[rule.to] = new.send(rule.custom_methods[:from], mapping_hash, value)
|
388
|
+
end
|
389
|
+
|
390
|
+
mapping_hash
|
377
391
|
end
|
378
392
|
|
379
393
|
def ensure_utf8(value)
|
@@ -385,7 +399,9 @@ module Lutaml
|
|
385
399
|
when Hash
|
386
400
|
value.transform_keys do |k|
|
387
401
|
ensure_utf8(k)
|
388
|
-
end.transform_values
|
402
|
+
end.transform_values do |v|
|
403
|
+
ensure_utf8(v)
|
404
|
+
end
|
389
405
|
else
|
390
406
|
value
|
391
407
|
end
|
data/lib/lutaml/model/version.rb
CHANGED
@@ -71,10 +71,14 @@ module Lutaml
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
-
if xml_mapping.content_mapping
|
75
|
-
text = element.send(
|
74
|
+
if (content_rule = xml_mapping.content_mapping)
|
75
|
+
text = element.send(content_rule.to)
|
76
76
|
text = text.join if text.is_a?(Array)
|
77
77
|
|
78
|
+
if content_rule.custom_methods[:to]
|
79
|
+
text = @root.send(content_rule.custom_methods[:to], @root, text)
|
80
|
+
end
|
81
|
+
|
78
82
|
prefixed_xml.text text
|
79
83
|
end
|
80
84
|
end
|
@@ -130,6 +134,10 @@ module Lutaml
|
|
130
134
|
end
|
131
135
|
|
132
136
|
def add_to_xml(xml, value, attribute, rule)
|
137
|
+
if rule.custom_methods[:to]
|
138
|
+
value = @root.send(rule.custom_methods[:to], @root, value)
|
139
|
+
end
|
140
|
+
|
133
141
|
if value && (attribute&.type&.<= Lutaml::Model::Serialize)
|
134
142
|
handle_nested_elements(
|
135
143
|
xml,
|
@@ -69,10 +69,14 @@ module Lutaml
|
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
|
-
if xml_mapping.content_mapping
|
72
|
+
if (content_rule = xml_mapping.content_mapping)
|
73
73
|
text = element.send(xml_mapping.content_mapping.to)
|
74
74
|
text = text.join if text.is_a?(Array)
|
75
75
|
|
76
|
+
if content_rule.custom_methods[:to]
|
77
|
+
text = @root.send(content_rule.custom_methods[:to], @root, text)
|
78
|
+
end
|
79
|
+
|
76
80
|
el.text text
|
77
81
|
end
|
78
82
|
end
|
@@ -113,6 +117,10 @@ module Lutaml
|
|
113
117
|
end
|
114
118
|
|
115
119
|
def add_to_xml(xml, value, attribute, rule)
|
120
|
+
if rule.custom_methods[:to]
|
121
|
+
value = @root.send(rule.custom_methods[:to], @root, value)
|
122
|
+
end
|
123
|
+
|
116
124
|
if value && (attribute&.type&.<= Lutaml::Model::Serialize)
|
117
125
|
handle_nested_elements(
|
118
126
|
xml,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lutaml-model
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-08-
|
11
|
+
date: 2024-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|