pubid 2.0.19 → 2.0.21

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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/data/iho/s4-reserved-specs.yaml +15 -0
  3. data/data/parg/bipm.json +1 -1
  4. data/data/parg/bipm.parg +46 -11
  5. data/data/parg/iho.json +1 -1
  6. data/data/parg/iho.parg +128 -11
  7. data/data/parg/plateau.json +1 -1
  8. data/lib/pubid/bipm/CLAUDE.md +6 -1
  9. data/lib/pubid/bipm/builder.rb +20 -1
  10. data/lib/pubid/bipm/renderer.rb +14 -2
  11. data/lib/pubid/bipm/urn_generator.rb +80 -14
  12. data/lib/pubid/bipm/urn_parser.rb +70 -6
  13. data/lib/pubid/ecma/CLAUDE.md +12 -0
  14. data/lib/pubid/ecma/identifier.rb +1 -2
  15. data/lib/pubid/ecma/parser.rb +49 -0
  16. data/lib/pubid/identifier.rb +4 -3
  17. data/lib/pubid/iec/CLAUDE.md +20 -11
  18. data/lib/pubid/iec/builder.rb +19 -1
  19. data/lib/pubid/iec/identifier.rb +19 -70
  20. data/lib/pubid/iec/identifiers/fragment_identifier.rb +3 -3
  21. data/lib/pubid/iec/identifiers/test_report_form.rb +29 -0
  22. data/lib/pubid/iec/identifiers/working_document.rb +23 -6
  23. data/lib/pubid/iec/pubid_urn_schema.rb +15 -7
  24. data/lib/pubid/iec/renderer.rb +8 -4
  25. data/lib/pubid/iec/single_identifier.rb +69 -4
  26. data/lib/pubid/iec/supplement_identifier.rb +52 -76
  27. data/lib/pubid/iho/CLAUDE.md +52 -0
  28. data/lib/pubid/iho/builder.rb +105 -2
  29. data/lib/pubid/iho/identifiers/base.rb +52 -1
  30. data/lib/pubid/iho/pubid_urn_schema.rb +11 -4
  31. data/lib/pubid/iho/renderer.rb +39 -2
  32. data/lib/pubid/iho/reserved_specs.rb +54 -0
  33. data/lib/pubid/iho/urn_generator.rb +6 -0
  34. data/lib/pubid/iho/urn_parser.rb +50 -9
  35. data/lib/pubid/iho.rb +1 -0
  36. data/lib/pubid/nist/CLAUDE.md +11 -0
  37. data/lib/pubid/nist/preprocessor.rb +16 -0
  38. data/lib/pubid/plateau/CLAUDE.md +35 -0
  39. data/lib/pubid/plateau/builder.rb +4 -0
  40. data/lib/pubid/plateau/identifiers/handbook.rb +10 -2
  41. data/lib/pubid/plateau/pubid_urn_schema.rb +1 -0
  42. data/lib/pubid/plateau/renderer.rb +6 -1
  43. data/lib/pubid/sae/CLAUDE.md +11 -2
  44. data/lib/pubid/version.rb +1 -1
  45. metadata +18 -2
@@ -39,7 +39,12 @@ module Pubid
39
39
 
40
40
  def render_handbook(id)
41
41
  result = "#{id.publisher} #{id.type_string} #{id.formatted_number}#{id.formatted_annex}"
42
- result += " #{id.formatted_edition}" if id.edition
42
+ return result unless id.edition
43
+
44
+ # The grammar reads a volume label only after an edition, so a
45
+ # volume without one (e.g. after exclude(:edition)) is not printed.
46
+ result += " #{id.formatted_edition}"
47
+ result += " #{id.volume}" if id.volume
43
48
  result
44
49
  end
45
50
 
@@ -12,8 +12,17 @@ Measured on the full deposit list (2026-11-04, 47,692 DOIs): **46,726
12
12
  parse**, and every parsed code round-trips through `to_s`, `from_hash` and
13
13
  the URN, with **0 `to_hash` collisions**. The 966 that do not parse are:
14
14
 
15
- - **791 CP\*** (`CPGM`, `CPFD`, `CPKW`, …): collected-paper products, not
16
- standards. Out of scope by decision.
15
+ - **791 CP\*** (`CPGM`, `CPFD`, `CPKW`, …): SAE "Certified Power" data
16
+ products — engine power/torque data certified under SAE J1349, one per
17
+ vehicle and level (`CPGM2_15LFXCOCA`: "J1349 Certified Power Engine Data
18
+ for GM as used in 2015 LFX Colorado/Canyon - Level 2"). The letters after
19
+ `CP` name the manufacturer (`GM`, `FD` Ford, `FC` FCA, …). They are data
20
+ products, not standards, and stay out of `TYPES` by decision (pubid#686).
21
+ `SAE CPGM2016` in pubid#686 is not a deposit: it is the synthetic DOI of
22
+ relaton's "reports a record pubid cannot parse" spec
23
+ (`spec/sae/relaton/sae/data_fetcher_spec.rb`), which, with
24
+ `bibliography_spec.rb` and `docs/sae.md`, relies on it failing to parse.
25
+ `spec/pubid/sae/crossref_coverage_spec.rb` pins the rejection.
17
26
  - **175 one-offs**, none more than 32 of a kind: `SUP1` supplements
18
27
  (`AS4468SUP1A`, `ARP4737SUP1`), language tails (`AS9101F_PTBR`,
19
28
  `IA9137_DEDE`), `J2534-2/10_5_00`, `_4Q2012`, type-less `SAE6857`,
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.19"
4
+ VERSION = "2.0.21"
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.19
4
+ version: 2.0.21
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-11-10 00:00:00.000000000 Z
11
+ date: 2026-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lutaml-model
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.3.122
41
+ - !ruby/object:Gem::Dependency
42
+ name: benchmark
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: PubID is a Ruby library for parsing and generating international publication
42
56
  identifiers (PubIDs). It provides a simple and flexible API for working with PubIDs,
43
57
  allowing developers to easily create, manipulate, and validate PubIDs in their applications.
@@ -57,6 +71,7 @@ files:
57
71
  - data/iec/stage-codes.md
58
72
  - data/iec/update_codes.yaml
59
73
  - data/ieee/update_codes.yaml
74
+ - data/iho/s4-reserved-specs.yaml
60
75
  - data/iso/update_codes.yaml
61
76
  - data/nist/series.yaml
62
77
  - data/nist/stages.yaml
@@ -719,6 +734,7 @@ files:
719
734
  - lib/pubid/iho/identifiers/standard.rb
720
735
  - lib/pubid/iho/pubid_urn_schema.rb
721
736
  - lib/pubid/iho/renderer.rb
737
+ - lib/pubid/iho/reserved_specs.rb
722
738
  - lib/pubid/iho/urn_generator.rb
723
739
  - lib/pubid/iho/urn_parser.rb
724
740
  - lib/pubid/isbn.rb