pubid 2.0.0.pre.alpha.26 → 2.0.0.pre.alpha.27

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: e8fe62e1e4abc31947a12d20e5bb9c0f74cf2b3bab2e382eb59083fb9ea6a8cd
4
- data.tar.gz: 4f484ef812ea6e1a1c47f557548a129cee174cf31edbf508551a25568bc37766
3
+ metadata.gz: 83a1dfa8e9292518118d3e1a8fa272d01383fdc8a7aaa0f994eda0430e847152
4
+ data.tar.gz: '08d0978740004b72ab76645d97a5c14ae60142542e3dd8fe1fba78e9b0f5d322'
5
5
  SHA512:
6
- metadata.gz: d66b958dfb8702820e3c2a739bd3e241295e3128657dac8163915e8fa19702aa3ccfbf50b081f79dcf3efb7569209e89ef7b807e8e66131d9a176615c3bc37dc
7
- data.tar.gz: 8b39adf59491b46db95d8f42cdda511d3fc69d47bc0d89129a8fb8ca31fcc2c26e6c2ffbff1f734e9692cc0f569d5c2ab91c0df1f6a94998eaef8d1ae2551532
6
+ metadata.gz: b391d189195744c8139fc8c08b4bb8a9781cfaa795fccef9ef9284972d2990ab18644bb132eb112992226205255e1cd1d50109dcd474d5e2d5528b9f2af2092b
7
+ data.tar.gz: 2ee6eb4c25163f4f6266b51625fd02f47c9db28cc0581afbb5c151580f98d5f6fd533ee18976e06e885e8d809fe0b62b0ff88517a53139a0ef7aa19b558b7d3e
@@ -1,6 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pubid
4
+ # Per-flavor string formats (renderer/parser pairs), parent-chained
5
+ # along the identifier class hierarchy.
6
+ #
7
+ # When lutaml-model is loaded, every registration is mirrored into
8
+ # Lutaml::Model::FormatRegistry (the single format registry the
9
+ # grammar-backed format machinery consumes), so pubid's string
10
+ # formats and LML-declared formats live in one registry. pubid
11
+ # itself does not depend on lutaml-model — the mirror is inert
12
+ # without it.
4
13
  class FormatRegistry
5
14
  attr_reader :formats
6
15
 
@@ -11,6 +20,7 @@ module Pubid
11
20
 
12
21
  def register(format, renderer: nil, parser: nil)
13
22
  @formats[format.to_sym] = { renderer:, parser: }
23
+ mirror_to_model_registry(format.to_sym, renderer, parser)
14
24
  end
15
25
 
16
26
  def renderer_for(format)
@@ -38,5 +48,32 @@ module Pubid
38
48
  def has?(format)
39
49
  @formats.key?(format.to_sym) || (@parent&.has?(format) || false)
40
50
  end
51
+
52
+ private
53
+
54
+ def mirror_to_model_registry(format, renderer, parser)
55
+ return unless defined?(::Lutaml::Model::FormatRegistry)
56
+ return if ::Lutaml::Model::FormatRegistry.registered?(format)
57
+
58
+ adapter = Class.new
59
+ adapter.define_singleton_method(:pubid_renderer) { renderer }
60
+ if parser
61
+ adapter.define_singleton_method(:parse) { |data, _options = {}| parser.call(data) }
62
+ end
63
+ transformer = Class.new do
64
+ define_singleton_method(:name) { "Pubid#{format.to_s.capitalize}Transform" }
65
+
66
+ define_method(:data_to_model) do |data, _format, _options = {}|
67
+ data
68
+ end
69
+ end
70
+ ::Lutaml::Model::FormatRegistry.register(
71
+ format,
72
+ mapping_class: ::Lutaml::Model::Mapping,
73
+ adapter_class: adapter,
74
+ transformer: transformer,
75
+ error_types: [Pubid::Errors::ParseError],
76
+ )
77
+ end
41
78
  end
42
79
  end
data/lib/pubid/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pubid
4
- VERSION = "2.0.0.pre.alpha.26"
4
+ VERSION = "2.0.0.pre.alpha.27"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pubid
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.pre.alpha.26
4
+ version: 2.0.0.pre.alpha.27
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-04 00:00:00.000000000 Z
11
+ date: 2026-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lutaml-model