lutaml-model 0.8.22 → 0.8.24

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.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/performance.yml +1 -1
  3. data/Gemfile +6 -0
  4. data/README.adoc +16 -7
  5. data/docs/_guides/index.adoc +4 -0
  6. data/docs/_guides/native-engines.adoc +61 -0
  7. data/docs/_guides/xml-mapping.adoc +31 -0
  8. data/docs/_pages/configuration.adoc +11 -7
  9. data/docs/_pages/serialization_adapters.adoc +14 -5
  10. data/lib/compat/opal/lutaml_model_boot.rb +2 -0
  11. data/lib/lutaml/json/adapter/multi_json_adapter.rb +12 -1
  12. data/lib/lutaml/json/adapter/oj_adapter.rb +7 -0
  13. data/lib/lutaml/json/adapter/standard_adapter.rb +17 -5
  14. data/lib/lutaml/json/adapter/yeptris_adapter.rb +21 -0
  15. data/lib/lutaml/json/adapter.rb +1 -0
  16. data/lib/lutaml/json/format.rb +1 -1
  17. data/lib/lutaml/json/generator_options.rb +62 -0
  18. data/lib/lutaml/jsonl/adapter/standard_adapter.rb +1 -1
  19. data/lib/lutaml/jsonld/adapter.rb +12 -4
  20. data/lib/lutaml/key_value/adapter/json/multi_json_adapter.rb +16 -1
  21. data/lib/lutaml/key_value/adapter/json/oj_adapter.rb +7 -0
  22. data/lib/lutaml/key_value/adapter/json/standard_adapter.rb +17 -5
  23. data/lib/lutaml/key_value/adapter/json/yeptris_adapter.rb +15 -0
  24. data/lib/lutaml/key_value/adapter/jsonl/standard_adapter.rb +1 -1
  25. data/lib/lutaml/key_value/adapter/toml/teptris_adapter.rb +42 -0
  26. data/lib/lutaml/key_value/adapter/toml.rb +1 -0
  27. data/lib/lutaml/key_value/adapter/yaml/yeptris_adapter.rb +15 -0
  28. data/lib/lutaml/key_value/transform.rb +82 -0
  29. data/lib/lutaml/key_value/transformation/value_serializer.rb +25 -0
  30. data/lib/lutaml/key_value/transformation.rb +25 -1
  31. data/lib/lutaml/model/adapter_resolver.rb +23 -6
  32. data/lib/lutaml/model/attribute.rb +31 -6
  33. data/lib/lutaml/model/collection.rb +5 -0
  34. data/lib/lutaml/model/configuration.rb +5 -0
  35. data/lib/lutaml/model/error/unknown_adapter_type_error.rb +4 -4
  36. data/lib/lutaml/model/serialization_adapter.rb +1 -1
  37. data/lib/lutaml/model/serialize/format_conversion.rb +75 -7
  38. data/lib/lutaml/model/serialize.rb +18 -0
  39. data/lib/lutaml/model/toml.rb +10 -6
  40. data/lib/lutaml/model/transformation.rb +5 -0
  41. data/lib/lutaml/model/type/date_time.rb +2 -2
  42. data/lib/lutaml/model/type/value.rb +24 -2
  43. data/lib/lutaml/model/utils.rb +6 -5
  44. data/lib/lutaml/model/version.rb +1 -1
  45. data/lib/lutaml/toml/adapter/teptris_adapter.rb +14 -0
  46. data/lib/lutaml/toml/adapter.rb +1 -0
  47. data/lib/lutaml/toml/format.rb +1 -1
  48. data/lib/lutaml/xml/adapter/leptris_adapter.rb +15 -0
  49. data/lib/lutaml/xml/adapter_element.rb +111 -3
  50. data/lib/lutaml/xml/builder/base.rb +3 -1
  51. data/lib/lutaml/xml/builder/leptris.rb +13 -0
  52. data/lib/lutaml/xml/builder/nokogiri.rb +3 -0
  53. data/lib/lutaml/xml/builder.rb +1 -0
  54. data/lib/lutaml/xml/format.rb +4 -1
  55. data/lib/lutaml/xml/leptris/element.rb +34 -0
  56. data/lib/lutaml/xml/mapping.rb +24 -0
  57. data/lib/lutaml/xml/model_transform.rb +52 -1
  58. data/lib/lutaml/xml/plan_compiler.rb +139 -0
  59. data/lib/lutaml/xml/plan_hydrator.rb +80 -0
  60. data/lib/lutaml/xml/transformation/custom_method_wrapper.rb +8 -0
  61. data/lib/lutaml/xml/transformation.rb +29 -0
  62. data/lib/lutaml/xml/xml_element.rb +6 -2
  63. data/lib/lutaml/yaml/adapter/yeptris_adapter.rb +40 -0
  64. data/lib/lutaml/yaml/adapter.rb +5 -0
  65. data/lib/lutaml/yaml/format.rb +1 -1
  66. data/lib/tasks/performance.rake +5 -0
  67. data/lib/tasks/performance_comparator.rb +19 -3
  68. data/lib/tasks/performance_probe.rake +33 -0
  69. data/lib/tasks/performance_probe.rb +106 -0
  70. data/lib/tasks/performance_probe_xml.rb +54 -0
  71. data/lutaml-model.gemspec +1 -1
  72. data/spec/lutaml/json/adapter/standard_adapter_spec.rb +159 -0
  73. data/spec/lutaml/json/yeptris_adapter_spec.rb +63 -0
  74. data/spec/lutaml/jsonld/adapter_spec.rb +19 -0
  75. data/spec/lutaml/key_value/adapter/toml/teptris_adapter_spec.rb +71 -0
  76. data/spec/lutaml/model/collection_spec.rb +1 -1
  77. data/spec/lutaml/model/collection_state_nesting_spec.rb +44 -0
  78. data/spec/lutaml/model/generator_defaults_spec.rb +101 -0
  79. data/spec/lutaml/model/json_adapter_spec.rb +6 -0
  80. data/spec/lutaml/model/json_state_nesting_spec.rb +82 -0
  81. data/spec/lutaml/model/toml_adapter_spec.rb +8 -0
  82. data/spec/lutaml/model/toml_spec.rb +36 -1
  83. data/spec/lutaml/xml/plan_fast_path_spec.rb +96 -0
  84. data/spec/lutaml/xml/shared_element_rules_spec.rb +64 -0
  85. data/spec/lutaml/xml/xml_spec.rb +13 -0
  86. data/spec/lutaml/yaml/yeptris_adapter_spec.rb +63 -0
  87. data/spec/spec_helper.rb +7 -1
  88. metadata +29 -4
@@ -0,0 +1,96 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ RSpec.describe "XML plan fast path" do
6
+ let(:classes) do
7
+ item_class = Class.new(Lutaml::Model::Serializable) do
8
+ attribute :id, :integer
9
+ attribute :name, :string
10
+ attribute :tags, :string, collection: true
11
+
12
+ xml do
13
+ element "item"
14
+ map_attribute "id", to: :id
15
+ map_element "name", to: :name
16
+ map_element "tag", to: :tags
17
+ end
18
+ end
19
+ root_class = Class.new(Lutaml::Model::Serializable) do
20
+ attribute :item, item_class, collection: true
21
+
22
+ xml do
23
+ element "root"
24
+ map_element "item", to: :item
25
+ end
26
+ end
27
+ [item_class, root_class]
28
+ end
29
+
30
+ let(:item_class) { classes[0] }
31
+ let(:root_class) { classes[1] }
32
+
33
+ around do |example|
34
+ old = Lutaml::Model::Config.instance.xml_plan_fast_path
35
+ Lutaml::Model::Config.instance.xml_plan_fast_path = true
36
+ example.run
37
+ ensure
38
+ Lutaml::Model::Config.instance.xml_plan_fast_path = old
39
+ end
40
+
41
+ it "is opt-in and off by default" do
42
+ expect(Lutaml::Model::Configuration.new.xml_plan_fast_path).to be(false)
43
+ end
44
+
45
+ it "hydrates equal to the interpretive path" do
46
+ xml = root_class.new(item: [
47
+ item_class.new(id: 1, name: "a", tags: %w[x y]),
48
+ item_class.new(id: 2, name: "b", tags: %w[z]),
49
+ ]).to_xml
50
+
51
+ expect(root_class.from_xml(xml).item).to eq(root_class.new(item: [
52
+ item_class.new(id: 1, name: "a", tags: %w[x y]),
53
+ item_class.new(id: 2, name: "b", tags: %w[z]),
54
+ ]).item)
55
+ end
56
+
57
+ it "matches the interpretive path on missing elements" do
58
+ xml = <<~XML
59
+ <root>
60
+ <item id="1"><name>A</name><tag>x</tag></item>
61
+ <item id="2"><tag>y</tag><tag>z</tag></item>
62
+ <item id="3"><name>C</name></item>
63
+ </root>
64
+ XML
65
+
66
+ parsed = root_class.from_xml(xml)
67
+ expect(parsed.item.map { |i| [i.id, i.name, i.tags] })
68
+ .to eq([[1, "A", %w[x]], [2, nil, %w[y z]], [3, "C", []]])
69
+ end
70
+
71
+ it "wraps engine parse errors as InvalidFormatError" do
72
+ Lutaml::Model::Config.with_adapter(xml: :leptris) do
73
+ expect { root_class.from_xml("<root><item>") }
74
+ .to raise_error(Lutaml::Model::InvalidFormatError)
75
+ end
76
+ end
77
+
78
+ it "falls back for non-compilable models" do
79
+ klass = Class.new(Lutaml::Model::Serializable) do
80
+ attribute :note, :string
81
+
82
+ xml do
83
+ element "doc"
84
+ map_element "note", to: :note, with: { from: :note_from }
85
+ end
86
+
87
+ def note_from(instance, value)
88
+ instance.note = value.text
89
+ end
90
+ end
91
+
92
+ expect(Lutaml::Xml::PlanCompiler.compile(klass,
93
+ Lutaml::Model::Config.default_register)).to be_nil
94
+ expect(klass.from_xml("<doc><note>hi</note></doc>").note).to eq("hi")
95
+ end
96
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+
5
+ # lutaml-model#765: two element rules mapped to one collection attribute
6
+ # (spelling tolerance, e.g. metanorma's editorial-group/editorialgroup).
7
+ # Parse must merge the spellings' content in document order — never drop
8
+ # the first silently — and serialization must emit the value once, under
9
+ # the first declared spelling.
10
+ module SharedElementRulesSpec
11
+ class Both < Lutaml::Model::Serializable
12
+ attribute :items, :string, collection: true
13
+
14
+ xml do
15
+ root "r"
16
+ map_element "a", to: :items
17
+ map_element "b", to: :items
18
+ end
19
+ end
20
+ end
21
+
22
+ RSpec.describe "multiple element rules on one attribute" do
23
+ it "appends both spellings in document order" do
24
+ expect(SharedElementRulesSpec::Both.from_xml("<r><a>one</a><b>two</b></r>").items)
25
+ .to eq(["one", "two"])
26
+ end
27
+
28
+ it "appends in document order when the second spelling comes first" do
29
+ expect(SharedElementRulesSpec::Both.from_xml("<r><b>two</b><a>one</a></r>").items)
30
+ .to eq(["two", "one"])
31
+ end
32
+
33
+ it "keeps document order across interleaved spellings" do
34
+ xml = "<r><a>1</a><b>2</b><a>3</a><b>4</b></r>"
35
+ expect(SharedElementRulesSpec::Both.from_xml(xml).items).to eq(%w[1 2 3 4])
36
+ end
37
+
38
+ it "parses a document that only uses the first spelling" do
39
+ expect(SharedElementRulesSpec::Both.from_xml("<r><a>one</a></r>").items)
40
+ .to eq(["one"])
41
+ end
42
+
43
+ it "parses a document that only uses the second spelling" do
44
+ expect(SharedElementRulesSpec::Both.from_xml("<r><b>two</b></r>").items)
45
+ .to eq(["two"])
46
+ end
47
+
48
+ it "serializes the value once, under the first declared spelling" do
49
+ xml = SharedElementRulesSpec::Both.new(items: %w[one two]).to_xml
50
+ expect(xml.scan(/<(a|b)>/).flatten).to eq(%w[a a])
51
+ expect(xml).to include("<a>one</a>").and include("<a>two</a>")
52
+ end
53
+
54
+ it "round-trips through both spellings without losing content" do
55
+ doc = SharedElementRulesSpec::Both.from_xml("<r><a>one</a><b>two</b></r>")
56
+ reparsed = SharedElementRulesSpec::Both.from_xml(doc.to_xml)
57
+ expect(reparsed.items).to eq(%w[one two])
58
+ end
59
+
60
+ it "keeps the mapping usable when the attribute also has a default" do
61
+ both = SharedElementRulesSpec::Both.from_xml("<r/>")
62
+ expect(both.items).to eq([])
63
+ end
64
+ end
@@ -120,6 +120,19 @@ RSpec.describe Lutaml::Xml do
120
120
  hide_const("Ox") if Object.const_defined?(:Ox)
121
121
  hide_const("Oga") if Object.const_defined?(:Oga)
122
122
  hide_const("REXML") if Object.const_defined?(:REXML)
123
+ # When the leptris gem is in the bundle, moxml prefers it over every
124
+ # other engine; the legacy-detection contexts below must opt out to
125
+ # exercise the fallback chain.
126
+ allow(Moxml::Config).to receive(:leptris_preferred_available?)
127
+ .and_return(false)
128
+ end
129
+
130
+ context "when the leptris engine is in the bundle" do
131
+ it "prefers :leptris" do
132
+ allow(Moxml::Config).to receive(:leptris_preferred_available?)
133
+ .and_return(true)
134
+ expect(described_class.detect_xml_adapter).to eq(:leptris)
135
+ end
123
136
  end
124
137
 
125
138
  context "when Nokogiri is available" do
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
4
+ begin
5
+ require "lutaml/yaml/adapter/yeptris_adapter"
6
+ rescue LoadError
7
+ # yeptris ships no platform gem here (e.g. Windows): every example skips.
8
+ end
9
+
10
+ YEPTRIS_AVAILABLE = defined?(Yeptris)
11
+
12
+ RSpec.describe(YEPTRIS_AVAILABLE ? Lutaml::Yaml::Adapter::YeptrisAdapter : Object) do
13
+ before { skip "yeptris is not available on this platform" unless YEPTRIS_AVAILABLE }
14
+
15
+ let(:attributes) { { "name" => "John", "roles" => %w[admin dev] } }
16
+
17
+ describe ".parse" do
18
+ it "parses a YAML document into a hash" do
19
+ expect(described_class.parse("name: John\nroles:\n - admin\n - dev\n"))
20
+ .to eq(attributes)
21
+ end
22
+
23
+ it "round-trips nested structures" do
24
+ yaml = described_class.parse("outer:\n inner: 1\n")
25
+ expect(yaml).to eq("outer" => { "inner" => 1 })
26
+ end
27
+
28
+ it "supports the same permitted classes as the standard adapter" do
29
+ require "date"
30
+ expect(described_class.parse("d: 2020-01-01\n"))
31
+ .to eq("d" => Date.new(2020, 1, 1))
32
+ end
33
+ end
34
+
35
+ describe "#to_yaml" do
36
+ subject(:document) { described_class.new(attributes) }
37
+
38
+ it "serializes a hash to YAML that parses back identically" do
39
+ expect(described_class.parse(document.to_yaml)).to eq(attributes)
40
+ end
41
+ end
42
+
43
+ describe "round trip through a model" do
44
+ let(:model_class) do
45
+ Class.new(Lutaml::Model::Serializable) do
46
+ attribute :name, :string
47
+ attribute :roles, :string, collection: true
48
+
49
+ key_value do
50
+ map "name", to: :name
51
+ map "roles", to: :roles
52
+ end
53
+ end
54
+ end
55
+
56
+ it "deserializes and serializes via the yeptris engine" do
57
+ model = model_class.from_yaml("name: John\nroles:\n - admin\n - dev\n")
58
+ expect(model.name).to eq("John")
59
+ expect(model.roles).to eq(%w[admin dev])
60
+ expect(model_class.from_yaml(model.to_yaml).roles).to eq(%w[admin dev])
61
+ end
62
+ end
63
+ end
data/spec/spec_helper.rb CHANGED
@@ -99,7 +99,13 @@ require_relative "support/test_adapter_config"
99
99
  # require_relative "../lib/lutaml/model/toml_adapter/toml_rb_adapter"
100
100
 
101
101
  Lutaml::Model::Config.configure do |config|
102
- config.xml_adapter_type = RUBY_ENGINE == "opal" ? :oga : :nokogiri
102
+ config.xml_adapter_type = if RUBY_ENGINE == "opal"
103
+ :oga
104
+ elsif ENV["XML_ADAPTER"]
105
+ ENV["XML_ADAPTER"].to_sym
106
+ else
107
+ :nokogiri
108
+ end
103
109
  config.hash_adapter_type = :standard
104
110
  config.json_adapter_type = :standard
105
111
  config.yaml_adapter_type = :standard
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.22
4
+ version: 0.8.24
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-08-29 00:00:00.000000000 Z
11
+ date: 2026-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: base64
@@ -92,14 +92,14 @@ dependencies:
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: 0.5.0
95
+ version: 0.5.34
96
96
  type: :runtime
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: 0.5.0
102
+ version: 0.5.34
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: ostruct
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -208,6 +208,7 @@ files:
208
208
  - docs/_guides/keyvalue-serialization.adoc
209
209
  - docs/_guides/liquid-templates.adoc
210
210
  - docs/_guides/missing-values-handling.adoc
211
+ - docs/_guides/native-engines.adoc
211
212
  - docs/_guides/ooxml-examples.adoc
212
213
  - docs/_guides/opal.adoc
213
214
  - docs/_guides/rdf-serialization.adoc
@@ -320,7 +321,9 @@ files:
320
321
  - lib/lutaml/json/adapter/oj_adapter.rb
321
322
  - lib/lutaml/json/adapter/standard_adapter.rb
322
323
  - lib/lutaml/json/adapter/transform.rb
324
+ - lib/lutaml/json/adapter/yeptris_adapter.rb
323
325
  - lib/lutaml/json/format.rb
326
+ - lib/lutaml/json/generator_options.rb
324
327
  - lib/lutaml/json/schema.rb
325
328
  - lib/lutaml/json/schema/json_schema.rb
326
329
  - lib/lutaml/json/type/serializers.rb
@@ -350,6 +353,7 @@ files:
350
353
  - lib/lutaml/key_value/adapter/json/oj_adapter.rb
351
354
  - lib/lutaml/key_value/adapter/json/standard_adapter.rb
352
355
  - lib/lutaml/key_value/adapter/json/transform.rb
356
+ - lib/lutaml/key_value/adapter/json/yeptris_adapter.rb
353
357
  - lib/lutaml/key_value/adapter/jsonl.rb
354
358
  - lib/lutaml/key_value/adapter/jsonl/document.rb
355
359
  - lib/lutaml/key_value/adapter/jsonl/mapping.rb
@@ -360,6 +364,7 @@ files:
360
364
  - lib/lutaml/key_value/adapter/toml/document.rb
361
365
  - lib/lutaml/key_value/adapter/toml/mapping.rb
362
366
  - lib/lutaml/key_value/adapter/toml/mapping_rule.rb
367
+ - lib/lutaml/key_value/adapter/toml/teptris_adapter.rb
363
368
  - lib/lutaml/key_value/adapter/toml/toml_rb_adapter.rb
364
369
  - lib/lutaml/key_value/adapter/toml/tomlib_adapter.rb
365
370
  - lib/lutaml/key_value/adapter/toml/transform.rb
@@ -369,6 +374,7 @@ files:
369
374
  - lib/lutaml/key_value/adapter/yaml/mapping_rule.rb
370
375
  - lib/lutaml/key_value/adapter/yaml/standard_adapter.rb
371
376
  - lib/lutaml/key_value/adapter/yaml/transform.rb
377
+ - lib/lutaml/key_value/adapter/yaml/yeptris_adapter.rb
372
378
  - lib/lutaml/key_value/adapter/yamls.rb
373
379
  - lib/lutaml/key_value/adapter/yamls/document.rb
374
380
  - lib/lutaml/key_value/adapter/yamls/mapping.rb
@@ -677,6 +683,7 @@ files:
677
683
  - lib/lutaml/toml/adapter/document.rb
678
684
  - lib/lutaml/toml/adapter/mapping.rb
679
685
  - lib/lutaml/toml/adapter/mapping_rule.rb
686
+ - lib/lutaml/toml/adapter/teptris_adapter.rb
680
687
  - lib/lutaml/toml/adapter/toml_rb_adapter.rb
681
688
  - lib/lutaml/toml/adapter/tomlib_adapter.rb
682
689
  - lib/lutaml/toml/adapter/transform.rb
@@ -690,6 +697,7 @@ files:
690
697
  - lib/lutaml/xml/adapter.rb
691
698
  - lib/lutaml/xml/adapter/adapter_helpers.rb
692
699
  - lib/lutaml/xml/adapter/base_adapter.rb
700
+ - lib/lutaml/xml/adapter/leptris_adapter.rb
693
701
  - lib/lutaml/xml/adapter/namespace_data.rb
694
702
  - lib/lutaml/xml/adapter/namespace_uri_collector.rb
695
703
  - lib/lutaml/xml/adapter/nokogiri_adapter.rb
@@ -706,6 +714,7 @@ files:
706
714
  - lib/lutaml/xml/blank_namespace_handler.rb
707
715
  - lib/lutaml/xml/builder.rb
708
716
  - lib/lutaml/xml/builder/base.rb
717
+ - lib/lutaml/xml/builder/leptris.rb
709
718
  - lib/lutaml/xml/builder/nokogiri.rb
710
719
  - lib/lutaml/xml/builder/oga.rb
711
720
  - lib/lutaml/xml/builder/ox.rb
@@ -752,6 +761,7 @@ files:
752
761
  - lib/lutaml/xml/format.rb
753
762
  - lib/lutaml/xml/format_chooser.rb
754
763
  - lib/lutaml/xml/hoisting_algorithm.rb
764
+ - lib/lutaml/xml/leptris/element.rb
755
765
  - lib/lutaml/xml/listener.rb
756
766
  - lib/lutaml/xml/mapping.rb
757
767
  - lib/lutaml/xml/mapping_rule.rb
@@ -779,6 +789,8 @@ files:
779
789
  - lib/lutaml/xml/parse_session.rb
780
790
  - lib/lutaml/xml/parsed_namespace_declaration.rb
781
791
  - lib/lutaml/xml/parsed_namespace_set.rb
792
+ - lib/lutaml/xml/plan_compiler.rb
793
+ - lib/lutaml/xml/plan_hydrator.rb
782
794
  - lib/lutaml/xml/polymorphic_value_handler.rb
783
795
  - lib/lutaml/xml/qualified_inheritance_strategy.rb
784
796
  - lib/lutaml/xml/rexml.rb
@@ -903,6 +915,7 @@ files:
903
915
  - lib/lutaml/yaml/adapter/mapping_rule.rb
904
916
  - lib/lutaml/yaml/adapter/standard_adapter.rb
905
917
  - lib/lutaml/yaml/adapter/transform.rb
918
+ - lib/lutaml/yaml/adapter/yeptris_adapter.rb
906
919
  - lib/lutaml/yaml/format.rb
907
920
  - lib/lutaml/yaml/schema.rb
908
921
  - lib/lutaml/yaml/schema/yaml_schema.rb
@@ -925,6 +938,9 @@ files:
925
938
  - lib/tasks/performance_benchmark.rb
926
939
  - lib/tasks/performance_comparator.rb
927
940
  - lib/tasks/performance_helpers.rb
941
+ - lib/tasks/performance_probe.rake
942
+ - lib/tasks/performance_probe.rb
943
+ - lib/tasks/performance_probe_xml.rb
928
944
  - lib/tasks/xml_compiler_benchmark.rb
929
945
  - lib/tasks/xml_optimization_benchmark.rb
930
946
  - lutaml-model.gemspec
@@ -1638,7 +1654,10 @@ files:
1638
1654
  - spec/lutaml/integration/edge_cases_spec.rb
1639
1655
  - spec/lutaml/integration/multi_format_spec.rb
1640
1656
  - spec/lutaml/integration/round_trip_spec.rb
1657
+ - spec/lutaml/json/adapter/standard_adapter_spec.rb
1658
+ - spec/lutaml/json/yeptris_adapter_spec.rb
1641
1659
  - spec/lutaml/jsonld/adapter_spec.rb
1660
+ - spec/lutaml/key_value/adapter/toml/teptris_adapter_spec.rb
1642
1661
  - spec/lutaml/key_value/transformation/collection_serializer_spec.rb
1643
1662
  - spec/lutaml/key_value/transformation/rule_compiler_spec.rb
1644
1663
  - spec/lutaml/key_value/transformation/value_serializer_spec.rb
@@ -1657,6 +1676,7 @@ files:
1657
1676
  - spec/lutaml/model/collection_index_spec.rb
1658
1677
  - spec/lutaml/model/collection_mutation_spec.rb
1659
1678
  - spec/lutaml/model/collection_spec.rb
1679
+ - spec/lutaml/model/collection_state_nesting_spec.rb
1660
1680
  - spec/lutaml/model/collection_validation_spec.rb
1661
1681
  - spec/lutaml/model/comparable_model_spec.rb
1662
1682
  - spec/lutaml/model/compiled_rule_spec.rb
@@ -1677,6 +1697,7 @@ files:
1677
1697
  - spec/lutaml/model/enum_spec.rb
1678
1698
  - spec/lutaml/model/except_spec.rb
1679
1699
  - spec/lutaml/model/finalization_cache_spec.rb
1700
+ - spec/lutaml/model/generator_defaults_spec.rb
1680
1701
  - spec/lutaml/model/global_context_spec.rb
1681
1702
  - spec/lutaml/model/global_register_spec.rb
1682
1703
  - spec/lutaml/model/group_spec.rb
@@ -1686,6 +1707,7 @@ files:
1686
1707
  - spec/lutaml/model/inheritance_spec.rb
1687
1708
  - spec/lutaml/model/json_adapter_spec.rb
1688
1709
  - spec/lutaml/model/json_spec.rb
1710
+ - spec/lutaml/model/json_state_nesting_spec.rb
1689
1711
  - spec/lutaml/model/jsonl/standard_adapter_spec.rb
1690
1712
  - spec/lutaml/model/jsonl_spec.rb
1691
1713
  - spec/lutaml/model/key_value_data_model/key_value_element_spec.rb
@@ -1888,6 +1910,7 @@ files:
1888
1910
  - spec/lutaml/xml/ordered_method_spec.rb
1889
1911
  - spec/lutaml/xml/out_of_namespace_parsing_spec.rb
1890
1912
  - spec/lutaml/xml/pipeline_integration_spec.rb
1913
+ - spec/lutaml/xml/plan_fast_path_spec.rb
1891
1914
  - spec/lutaml/xml/prefix_control_spec.rb
1892
1915
  - spec/lutaml/xml/register_spec.rb
1893
1916
  - spec/lutaml/xml/reusable_mapping_spec.rb
@@ -1916,6 +1939,7 @@ files:
1916
1939
  - spec/lutaml/xml/schema/xsd/xsd_spec.rb
1917
1940
  - spec/lutaml/xml/schema_primer_spec.rb
1918
1941
  - spec/lutaml/xml/serializable_namespace_spec.rb
1942
+ - spec/lutaml/xml/shared_element_rules_spec.rb
1919
1943
  - spec/lutaml/xml/transformation/custom_method_wrapper_spec.rb
1920
1944
  - spec/lutaml/xml/transformation_spec.rb
1921
1945
  - spec/lutaml/xml/type_namespace/collector_spec.rb
@@ -1936,6 +1960,7 @@ files:
1936
1960
  - spec/lutaml/xml/xml_space_spec.rb
1937
1961
  - spec/lutaml/xml/xml_space_type_spec.rb
1938
1962
  - spec/lutaml/xml/xml_spec.rb
1963
+ - spec/lutaml/yaml/yeptris_adapter_spec.rb
1939
1964
  - spec/lutaml/yamlld/adapter_spec.rb
1940
1965
  - spec/lutaml/yamlld/registration_spec.rb
1941
1966
  - spec/parent_root_spec.rb