lutaml-model 0.8.129 → 0.8.131
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/docs/key_value_data_model.adoc +9 -9
- data/lib/lutaml/json/adapter/multi_json_adapter.rb +1 -7
- data/lib/lutaml/json/adapter/oj_adapter.rb +1 -7
- data/lib/lutaml/json/adapter/standard_adapter.rb +1 -7
- data/lib/lutaml/key_value/adapter/json/multi_json_adapter.rb +1 -7
- data/lib/lutaml/key_value/adapter/json/oj_adapter.rb +1 -7
- data/lib/lutaml/key_value/adapter/json/standard_adapter.rb +1 -7
- data/lib/lutaml/key_value/adapter/toml/teptris_adapter.rb +1 -7
- data/lib/lutaml/key_value/adapter/toml/toml_rb_adapter.rb +1 -7
- data/lib/lutaml/key_value/adapter/toml/tomlib_adapter.rb +1 -7
- data/lib/lutaml/key_value/adapter/yaml/standard_adapter.rb +1 -7
- data/lib/lutaml/key_value/data_model/element.rb +31 -32
- data/lib/lutaml/key_value/mapping_rule.rb +4 -4
- data/lib/lutaml/key_value/transform.rb +6 -5
- data/lib/lutaml/key_value/transformation.rb +21 -18
- data/lib/lutaml/model/attribute.rb +23 -1
- data/lib/lutaml/model/collection.rb +1 -5
- data/lib/lutaml/model/mapping/mapping_rule.rb +21 -2
- data/lib/lutaml/model/schema/xml_compiler/spec_builder/complex_types.rb +9 -4
- data/lib/lutaml/model/schema/xml_compiler/spec_builder/members.rb +15 -8
- data/lib/lutaml/model/schema/xml_compiler/spec_builder.rb +2 -2
- data/lib/lutaml/model/schema/xml_compiler/supported_data_types.rb +10 -0
- data/lib/lutaml/model/serialize/attribute_definition.rb +133 -2
- data/lib/lutaml/model/serialize/initialization.rb +12 -0
- data/lib/lutaml/model/serialize.rb +30 -10
- data/lib/lutaml/model/version.rb +1 -1
- data/lib/lutaml/toml/adapter/toml_rb_adapter.rb +1 -7
- data/lib/lutaml/toml/adapter/tomlib_adapter.rb +1 -7
- data/lib/lutaml/xml/builder/base.rb +3 -1
- data/lib/lutaml/xml/transformation/rule_compiler.rb +2 -2
- data/lib/lutaml/yaml/adapter/standard_adapter.rb +1 -7
- data/lib/lutaml/yaml/adapter/yeptris_adapter.rb +1 -7
- data/lib/lutaml/yamlld/adapter.rb +1 -6
- data/spec/lutaml/key_value/adapter/toml/teptris_adapter_spec.rb +3 -3
- data/spec/lutaml/key_value/group_instantiate_spec.rb +8 -0
- data/spec/lutaml/key_value/transformation_spec.rb +50 -50
- data/spec/lutaml/model/collection_spec.rb +43 -0
- data/spec/lutaml/model/schema/xml_compiler_runtime_spec.rb +81 -0
- metadata +2 -2
|
@@ -49,4 +49,85 @@ RSpec.describe "runtime XSD class loading" do
|
|
|
49
49
|
expect(doc.to_xml).to include('id="e1"')
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
|
+
|
|
53
|
+
# Anonymous (inline) complexTypes get CT_-prefixed internal names;
|
|
54
|
+
# the generated classes must still (a) map skippable XSD built-ins
|
|
55
|
+
# like xs:int to Lutaml primitives and (b) serialize the owning
|
|
56
|
+
# element name, not the internal alias (#1014).
|
|
57
|
+
describe "inline anonymous complexTypes" do
|
|
58
|
+
let(:catalogue_xsd) do
|
|
59
|
+
<<~XSD
|
|
60
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
61
|
+
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
|
62
|
+
elementFormDefault="qualified">
|
|
63
|
+
<xs:element name="catalogue">
|
|
64
|
+
<xs:complexType>
|
|
65
|
+
<xs:sequence>
|
|
66
|
+
<xs:element name="title" type="xs:string"/>
|
|
67
|
+
<xs:element name="entry" maxOccurs="unbounded">
|
|
68
|
+
<xs:complexType>
|
|
69
|
+
<xs:sequence>
|
|
70
|
+
<xs:element name="name" type="xs:string"/>
|
|
71
|
+
<xs:element name="year" type="xs:int"/>
|
|
72
|
+
</xs:sequence>
|
|
73
|
+
<xs:attribute name="id" type="xs:string" use="required"/>
|
|
74
|
+
</xs:complexType>
|
|
75
|
+
</xs:element>
|
|
76
|
+
</xs:sequence>
|
|
77
|
+
</xs:complexType>
|
|
78
|
+
</xs:element>
|
|
79
|
+
</xs:schema>
|
|
80
|
+
XSD
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
let(:catalogue_xml) do
|
|
84
|
+
<<~XML
|
|
85
|
+
<catalogue>
|
|
86
|
+
<title>Test</title>
|
|
87
|
+
<entry id="e1"><name>Alpha</name><year>2024</year></entry>
|
|
88
|
+
<entry id="e2"><name>Beta</name><year>2025</year></entry>
|
|
89
|
+
</catalogue>
|
|
90
|
+
XML
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it "maps xs:int to :integer and parses the instance" do
|
|
94
|
+
Dir.mktmpdir do |dir|
|
|
95
|
+
Lutaml::Model::Schema.from_xml(
|
|
96
|
+
catalogue_xsd, output_dir: File.join(dir, "anon_ct_models"),
|
|
97
|
+
load_classes: true
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
entry_class = AnonCtModels::CTEntry
|
|
101
|
+
expect(entry_class.attributes[:year].type).to eq(
|
|
102
|
+
Lutaml::Model::Type::Integer,
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
doc = AnonCtModels::CTCatalogue.from_xml(catalogue_xml)
|
|
106
|
+
|
|
107
|
+
expect(doc.title).to eq("Test")
|
|
108
|
+
expect(doc.entry.map(&:name)).to eq(["Alpha", "Beta"])
|
|
109
|
+
expect(doc.entry.map(&:year)).to eq([2024, 2025])
|
|
110
|
+
expect(doc.entry.map(&:id)).to eq(%w[e1 e2])
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
it "serializes the owning element name, not the CT_ alias" do
|
|
115
|
+
Dir.mktmpdir do |dir|
|
|
116
|
+
Lutaml::Model::Schema.from_xml(
|
|
117
|
+
catalogue_xsd, output_dir: File.join(dir, "anon_ct_models2"),
|
|
118
|
+
load_classes: true
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
entry = AnonCtModels2::CTEntry.from_xml(
|
|
122
|
+
'<entry id="z9"><name>Gamma</name><year>1999</year></entry>',
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
expect(entry.name).to eq("Gamma")
|
|
126
|
+
expect(entry.year).to eq(1999)
|
|
127
|
+
expect(entry.id).to eq("z9")
|
|
128
|
+
expect(entry.to_xml).to include('<entry id="z9">')
|
|
129
|
+
expect(entry.to_xml).not_to include("CT_entry")
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
52
133
|
end
|
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.8.
|
|
4
|
+
version: 0.8.131
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ribose Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-10-
|
|
11
|
+
date: 2026-10-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: base64
|