lutaml-model 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +4 -3
- data/README.adoc +36 -0
- data/lib/lutaml/model/version.rb +1 -1
- data/lib/lutaml/model/xml_adapter/nokogiri_adapter.rb +4 -2
- data/lib/lutaml/model/xml_adapter/ox_adapter.rb +6 -4
- data/lib/lutaml/model/xml_adapter/xml_document.rb +1 -0
- data/lib/lutaml/model/xml_mapping.rb +6 -6
- 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: c1c49d91f74f3454b6a0e2aaf34bfef142630fa77e98a509535b53b156f603e7
|
4
|
+
data.tar.gz: 12880e7b701bf68c2a77efad6148daeac040a1956f1f1e1a0d790657c79f346c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '08020dbbadaea322601ce9c0536cf3a49aeaa44679d8caf278995d0f7b1c41ba12761897db7f54390bb1288c84ccedc6a0a45bee980926fecca18927a17c8de7'
|
7
|
+
data.tar.gz: 363806235f0d4308f127d84590d1b2d2bf2af5adafd27974fa6a8600f5e67afac6efc27f3ee810eea95265d6764b6f4538672f18c5c9a3e243c31f236595fe21
|
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-16 03:28:27 UTC using RuboCop version 1.65.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: 32
|
18
18
|
# This cop supports safe autocorrection (--autocorrect).
|
19
19
|
# Configuration parameters: Max, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, AllowedPatterns.
|
20
20
|
# URISchemes: http, https
|
@@ -26,6 +26,7 @@ Layout/LineLength:
|
|
26
26
|
- 'lib/lutaml/model/xml_adapter/ox_adapter.rb'
|
27
27
|
- 'lib/lutaml/model/xml_adapter/xml_document.rb'
|
28
28
|
- 'spec/lutaml/model/delegation_spec.rb'
|
29
|
+
- 'spec/lutaml/model/serializable_spec.rb'
|
29
30
|
|
30
31
|
# Offense count: 20
|
31
32
|
# Configuration parameters: AllowedMethods, AllowedPatterns, CountRepeatedAttributes, Max.
|
@@ -82,7 +83,7 @@ RSpec/ContextWording:
|
|
82
83
|
- 'spec/lutaml/model/xml_adapter/oga_adapter_spec.rb'
|
83
84
|
- 'spec/lutaml/model/xml_adapter/ox_adapter_spec.rb'
|
84
85
|
|
85
|
-
# Offense count:
|
86
|
+
# Offense count: 64
|
86
87
|
# Configuration parameters: CountAsOne.
|
87
88
|
RSpec/ExampleLength:
|
88
89
|
Max: 35
|
data/README.adoc
CHANGED
@@ -401,6 +401,42 @@ end
|
|
401
401
|
----
|
402
402
|
====
|
403
403
|
|
404
|
+
If an element is mapped to a model object with the XML `root` tag name set, the
|
405
|
+
mapped tag name will be used as the root name, overriding the root name.
|
406
|
+
|
407
|
+
.The mapped tag name is used as the root name
|
408
|
+
[example]
|
409
|
+
====
|
410
|
+
[source,ruby]
|
411
|
+
----
|
412
|
+
class RecordDate < Lutaml::Model::Serializable
|
413
|
+
attribute :content, :string
|
414
|
+
|
415
|
+
xml do
|
416
|
+
root "recordDate"
|
417
|
+
map_content to: :content
|
418
|
+
end
|
419
|
+
end
|
420
|
+
|
421
|
+
class OriginInfo < Lutaml::Model::Serializable
|
422
|
+
attribute :date_issued, RecordDate, collection: true
|
423
|
+
|
424
|
+
xml do
|
425
|
+
root "originInfo"
|
426
|
+
map_element "dateIssued", to: :date_issued
|
427
|
+
end
|
428
|
+
end
|
429
|
+
----
|
430
|
+
|
431
|
+
[source,ruby]
|
432
|
+
----
|
433
|
+
> RecordDate.new(date: "2021-01-01").to_xml
|
434
|
+
> #<recordDate>2021-01-01</recordDate>
|
435
|
+
> OriginInfo.new(date_issued: [RecordDate.new(date: "2021-01-01")]).to_xml
|
436
|
+
> #<originInfo><dateIssued>2021-01-01</dateIssued></originInfo>
|
437
|
+
----
|
438
|
+
====
|
439
|
+
|
404
440
|
==== Mapping attributes
|
405
441
|
|
406
442
|
The `map_attribute` method maps an XML attribute to a data model attribute.
|
data/lib/lutaml/model/version.rb
CHANGED
@@ -48,7 +48,8 @@ module Lutaml
|
|
48
48
|
xml
|
49
49
|
end
|
50
50
|
|
51
|
-
|
51
|
+
tag_name = options[:tag_name] || xml_mapping.root_element
|
52
|
+
prefixed_xml.public_send(tag_name, attributes) do
|
52
53
|
if options.key?(:namespace_prefix) && !options[:namespace_prefix]
|
53
54
|
xml.parent.namespace = nil
|
54
55
|
end
|
@@ -94,7 +95,8 @@ module Lutaml
|
|
94
95
|
xml
|
95
96
|
end
|
96
97
|
|
97
|
-
|
98
|
+
tag_name = options[:tag_name] || xml_mapping.root_element
|
99
|
+
prefixed_xml.public_send(tag_name, attributes) do
|
98
100
|
if options.key?(:namespace_prefix) && !options[:namespace_prefix]
|
99
101
|
xml.parent.namespace = nil
|
100
102
|
end
|
@@ -36,12 +36,13 @@ module Lutaml
|
|
36
36
|
|
37
37
|
attributes = build_attributes(element, xml_mapping).compact
|
38
38
|
|
39
|
+
tag_name = options[:tag_name] || xml_mapping.root_element
|
39
40
|
prefixed_name = if options.key?(:namespace_prefix)
|
40
|
-
[options[:namespace_prefix],
|
41
|
+
[options[:namespace_prefix], tag_name].compact.join(":")
|
41
42
|
elsif xml_mapping.namespace_prefix
|
42
|
-
"#{xml_mapping.namespace_prefix}:#{
|
43
|
+
"#{xml_mapping.namespace_prefix}:#{tag_name}"
|
43
44
|
else
|
44
|
-
|
45
|
+
tag_name
|
45
46
|
end
|
46
47
|
|
47
48
|
builder.element(prefixed_name, attributes) do |el|
|
@@ -84,7 +85,8 @@ module Lutaml
|
|
84
85
|
|
85
86
|
attributes = build_attributes(element, xml_mapping).compact
|
86
87
|
|
87
|
-
|
88
|
+
tag_name = options[:tag_name] || xml_mapping.root_element
|
89
|
+
builder.element(tag_name, attributes) do |el|
|
88
90
|
index_hash = {}
|
89
91
|
|
90
92
|
element.element_order.each do |name|
|
@@ -9,8 +9,8 @@ module Lutaml
|
|
9
9
|
:mixed_content
|
10
10
|
|
11
11
|
def initialize
|
12
|
-
@elements =
|
13
|
-
@attributes =
|
12
|
+
@elements = {}
|
13
|
+
@attributes = {}
|
14
14
|
@content_mapping = nil
|
15
15
|
@mixed_content = false
|
16
16
|
end
|
@@ -47,7 +47,7 @@ module Lutaml
|
|
47
47
|
prefix: nil,
|
48
48
|
mixed: false
|
49
49
|
)
|
50
|
-
@elements
|
50
|
+
@elements[name] = XmlMappingRule.new(
|
51
51
|
name,
|
52
52
|
to: to,
|
53
53
|
render_nil: render_nil,
|
@@ -70,7 +70,7 @@ module Lutaml
|
|
70
70
|
nil),
|
71
71
|
prefix: nil
|
72
72
|
)
|
73
|
-
@attributes
|
73
|
+
@attributes[name] = XmlMappingRule.new(
|
74
74
|
name,
|
75
75
|
to: to,
|
76
76
|
render_nil: render_nil,
|
@@ -102,11 +102,11 @@ module Lutaml
|
|
102
102
|
end
|
103
103
|
|
104
104
|
def elements
|
105
|
-
@elements
|
105
|
+
@elements.values
|
106
106
|
end
|
107
107
|
|
108
108
|
def attributes
|
109
|
-
@attributes
|
109
|
+
@attributes.values
|
110
110
|
end
|
111
111
|
|
112
112
|
def content_mapping
|
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.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-08-
|
11
|
+
date: 2024-08-16 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: 'LutaML creating data models in Ruby
|
14
14
|
|