rng 0.3.4 → 0.3.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b297a52ef81d423b4980c3b32b3b167296c733a293bc52c533926aaf7088f55
4
- data.tar.gz: d85e507f79ab28d6f50e32128d4fdc7abe4dd9fae5cdccec2d57d23043271554
3
+ metadata.gz: fdcf95250d1a2a74faf391653627fb81dad5c60eba650a206ad9c9cce4a6b638
4
+ data.tar.gz: 3ec79ed69ac17cf4a0c7f24c7b4d39b4deaf63c0c2d5868b8579fb29a3ca83ee
5
5
  SHA512:
6
- metadata.gz: 3d4cf91c1c619e39a9d923d409a741e455b32fcb364eb425e13a337438a1e2797943c605964fb85a804284d1a0ea2e4a64bc16959aa1960001b1d4f7b1744b00
7
- data.tar.gz: 9fa1ceada50cc44fb707f7dee432718f0d8d3cd259c90991fef7b96402dc4ba5eb8cfa202644ec4fc6b9f1b586252b67c8b818094104fbb9ab2d418726993e8d
6
+ metadata.gz: af94bb3c3fb3c56877df25ca93a89274664a3e8649524dbc2a6d1b3775541e9c4e6060f5df5eb4851966ad8de23e7fb9e4c70ed8bbf6977bb21578ddaa19dabe
7
+ data.tar.gz: e29d6b582c39eac4d0c4245a318c2cbae919e178403d44afe5c10fa271ab5391785d02e7b7819ce3beca6e4992d7ab8684e278858fa5e3dbc8326cb4ac527173
data/lib/rng/include.rb CHANGED
@@ -4,7 +4,7 @@ module Rng
4
4
  class Include < Lutaml::Model::Serializable
5
5
  attribute :href, :string
6
6
  attribute :ns, :string
7
- attribute :define, Define
7
+ attribute :define, Define, collection: true, initialize_empty: true
8
8
  attribute :grammar, Grammar
9
9
 
10
10
  xml do
@@ -321,7 +321,8 @@ module Rng
321
321
  override[:definitions].each do |override_def|
322
322
  # Check if names match
323
323
  next unless source_def[:name] && override_def[:name] &&
324
- extract_string(source_def[:name][:identifier]) == extract_string(override_def[:name][:identifier])
324
+ extract_name_from_identifier(source_def) ==
325
+ extract_name_from_identifier(override_def)
325
326
 
326
327
  # Use override instead of source
327
328
  target_tree[:definitions] << override_def
@@ -343,7 +344,8 @@ module Rng
343
344
 
344
345
  source_tree[:definitions]&.each do |source_def|
345
346
  next unless source_def[:name] && override_def[:name] &&
346
- extract_string(source_def[:name][:identifier]) == extract_string(override_def[:name][:identifier])
347
+ extract_name_from_identifier(source_def) ==
348
+ extract_name_from_identifier(override_def)
347
349
 
348
350
  matched = true
349
351
  break
@@ -354,6 +356,27 @@ module Rng
354
356
  end
355
357
  end
356
358
 
359
+ # Extract identifier string from a definition name hash.
360
+ # Handles both {:identifier => "name"} and
361
+ # {:identifier_parts => [{:char => "n"}, ...]} structures.
362
+ def extract_name_from_identifier(defn)
363
+ name = defn[:name]
364
+ return nil unless name.is_a?(Hash)
365
+
366
+ if name[:identifier]
367
+ extract_string(name[:identifier])
368
+ elsif name[:identifier_parts]
369
+ name[:identifier_parts].map do |part|
370
+ if part.is_a?(Hash) && part[:char]
371
+ c = part[:char]
372
+ c.respond_to?(:str) ? c.str : c.to_s
373
+ else
374
+ part.to_s
375
+ end
376
+ end.join
377
+ end
378
+ end
379
+
357
380
  # Helper method to extract clean string without Parslet position markers
358
381
  #
359
382
  # @param obj [Object] Parslet::Slice or String
data/lib/rng/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Rng
4
- VERSION = '0.3.4'
4
+ VERSION = '0.3.6'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rng
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.4
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-05-04 00:00:00.000000000 Z
11
+ date: 2026-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lutaml-model