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 +4 -4
- data/lib/pubid/format_registry.rb +37 -0
- data/lib/pubid/version.rb +1 -1
- 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: 83a1dfa8e9292518118d3e1a8fa272d01383fdc8a7aaa0f994eda0430e847152
|
|
4
|
+
data.tar.gz: '08d0978740004b72ab76645d97a5c14ae60142542e3dd8fe1fba78e9b0f5d322'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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
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.
|
|
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-
|
|
11
|
+
date: 2026-10-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: lutaml-model
|