nist-pubid 0.1.1
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 +7 -0
- data/.github/workflows/rake.yml +32 -0
- data/.rspec +3 -0
- data/.rubocop.yml +10 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +89 -0
- data/LICENSE.txt +25 -0
- data/README.adoc +544 -0
- data/Rakefile +8 -0
- data/lib/nist_pubid/document.rb +149 -0
- data/lib/nist_pubid/publisher.rb +26 -0
- data/lib/nist_pubid/serie.rb +24 -0
- data/lib/nist_pubid/stage.rb +22 -0
- data/lib/nist_pubid/version.rb +3 -0
- data/lib/nist_pubid.rb +7 -0
- data/nist_pubid.gemspec +38 -0
- data/publishers.yaml +6 -0
- data/series.yaml +134 -0
- data/stages.yaml +5 -0
- metadata +149 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 95b5276baaa0fa40ff0f83f3e5def09f571328cef45c7dfb43c76de42da80313
|
|
4
|
+
data.tar.gz: b12d0f41be03994096d50e3a8132c15736137210fde2e96788086c50b677fbdf
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: c6a61d374eabd7e8ab5e8aa67cc7c62735ccf0c15e60697f2f8e0fe5e07d503cfed45b0265d79e633857458c8d0ed4d87ad77276e08846c8feb9a4ef3e48d3b7
|
|
7
|
+
data.tar.gz: 8d320e322a4b9e4ed7e0dda53aa15aef7e9cb70d34cbb5ad90741d2c8cd1101bc76f618cda823ceadb9fe29b5707d7c60dbe3c8727a5a801e90490d5468b066b
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Auto-generated by Cimas: Do not edit it manually!
|
|
2
|
+
# See https://github.com/metanorma/cimas
|
|
3
|
+
name: rake
|
|
4
|
+
|
|
5
|
+
on:
|
|
6
|
+
push:
|
|
7
|
+
branches: [ master, main ]
|
|
8
|
+
tags: [ v* ]
|
|
9
|
+
pull_request:
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
rake:
|
|
13
|
+
name: Test on Ruby ${{ matrix.ruby }} ${{ matrix.os }}
|
|
14
|
+
runs-on: ${{ matrix.os }}
|
|
15
|
+
continue-on-error: ${{ matrix.experimental }}
|
|
16
|
+
strategy:
|
|
17
|
+
fail-fast: false
|
|
18
|
+
matrix:
|
|
19
|
+
ruby: [ '3.0', '2.7', '2.6', '2.5' ]
|
|
20
|
+
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
|
21
|
+
experimental: [ false ]
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@v2
|
|
24
|
+
with:
|
|
25
|
+
submodules: true
|
|
26
|
+
|
|
27
|
+
- uses: ruby/setup-ruby@v1
|
|
28
|
+
with:
|
|
29
|
+
ruby-version: ${{ matrix.ruby }}
|
|
30
|
+
bundler-cache: true
|
|
31
|
+
|
|
32
|
+
- run: bundle exec rake
|
data/.rspec
ADDED
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Auto-generated by Cimas: Do not edit it manually!
|
|
2
|
+
# See https://github.com/metanorma/cimas
|
|
3
|
+
inherit_from:
|
|
4
|
+
- https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
|
|
5
|
+
|
|
6
|
+
# local repo-specific modifications
|
|
7
|
+
# ...
|
|
8
|
+
|
|
9
|
+
AllCops:
|
|
10
|
+
TargetRubyVersion: 2.5
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
nist-pubid (0.1.1)
|
|
5
|
+
|
|
6
|
+
GEM
|
|
7
|
+
remote: https://rubygems.org/
|
|
8
|
+
specs:
|
|
9
|
+
activesupport (6.1.4.1)
|
|
10
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
11
|
+
i18n (>= 1.6, < 2)
|
|
12
|
+
minitest (>= 5.1)
|
|
13
|
+
tzinfo (~> 2.0)
|
|
14
|
+
zeitwerk (~> 2.3)
|
|
15
|
+
ast (2.4.2)
|
|
16
|
+
byebug (11.1.3)
|
|
17
|
+
coderay (1.1.3)
|
|
18
|
+
concurrent-ruby (1.1.9)
|
|
19
|
+
diff-lcs (1.4.4)
|
|
20
|
+
i18n (1.8.11)
|
|
21
|
+
concurrent-ruby (~> 1.0)
|
|
22
|
+
method_source (1.0.0)
|
|
23
|
+
minitest (5.14.4)
|
|
24
|
+
parallel (1.21.0)
|
|
25
|
+
parser (3.0.3.1)
|
|
26
|
+
ast (~> 2.4.1)
|
|
27
|
+
pry (0.13.1)
|
|
28
|
+
coderay (~> 1.1)
|
|
29
|
+
method_source (~> 1.0)
|
|
30
|
+
pry-byebug (3.9.0)
|
|
31
|
+
byebug (~> 11.0)
|
|
32
|
+
pry (~> 0.13.0)
|
|
33
|
+
rack (2.2.3)
|
|
34
|
+
rainbow (3.0.0)
|
|
35
|
+
rake (13.0.6)
|
|
36
|
+
regexp_parser (2.1.1)
|
|
37
|
+
rexml (3.2.5)
|
|
38
|
+
rspec (3.10.0)
|
|
39
|
+
rspec-core (~> 3.10.0)
|
|
40
|
+
rspec-expectations (~> 3.10.0)
|
|
41
|
+
rspec-mocks (~> 3.10.0)
|
|
42
|
+
rspec-core (3.10.1)
|
|
43
|
+
rspec-support (~> 3.10.0)
|
|
44
|
+
rspec-expectations (3.10.1)
|
|
45
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
46
|
+
rspec-support (~> 3.10.0)
|
|
47
|
+
rspec-mocks (3.10.2)
|
|
48
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
49
|
+
rspec-support (~> 3.10.0)
|
|
50
|
+
rspec-support (3.10.3)
|
|
51
|
+
rubocop (1.23.0)
|
|
52
|
+
parallel (~> 1.10)
|
|
53
|
+
parser (>= 3.0.0.0)
|
|
54
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
55
|
+
regexp_parser (>= 1.8, < 3.0)
|
|
56
|
+
rexml
|
|
57
|
+
rubocop-ast (>= 1.12.0, < 2.0)
|
|
58
|
+
ruby-progressbar (~> 1.7)
|
|
59
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
|
60
|
+
rubocop-ast (1.14.0)
|
|
61
|
+
parser (>= 3.0.1.1)
|
|
62
|
+
rubocop-performance (1.12.0)
|
|
63
|
+
rubocop (>= 1.7.0, < 2.0)
|
|
64
|
+
rubocop-ast (>= 0.4.0)
|
|
65
|
+
rubocop-rails (2.12.4)
|
|
66
|
+
activesupport (>= 4.2.0)
|
|
67
|
+
rack (>= 1.1)
|
|
68
|
+
rubocop (>= 1.7.0, < 2.0)
|
|
69
|
+
ruby-progressbar (1.11.0)
|
|
70
|
+
tzinfo (2.0.4)
|
|
71
|
+
concurrent-ruby (~> 1.0)
|
|
72
|
+
unicode-display_width (2.1.0)
|
|
73
|
+
zeitwerk (2.5.1)
|
|
74
|
+
|
|
75
|
+
PLATFORMS
|
|
76
|
+
ruby
|
|
77
|
+
x86_64-darwin-20
|
|
78
|
+
|
|
79
|
+
DEPENDENCIES
|
|
80
|
+
nist-pubid!
|
|
81
|
+
pry-byebug
|
|
82
|
+
rake (~> 13.0)
|
|
83
|
+
rspec (~> 3.0)
|
|
84
|
+
rubocop (~> 1.23.0)
|
|
85
|
+
rubocop-performance (~> 1.12.0)
|
|
86
|
+
rubocop-rails (~> 2.12.4)
|
|
87
|
+
|
|
88
|
+
BUNDLED WITH
|
|
89
|
+
2.2.22
|
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
BSD 2-Clause License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2018, Ribose
|
|
4
|
+
All rights reserved.
|
|
5
|
+
|
|
6
|
+
Redistribution and use in source and binary forms, with or without
|
|
7
|
+
modification, are permitted provided that the following conditions are met:
|
|
8
|
+
|
|
9
|
+
* Redistributions of source code must retain the above copyright notice, this
|
|
10
|
+
list of conditions and the following disclaimer.
|
|
11
|
+
|
|
12
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
|
13
|
+
this list of conditions and the following disclaimer in the documentation
|
|
14
|
+
and/or other materials provided with the distribution.
|
|
15
|
+
|
|
16
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
17
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
18
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
19
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
20
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
21
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
22
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
23
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
24
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
25
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
data/README.adoc
ADDED
|
@@ -0,0 +1,544 @@
|
|
|
1
|
+
= NIST publication identifiers ("NIST PubID")
|
|
2
|
+
|
|
3
|
+
== Purpose
|
|
4
|
+
|
|
5
|
+
NIST publications are numbered according to an identification scheme.
|
|
6
|
+
|
|
7
|
+
This gem implements a mechanism to parse and utilize NIST publication identifers
|
|
8
|
+
provided in the https://github.com/usnistgov/NIST-Tech-Pubs[NIST-Tech-Pubs]
|
|
9
|
+
repository.
|
|
10
|
+
|
|
11
|
+
== Historic identifier patterns
|
|
12
|
+
|
|
13
|
+
There are at least three major "pattern series" of identifiers due to historical
|
|
14
|
+
reasons:
|
|
15
|
+
|
|
16
|
+
* NIST publications produced by the PubID scheme (202X-)
|
|
17
|
+
* NIST publications produced prior to the PubID scheme (1988-)
|
|
18
|
+
* NBS publications, produced under the National Bureau of Standards (the
|
|
19
|
+
previous name of NIST, 1901 to 1988)
|
|
20
|
+
|
|
21
|
+
This implementation attempts to support all three types of publication
|
|
22
|
+
identifier patterns.
|
|
23
|
+
|
|
24
|
+
== NIST PubID
|
|
25
|
+
|
|
26
|
+
NIST is currently developing a unified publication identifier scheme ("PubID")
|
|
27
|
+
for their technical series of publications, which allows machine-readable
|
|
28
|
+
identifier parts.
|
|
29
|
+
|
|
30
|
+
This scheme is described in "`Publication Identifier Syntax for NIST Technical
|
|
31
|
+
Series Publications`" authored by
|
|
32
|
+
https://www.nist.gov/people/james-foti[Jim Foti]
|
|
33
|
+
of the https://www.nist.gov/itl/csd[CSD, ITL], and
|
|
34
|
+
https://www.nist.gov/people/kathryn-miller[Kathryn Miller] and
|
|
35
|
+
https://www.nist.gov/people/kate-bucher[Kate Bucher] of the
|
|
36
|
+
https://www.nist.gov/associate-director-management-resources/staff-offices/information-services-office[ISO],
|
|
37
|
+
Management Resources.
|
|
38
|
+
|
|
39
|
+
NOTE: This scheme is still at proposal stage.
|
|
40
|
+
|
|
41
|
+
This gem implements the NIST PubID scheme and allows the conversion to and from
|
|
42
|
+
historic patterns.
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
== Use cases to support
|
|
46
|
+
|
|
47
|
+
PubID:
|
|
48
|
+
|
|
49
|
+
. Given a PubID (full-form title, abbreviated-form title, short-form title),
|
|
50
|
+
generate the corresponding machine-readable (MR) PubID format
|
|
51
|
+
. Given a MR PubID:
|
|
52
|
+
.. generate the full-form title
|
|
53
|
+
.. generate the abbreviated-form title
|
|
54
|
+
.. generate short-form title
|
|
55
|
+
.. generate the DOI (which is just DOI ID + MR)
|
|
56
|
+
|
|
57
|
+
Historic compatibility:
|
|
58
|
+
|
|
59
|
+
. Parse a historic publication identifier into its components:
|
|
60
|
+
.. output the original publication identifier (i.e. store the contents in the
|
|
61
|
+
object)
|
|
62
|
+
.. output a MR PubID
|
|
63
|
+
|
|
64
|
+
. Parse a historic DOI into a PubID:
|
|
65
|
+
.. output the original DOI (i.e. store the contents in the object)
|
|
66
|
+
.. output a MR PubID
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
== Elements of the PubID
|
|
70
|
+
|
|
71
|
+
=== Publisher
|
|
72
|
+
|
|
73
|
+
|===
|
|
74
|
+
| Name | Abbrev | Short
|
|
75
|
+
|
|
76
|
+
| National Institute of Standards and Technology
|
|
77
|
+
| Natl. Inst. Stand. Technol.
|
|
78
|
+
| NIST
|
|
79
|
+
|
|
80
|
+
| National Bureau of Standards
|
|
81
|
+
| Natl. Bur. Stand.
|
|
82
|
+
| NBS
|
|
83
|
+
|
|
84
|
+
|===
|
|
85
|
+
|
|
86
|
+
=== Series
|
|
87
|
+
|
|
88
|
+
|===
|
|
89
|
+
| Publisher | Prefix | Name | Abbrev | MR (with Publisher) | Example
|
|
90
|
+
|
|
91
|
+
| NIST | NIST AMS | Advanced Manufacturing Standard | Adv. Man. Ser | `NIST.AMS`
|
|
92
|
+
| https://nvlpubs.nist.gov/nistpubs/ams/NIST.AMS.200-2.pdf[NIST AMS 200-2]
|
|
93
|
+
|
|
94
|
+
| NIST | NIST BSS | Building Science Series | Bldg. Sci. Ser. | `NIST.BSS`
|
|
95
|
+
| https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=901127[NIST BSS 181]
|
|
96
|
+
|
|
97
|
+
| NBS | NBS BSS | Building Science Series | Bldg. Sci. Ser. | `NBS.BSS`
|
|
98
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/BSS/nbsbuildingscience94.pdf[NBS BSS 94]
|
|
99
|
+
|
|
100
|
+
| NBS | NBS BMS | Building Material Structures Report | N/A | `NBS.BMS`
|
|
101
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/BMS/nbsbuildingmaterialsstructures140e2.pdf[NBS BMS 140 Ed. 2]
|
|
102
|
+
|
|
103
|
+
| NBS | NBS BRPD-CRPL-D | Basic Radio Propagation Predictions Series | N/A | `NBS.BRPD-CRPL-D`
|
|
104
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/brpd-crpl-d/brpd-crpl-d209.pdf[NBS BRPD-CRPL-D 209]
|
|
105
|
+
|
|
106
|
+
| NBS | NBS BH | Building and Housing Reports | N/A | `NBS.BH`
|
|
107
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/BH/nbsbuildinghousing18.pdf[NBS BH 18]
|
|
108
|
+
|
|
109
|
+
| NBS | NBS CRPL | Central Radio Propagation Laboratory Reports | N/A | `NBS.CRPL`
|
|
110
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/crpl/crpl-6-3.pdf[NBS CRPL 6-3]
|
|
111
|
+
|
|
112
|
+
| NBS | NBS CRPL-F-A | CRPL Ionospheric Data | N/A | `NBS.CRPL-F-A`
|
|
113
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/crpl-f-a/crpl-f-a245.pdf[NBS CRPL-F-A 245]
|
|
114
|
+
|
|
115
|
+
| NBS | NBS CRPL-F-B | CRPL Solar-Geophysical Data | N/A | `NBS CRPL-F-B245`
|
|
116
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/crpl-f-b/crpl-f-b245.pdf[NBS CRPL-F-B245]
|
|
117
|
+
|
|
118
|
+
| NBS | NBS IP | CRPL Ionospheric Predictions | N/A | `NBS.IP`
|
|
119
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/ip/nbsip25.pdf[NBS IP 25]
|
|
120
|
+
|
|
121
|
+
| NBS | NBS CIRC | Circulars | N/A | `NBS.CIRC`
|
|
122
|
+
| http://nvlpubs.nist.gov/nistpubs/Legacy/circ/nbscircular460sup1962.pdf[NBS CIRC 460sup1962]
|
|
123
|
+
|
|
124
|
+
| NBS | NBS CIS | Consumer Information Series | N/A | `NBS.CIS`
|
|
125
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/CIS/nbscis10.pdf[NBS CIS 10]
|
|
126
|
+
|
|
127
|
+
| NBS | NBS CS | Commercial Standards | N/A | `NBS.CS`
|
|
128
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/CS/cs113-51.pdf[NBS CS 113-51]
|
|
129
|
+
|
|
130
|
+
| NBS | NBS CSM | Commercial Standards Monthly | N/A | `NBS.CSM`
|
|
131
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/CSM/nbscsmv9n10.pdf[NBS CSM v9n10]
|
|
132
|
+
|
|
133
|
+
| NIST | FIPS PUB | Federal Information Processing Standards Publication | Federal Inf. Process. Stds. | `NIST.FIPS`
|
|
134
|
+
| https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf[FIPS PUB 202]
|
|
135
|
+
|
|
136
|
+
| NIST | NISTGCR | Grant/Contract Reports | N/A | `NIST.GCR`
|
|
137
|
+
| https://nvlpubs.nist.gov/nistpubs/gcr/2017/NIST.GCR.17-917-45.pdf[NIST GCR 17-917-45]
|
|
138
|
+
|
|
139
|
+
| NBS | NBS GCR | Grant/Contract Reports | N/A | `NBS.GCR`
|
|
140
|
+
| https://www.nist.gov/system/files/documents/2017/05/09/NISTGCR_77_82.pdf[NBS GCR 77-82]
|
|
141
|
+
|
|
142
|
+
| NIST | NIST HB | Handbook | Handb. | `NIST.HB`
|
|
143
|
+
| https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=932523[NIST Handbook 150-872]
|
|
144
|
+
|
|
145
|
+
| NBS | NBS HB | Handbook | Handb. | `NBS.HB`
|
|
146
|
+
| https://www.nist.gov/system/files/documents/pml/wmd/NBS-Handbook-1371.pdf[NBS Handbook 137]
|
|
147
|
+
|
|
148
|
+
| NBS | NBS HR | Hydraulic Research in the United States | N/A | `NBS.HR`
|
|
149
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/HR/hr14A.pdf[NBS HR 14A]
|
|
150
|
+
|
|
151
|
+
| NBS | NBS IRPL | Interservice Radio Propagation Laboratory | N/A | `NBS.IRPL`
|
|
152
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/irpl/irpl-r27.pdf[NBS IRPL 27]
|
|
153
|
+
|
|
154
|
+
| NIST | ITL Bulletin | ITL Bulletin | N/A | `NIST.ITLB`
|
|
155
|
+
| https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=930751[NIST ITL Bulletin August 2020]
|
|
156
|
+
|
|
157
|
+
| NIST | NIST LC | Letter Circular | N/A | `NIST.LCIRC`
|
|
158
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/LC/nistlettercircular1136.pdf[NIST LC 1136]
|
|
159
|
+
|
|
160
|
+
| NBS | NBS LC | Letter Circular | N/A | `NBS.LCIRC`
|
|
161
|
+
| https://www.govinfo.gov/content/pkg/GOVPUB-C13-505e153915bb567dd587b7efd26b000a/pdf/GOVPUB-C13-505e153915bb567dd587b7efd26b000a.pdf[NBS LC 1128]
|
|
162
|
+
|
|
163
|
+
| NIST | NIST MN | Monograph | Monogr. | `NIST.MN`
|
|
164
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/MONO/nistmonograph175.pdf[NIST Monograph 175]
|
|
165
|
+
|
|
166
|
+
| NBS | NBS MN | Monograph | Monogr. | `NBS.MN`
|
|
167
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/MONO/nbsmonograph125supp1.pdf[NIST Monograph 125],
|
|
168
|
+
https://nvlpubs.nist.gov/nistpubs/Legacy/MONO/nbsmonograph125.pdf[NIST Monograph 125, Supp. 1]
|
|
169
|
+
|
|
170
|
+
| NBS | NBS MP | Miscellaneous Publications | N/A | `NBS.MP`
|
|
171
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/MP/nbsmiscellaneouspub260e1968.pdf[NBS MP 260e1968]
|
|
172
|
+
|
|
173
|
+
| NIST | NIST NCSTAR | National Construction Safety Team Report | Natl. Constr. Tm. Act Rpt. | `NIST.NCSTAR`
|
|
174
|
+
| https://www.nist.gov/publications/design-and-construction-structural-systems-federal-building-and-fire-safety[NIST NCSTAR 1-1A]
|
|
175
|
+
|
|
176
|
+
| NIST | NIST NSRDS | National Standard Reference Data Series | Natl. Stand. Ret. Data Ser. | `NIST.NSRDS`
|
|
177
|
+
| https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=931745[NIST NSRDS 100-2021]
|
|
178
|
+
|
|
179
|
+
| NBS | NSRDS-NBS | National Standard Reference Data Series | Natl. Stand. Ret. Data Ser. | `NBS.NSRDS`
|
|
180
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/NSRDS/nbsnsrds1.pdf[NSRDS-NBS 1]
|
|
181
|
+
|
|
182
|
+
| NIST | NISTIR | Interagency or Internal Report | N/A | `NIST.IR`
|
|
183
|
+
| https://nvlpubs.nist.gov/nistpubs/ir/2021/NIST.IR.8347.pdf[NISTIR 8347]
|
|
184
|
+
|
|
185
|
+
| NBS | NBSIR | Interagency or Internal Report | N/A | `NBS.IR`
|
|
186
|
+
| https://www.nist.gov/system/files/documents/2017/04/28/nbsir-79-1776.pdf[NBSIR 79-1776]
|
|
187
|
+
|
|
188
|
+
| NIST | NIST OWMWP | Office of Weights and Measures White Papers | N/A | `NIST.OWMWP`
|
|
189
|
+
| https://nvlpubs.nist.gov/nistpubs/OWMWP/NIST.OWMWP.06-13-2018.pdf[NIST OWMWP 06-13-2018]
|
|
190
|
+
|
|
191
|
+
| NBS | NBS PC | Photographic Circulars | N/A | `NBS.PC`
|
|
192
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/PC/nbsphotographiccircular.pdf[NBS RPT 10394]
|
|
193
|
+
|
|
194
|
+
| NBS | NBS RPT | Reports | N/A | `NBS.RPT`
|
|
195
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/RPT/nbsreport10394.pdf[NBS PC 1]
|
|
196
|
+
|
|
197
|
+
| NIST | NIST PS | Voluntary Product Standards | Prod. Stand. | `NIST.PS`
|
|
198
|
+
| https://www.nist.gov/system/files/documents/2019/12/11/PS%2020-20%20final%20WERB%20approved.pdf[NIST PS 20-20]
|
|
199
|
+
|
|
200
|
+
| NBS | NBS SIBS | Special Interior Ballistics Studies | N/A | `NBS.SIBS`
|
|
201
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/SIBS/nbssibs.pdf[NBS SIBS 1]
|
|
202
|
+
|
|
203
|
+
| NBS | NBS PS | Voluntary Product Standards | Prod. Stand. | `NBS.PS`
|
|
204
|
+
| http://storage.cloversites.com/resinsystemsinc/documents/1569%20PDF.pdf[NBS PS 15-69]
|
|
205
|
+
|
|
206
|
+
| NIST | NIST SP | Special Publication | Spec. Publ. | `NIST.SP`
|
|
207
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-115.pdf[NIST SP 800-115]
|
|
208
|
+
|
|
209
|
+
| NBS | NBS SP | Special Publication | Spec. Publ. | `NBS.SP`
|
|
210
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nbsspecialpublication500-137.pdf[NBS SP 500-137]
|
|
211
|
+
|
|
212
|
+
| NIST | NIST TN | Technical Note | Tech. Note | `NIST.TN`
|
|
213
|
+
| https://nvlpubs.nist.gov/nistpubs/TechnicalNotes/NIST.TN.2156.pdf[NIST TN 2156]
|
|
214
|
+
|
|
215
|
+
| NBS | NBS TN | Technical Note | Tech. Note | `NBS.TN`
|
|
216
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/TN/nbstechnicalnote876.pdf[NBS TN 876]
|
|
217
|
+
|
|
218
|
+
| NBS | NBS TIBM | Technical Information on Building Materials | N/A | `NBS.TIBM`
|
|
219
|
+
| https://nvlpubs.nist.gov/nistpubs/Legacy/TIBM/nbstibm61.pdf[NBS TIBM 61]
|
|
220
|
+
|
|
221
|
+
| NIST | NIST TTB | Technology Transfer Brief | N/A | `NIST.TTB`
|
|
222
|
+
| https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=929334[NIST TTB 2]
|
|
223
|
+
|
|
224
|
+
| NIST | NIST DCI | Data Collection Instruments | Data Collect. Instr. | `NIST.DCI`
|
|
225
|
+
| https://nvlpubs.nist.gov/nistpubs/dci/NIST.DCI.002.pdf[NIST DCI 002]
|
|
226
|
+
|
|
227
|
+
| NIST | NIST EAB | Economic Analysis Brief | N/A | `NIST.EAB`
|
|
228
|
+
| https://nvlpubs.nist.gov/nistpubs/eab/NIST.EAB.9.pdf[NIST EAB 3]
|
|
229
|
+
|
|
230
|
+
| NIST | NIST Other | Other | Other | `NIST.O`
|
|
231
|
+
| https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=925900[Report to the President]
|
|
232
|
+
|
|
233
|
+
| NIST | CSRC White Paper | Cybersecurity Resource Center White Paper | CSWP | `NIST.CSWP`
|
|
234
|
+
| https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=932330[NIST.CSWP.04282021]
|
|
235
|
+
|
|
236
|
+
| NIST | CSRC Book | Cybersecurity Resource Center Book | CSRC Book | `NIST.CSB`
|
|
237
|
+
| https://csrc.nist.gov/CSRC/media/Publications/book/1974/executive-guide-to-computer-security/documents/executive-guide-to-computer-security--brochure.pdf[Executive Guide to Computer Security],
|
|
238
|
+
https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=917850[Metrics to Security]
|
|
239
|
+
|
|
240
|
+
| NIST | CSRC Use Case | Cybersecurity Resource Center Use Case | CSRC Use Case | `NIST.CSUC`
|
|
241
|
+
| https://nccoe.nist.gov/sites/default/files/library/project-descriptions/hit-infusion-pump-project-description-final.pdf[Wireless Medical Infusion Pumps: Medical Device Security]
|
|
242
|
+
|
|
243
|
+
| NIST | CSRC Building Block | Cybersecurity Resource Center Building Block | CSRC Building Block | `NIST.CSBB`
|
|
244
|
+
| https://nccoe.nist.gov/sites/default/files/library/project-descriptions/dns-secure-email-project-description-final.pdf[Domain Name System-Based Security for Electronic Mail]
|
|
245
|
+
|
|
246
|
+
| NIST | JPCRD | Journal of Physical and Chemical Reference Data | J. Phys. & Chem. Ref. Data | `JPCRD`
|
|
247
|
+
| (excluded from PubID scheme)
|
|
248
|
+
|
|
249
|
+
| NIST | JRES | Journal of Research of NIST | J. Res. Natl. Inst. Stan. | `NIST.JRES`
|
|
250
|
+
| (excluded from PubID scheme)
|
|
251
|
+
|
|
252
|
+
|===
|
|
253
|
+
|
|
254
|
+
=== Stage
|
|
255
|
+
|
|
256
|
+
The stage code element only applies to non-final publications.
|
|
257
|
+
|
|
258
|
+
In most series, documents are only released as final publications, and therefore
|
|
259
|
+
their PubIDs will not contain a stage code.
|
|
260
|
+
|
|
261
|
+
Only some series support stage codes, e.g. SP 800 and SP 1800.
|
|
262
|
+
|
|
263
|
+
|===
|
|
264
|
+
| Name | Value
|
|
265
|
+
|
|
266
|
+
| Initial Public Draft | IPD
|
|
267
|
+
| Second Public Draft (to the Nth Public Draft) | 2PD (... nPD)
|
|
268
|
+
| Final Public Draft | FPD
|
|
269
|
+
| Work-in-Progress Draft | WD
|
|
270
|
+
| Preliminary Draft | PreD
|
|
271
|
+
|
|
272
|
+
|===
|
|
273
|
+
|
|
274
|
+
=== Report number
|
|
275
|
+
|
|
276
|
+
The contents and pattern of the report number are dependent on the series.
|
|
277
|
+
|
|
278
|
+
Possible values:
|
|
279
|
+
|
|
280
|
+
* {sequence number}
|
|
281
|
+
* {subseries}-{sequence number}
|
|
282
|
+
* {sequence number}-{volume}
|
|
283
|
+
* {sequence number}-{edition}
|
|
284
|
+
* {subseries}-{sequence number}-{edition}
|
|
285
|
+
* etc.
|
|
286
|
+
|
|
287
|
+
A "Part" can also be indicated by an appended alphabetic character to the end.
|
|
288
|
+
|
|
289
|
+
=== Part
|
|
290
|
+
|
|
291
|
+
|===
|
|
292
|
+
| Name | Abbrev and Short | MR
|
|
293
|
+
|
|
294
|
+
| Part | Pt. | `pt`
|
|
295
|
+
| Volume | Vol. | `v`
|
|
296
|
+
| Section | Sec. | `sec`
|
|
297
|
+
| Supplement | Suppl. | `sup`
|
|
298
|
+
| Index | Index | `indx`
|
|
299
|
+
| Addendum | Add. | `add` (TBD with NIST)
|
|
300
|
+
| Insert | Ins. | `ins` (TBC with NIST)
|
|
301
|
+
| Errata | Err. | `err` (TBC with NIST)
|
|
302
|
+
|
|
303
|
+
|===
|
|
304
|
+
|
|
305
|
+
=== Edition
|
|
306
|
+
|
|
307
|
+
|===
|
|
308
|
+
| Name | Abbrev and Short | MR
|
|
309
|
+
|
|
310
|
+
| Revision | Rev. | `r`
|
|
311
|
+
| Edition | Ed. | `e`
|
|
312
|
+
| Version | Ver. | `ver`
|
|
313
|
+
|
|
314
|
+
|===
|
|
315
|
+
|
|
316
|
+
=== Translation
|
|
317
|
+
|
|
318
|
+
An ISO 639-2 code that represents a translated document from English.
|
|
319
|
+
|
|
320
|
+
If a document is translated from English, suffix the document with a 3-letter
|
|
321
|
+
ISO 639-2 code within parentheses.
|
|
322
|
+
|
|
323
|
+
Raw values seen in legacy DOIs include:
|
|
324
|
+
|
|
325
|
+
|===
|
|
326
|
+
| Name | Correct value | MR | Legacy values seen in DOI
|
|
327
|
+
|
|
328
|
+
| Spanish | (ESP) | `esp` | `es`
|
|
329
|
+
| Vietnamese | (VIE) | `vie` | `viet`
|
|
330
|
+
| Portuguese | (POR) | `por` | `port`
|
|
331
|
+
| Chinese | (ZHO) | `zho` | `chi`
|
|
332
|
+
|
|
333
|
+
|===
|
|
334
|
+
|
|
335
|
+
=== Update
|
|
336
|
+
|
|
337
|
+
==== General
|
|
338
|
+
|
|
339
|
+
When a document is updated with an errata, the original edition may be reissued
|
|
340
|
+
to include the errata.
|
|
341
|
+
|
|
342
|
+
These documents will display the text "includes updates as of...".
|
|
343
|
+
|
|
344
|
+
In this case the document identifier will include the element "Update".
|
|
345
|
+
|
|
346
|
+
|===
|
|
347
|
+
| Name | Abbrev and Short | MR
|
|
348
|
+
|
|
349
|
+
| Update | Upd. | `u`
|
|
350
|
+
|
|
351
|
+
|===
|
|
352
|
+
|
|
353
|
+
NOTE: This is similar to the ISO/IEC "Amd." and "Cor." except that the NIST
|
|
354
|
+
"Upd." is applied to the original document and (typically) does not exist
|
|
355
|
+
separately.
|
|
356
|
+
|
|
357
|
+
==== Update number
|
|
358
|
+
|
|
359
|
+
A sequential integer numbering of the update counting from the original document.
|
|
360
|
+
|
|
361
|
+
The first update is numbered 1, and so forth.
|
|
362
|
+
|
|
363
|
+
==== Update year
|
|
364
|
+
|
|
365
|
+
The year last updated, shown as a suffix to the identifier.
|
|
366
|
+
|
|
367
|
+
* "{identifier}:{update-year}"
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
== PubID patterns
|
|
371
|
+
|
|
372
|
+
=== Presentation
|
|
373
|
+
|
|
374
|
+
Generally in this order:
|
|
375
|
+
|
|
376
|
+
* No update: `{series} {stage} {report number}{part}{edition}({translation})`
|
|
377
|
+
* With update: `{series} {stage} {report number}{part}{edition}({translation})/{update} {update number}:{update year}`
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
=== Full PubID
|
|
381
|
+
|
|
382
|
+
Samples:
|
|
383
|
+
|
|
384
|
+
* National Institute of Standards and Technology Federal Information Processing Standards Publication 199
|
|
385
|
+
* National Institute of Standards and Technology Special Publication 800-27, Revision A
|
|
386
|
+
* National Institute of Standards and Technology Special Publication 800-39 (Second Public Draft)
|
|
387
|
+
|
|
388
|
+
(originally described in https://github.com/metanorma/metanorma-nist/issues/98)
|
|
389
|
+
|
|
390
|
+
=== Abbreviated PubID
|
|
391
|
+
|
|
392
|
+
This form is used in the Authority section.
|
|
393
|
+
|
|
394
|
+
----
|
|
395
|
+
Natl. Inst. Stand. Technol. {abbrev(series)} {reportnumber} {part | abbrev(volume)}, {abbrev(revision)}
|
|
396
|
+
----
|
|
397
|
+
|
|
398
|
+
* `abbrev(series)` represent the abbreviation of the Series title
|
|
399
|
+
* (Note: there is no `{update-date}`)
|
|
400
|
+
|
|
401
|
+
Examples:
|
|
402
|
+
|
|
403
|
+
* "Natl. Inst. Stand. Technol. Spec. Publ. 800-78-4"
|
|
404
|
+
* "Natl. Inst. Stand. Technol. Spec. Publ. 800-116"
|
|
405
|
+
* "Natl. Inst. Stand. Technol. Spec. Publ. 800-57 Part 1, Revision 4"
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
(originally from https://github.com/metanorma/metanorma-nist/issues/88)
|
|
409
|
+
|
|
410
|
+
=== Short PubID
|
|
411
|
+
|
|
412
|
+
The "short form" is used to cite the documents within text.
|
|
413
|
+
|
|
414
|
+
It is used in these situations:
|
|
415
|
+
|
|
416
|
+
1. Locality references. "In Section 3.2 of SP 800-187…" (the "SP 800-187" is a link).
|
|
417
|
+
+
|
|
418
|
+
NOTE: NIST pubs are composed of "Sections" not "Clauses"
|
|
419
|
+
|
|
420
|
+
2. A generic document reference. "SP 800-53 describes…". This form does not specify a revision or update date.
|
|
421
|
+
|
|
422
|
+
3. "All parts". "The SP 800-57 subseries describes key management…".
|
|
423
|
+
|
|
424
|
+
("NISTIR 6885 2003 Edition (February 2003)" is a poor indicator.)
|
|
425
|
+
|
|
426
|
+
The correct rule should be:
|
|
427
|
+
|
|
428
|
+
----
|
|
429
|
+
{abbrev(series)} {reportnumber} {abbrev(volume)} {abbrev(revision)} {edition, optional}
|
|
430
|
+
----
|
|
431
|
+
|
|
432
|
+
NOTE: For FIPS, `reportnumber` is the full FIPS number, including revision, e.g.,
|
|
433
|
+
`140-2`.
|
|
434
|
+
|
|
435
|
+
(originally from https://github.com/metanorma/metanorma-nist/issues/88)
|
|
436
|
+
|
|
437
|
+
Short form date:
|
|
438
|
+
|
|
439
|
+
* `Month YYYY`
|
|
440
|
+
|
|
441
|
+
Examples:
|
|
442
|
+
|
|
443
|
+
* NIST SP 800-53r4 (20152201) supersedes NIST SP 800-53r4 (20140115)
|
|
444
|
+
* NIST SP 800 63A (December 2017) supersedes NIST SP 800-63A
|
|
445
|
+
* NIST SP 800 57 Part 1 Revision 4 supersedes NIST SP 800-57 Part 1 Revision 3 ("Rev." is also accepted, and converted to "Revision")
|
|
446
|
+
* NIST SP 800 160 Volume 1 supersedes NIST SP 800-160 (20180103) ("Vol." is also accepted, and converted to "Volume")
|
|
447
|
+
* Undated form "NIST SP 800 53r4"
|
|
448
|
+
|
|
449
|
+
Strip Revision and Date from title, only if the Revision and Date are unique for
|
|
450
|
+
each document number. These are identified as "Rev. ...", "Revision ...." and "
|
|
451
|
+
(Month YYYY)", whichever comes first.
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
=== Machine-readable PubID
|
|
455
|
+
|
|
456
|
+
Machine-readable syntax:
|
|
457
|
+
|
|
458
|
+
----
|
|
459
|
+
{publisher}.{series}.[{stage}.]{reportnumber}.{part}.{revision}.[{lang}.]{update-date}
|
|
460
|
+
----
|
|
461
|
+
|
|
462
|
+
----
|
|
463
|
+
{publisher}.{series}.[{stage}.]{reportnumber}.{part}.{revision}.[{lang}.][{update}]{update-date}
|
|
464
|
+
----
|
|
465
|
+
|
|
466
|
+
Generally, this rule should be able to uniquely identify an edition of a document.
|
|
467
|
+
|
|
468
|
+
* `{part}`
|
|
469
|
+
** Part
|
|
470
|
+
*** A "Part 1" document is encoded as "pt1";
|
|
471
|
+
*** When a letter part is indicated, e.g. "800-63A", we should keep it as part of
|
|
472
|
+
the reportnumber (i.e., don't indicate "pt").
|
|
473
|
+
|
|
474
|
+
** Volumes
|
|
475
|
+
*** "Volume 1" is encoded as "v1";
|
|
476
|
+
|
|
477
|
+
* `{revision}`
|
|
478
|
+
** "Revision 1" is encoded as "r1"
|
|
479
|
+
|
|
480
|
+
** If a superseding edition is a full revision, it will get the next Rev. #.
|
|
481
|
+
** If a superseding edition is just an errata update, we use the update date
|
|
482
|
+
from the title page ("includes updates as of ...") to uniquely identify this
|
|
483
|
+
edition. Preferably in the `-yyyymmdd` format.
|
|
484
|
+
|
|
485
|
+
* `{update}`
|
|
486
|
+
** "Update 1" is encoded as "upd1"
|
|
487
|
+
|
|
488
|
+
Some examples:
|
|
489
|
+
|
|
490
|
+
* `NIST.SP.800-53r4-20152201` supersedes `NIST.SP.800-53r4-20140115`
|
|
491
|
+
* `NIST.SP.800-63A-20171201` supersedes `NIST.SP.800-63A`
|
|
492
|
+
* `NIST.SP.800-57pt1r4` supersedes `NIST.SP.800-57pt1r3`
|
|
493
|
+
* `NIST.SP.800-160v1` supersedes `NIST.SP.800-160-20180103`
|
|
494
|
+
* `NIST.IR.8204.upd1-2019` supersedes `NIST.IR.8204`
|
|
495
|
+
* The undated form is `NIST.SP.800-53r4`
|
|
496
|
+
|
|
497
|
+
(originally from https://github.com/metanorma/metanorma-nist/issues/88)
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
== Examples of PubID
|
|
501
|
+
|
|
502
|
+
* SP 800 series
|
|
503
|
+
** NIST SP 800-40r3
|
|
504
|
+
** NIST SP 800-45ver2
|
|
505
|
+
** NIST SP 800-53r4/Upd 3:2015
|
|
506
|
+
** NIST SP IPD 800-53r5
|
|
507
|
+
** NIST SP 800-53Ar4/Upd 1:2014
|
|
508
|
+
** NIST SP 800-60v1r1
|
|
509
|
+
** NIST SP 800-57pt1r4
|
|
510
|
+
** NIST SP 800-73-4/Upd 1:2016
|
|
511
|
+
** NIST SP 2PD 800-188
|
|
512
|
+
|
|
513
|
+
* SP 1800 series
|
|
514
|
+
** NIST SP 2PD 1800-13B
|
|
515
|
+
** NIST SP PreD 1800-19B
|
|
516
|
+
|
|
517
|
+
* NIST IR series
|
|
518
|
+
** NIST IR 8011v3
|
|
519
|
+
** NIST IR 8204/Upd 1:2019
|
|
520
|
+
** NIST IR 8115(spa)
|
|
521
|
+
|
|
522
|
+
* Other NIST Series
|
|
523
|
+
** NIST HB 130e2019
|
|
524
|
+
** NIST SP 1041r1/Upd 1:2012
|
|
525
|
+
** NIST NCSTAR 1-1Cv1
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
== Addendum
|
|
529
|
+
|
|
530
|
+
NIST SP 800-38A has an Addendum.
|
|
531
|
+
|
|
532
|
+
In NIST MR let's call this part add-X, e.g. "NIST SP 800-38A Addendum" =>
|
|
533
|
+
`NIST.SP.800-38A.pt-A.add-1`
|
|
534
|
+
|
|
535
|
+
. Full form title: "Addendum to {publisher} {series} {reportnumber} {part | volume}, {edition}"
|
|
536
|
+
|
|
537
|
+
. Abbreviated form title: "Add. to {abbrev(publisher)} {abbrev(series)} {reportnumber} {part | abbrev(volume)}, {abbrev(edition)}"
|
|
538
|
+
|
|
539
|
+
. Short form title: "{short(series)} {reportnumber} {part | abbrev(volume)}, {abbrev(edition)} Addendum"
|
|
540
|
+
|
|
541
|
+
. Machine-readable form NIST.SP.800-38A.pt-A.add-1
|
|
542
|
+
|
|
543
|
+
Originally from https://github.com/metanorma/metanorma-nist/issues/259.
|
|
544
|
+
|
data/Rakefile
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
REVISION_DESC = {
|
|
4
|
+
long: ", Revision ",
|
|
5
|
+
abbrev: ", Rev. ",
|
|
6
|
+
short: "r",
|
|
7
|
+
mr: "r",
|
|
8
|
+
}.freeze
|
|
9
|
+
|
|
10
|
+
VERSION_DESC = {
|
|
11
|
+
long: ", Version ",
|
|
12
|
+
abbrev: ", Ver. ",
|
|
13
|
+
short: "ver",
|
|
14
|
+
mr: "ver",
|
|
15
|
+
}.freeze
|
|
16
|
+
|
|
17
|
+
VOLUME_DESC = {
|
|
18
|
+
long: ", Volume ",
|
|
19
|
+
abbrev: ", Vol. ",
|
|
20
|
+
short: "v",
|
|
21
|
+
mr: "v",
|
|
22
|
+
}.freeze
|
|
23
|
+
|
|
24
|
+
PART_DESC = {
|
|
25
|
+
long: " Part ",
|
|
26
|
+
abbrev: " Pt. ",
|
|
27
|
+
short: "pt",
|
|
28
|
+
mr: "pt",
|
|
29
|
+
}.freeze
|
|
30
|
+
|
|
31
|
+
EDITION_DESC = {
|
|
32
|
+
long: " Edition ",
|
|
33
|
+
abbrev: " Ed. ",
|
|
34
|
+
short: "e",
|
|
35
|
+
mr: "e",
|
|
36
|
+
}.freeze
|
|
37
|
+
|
|
38
|
+
module NistPubid
|
|
39
|
+
class Document
|
|
40
|
+
attr_accessor :serie, :code, :revision, :publisher, :version, :volume,
|
|
41
|
+
:part, :addendum, :stage, :translation, :update, :edition
|
|
42
|
+
|
|
43
|
+
def initialize(publisher:, serie:, docnumber:, stage: nil, **opts)
|
|
44
|
+
@publisher = Publisher.new(publisher: publisher)
|
|
45
|
+
@serie = Serie.new(serie: serie)
|
|
46
|
+
@code = docnumber
|
|
47
|
+
@stage = Stage.new(stage: stage)
|
|
48
|
+
opts.each { |key, value| send("#{key}=", value) }
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def self.parse(code)
|
|
52
|
+
matches = {
|
|
53
|
+
publisher: match(Publisher.regexp, code),
|
|
54
|
+
serie: match(Serie.regexp, code)&.gsub(/\./, " "),
|
|
55
|
+
stage: match(Stage.regexp, code),
|
|
56
|
+
docnumber: match(/(?<=\.|\s)[0-9-]{3,}[A-Z]?/, code),
|
|
57
|
+
part: /(?<=(\.))?pt(?(1)-)([A-Z\d]+)/.match(code)&.[](2),
|
|
58
|
+
volume: /(?<=(\.))?v(?(1)-)(\d+)/.match(code)&.[](2),
|
|
59
|
+
version: match(/(?<=(\.))?ver(?(1)[-\d]|[.\d])+/, code)&.gsub(/-/, "."),
|
|
60
|
+
revision: /(?<=[^a-z])(?<=(\.))?(?:r(?(1)-)|Rev\.\s)(\d+)/
|
|
61
|
+
.match(code)&.[](2),
|
|
62
|
+
addendum: match(/(?<=(\.))?(add(?(1)-)\d+|Addendum)/, code),
|
|
63
|
+
translation: match(/(?<=\()\w{3}(?=\))/, code),
|
|
64
|
+
update: match(/(?<=Upd\s)([\d:]+)/, code),
|
|
65
|
+
edition: /(?<=[^a-z])(?<=(\.))?(?:e(?(1)-)|Ed\.\s)(\d+)/
|
|
66
|
+
.match(code)&.[](2),
|
|
67
|
+
}
|
|
68
|
+
new(**matches)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def self.match(regex, code)
|
|
72
|
+
regex.match(code)&.to_s
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def to_s(format)
|
|
76
|
+
result = "#{render_serie(format)}#{stage.to_s(format)}"\
|
|
77
|
+
"#{code}#{render_part(format)}#{render_edition(format)}"\
|
|
78
|
+
"#{render_update(format)}#{render_translation(format)}"
|
|
79
|
+
result = render_addendum(result, format)
|
|
80
|
+
|
|
81
|
+
return result.gsub(" ", ".") if format == :mr
|
|
82
|
+
|
|
83
|
+
result
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def render_serie(format)
|
|
87
|
+
return "#{serie.to_s(format)} " if %i[mr short].include?(format)
|
|
88
|
+
|
|
89
|
+
"#{publisher.to_s(format)} #{serie.to_s(format)} "
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def render_part(format)
|
|
93
|
+
# TODO: Section, Supplement, Index, Insert, Errata
|
|
94
|
+
result = ""
|
|
95
|
+
result += "#{VOLUME_DESC[format]}#{volume}" unless volume.nil?
|
|
96
|
+
result += "#{PART_DESC[format]}#{part}" unless part.nil?
|
|
97
|
+
result
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def render_edition(format)
|
|
101
|
+
result = ""
|
|
102
|
+
result += "#{REVISION_DESC[format]}#{revision}" unless revision.nil?
|
|
103
|
+
result += "#{VERSION_DESC[format]}#{version}" unless version.nil?
|
|
104
|
+
result += "#{EDITION_DESC[format]}#{edition}" unless edition.nil?
|
|
105
|
+
result
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def render_update(format)
|
|
109
|
+
return "" if update.nil?
|
|
110
|
+
|
|
111
|
+
case format
|
|
112
|
+
when :long
|
|
113
|
+
" Update #{update}"
|
|
114
|
+
when :abbrev
|
|
115
|
+
" Upd. #{update}"
|
|
116
|
+
when :short
|
|
117
|
+
"/Upd #{update}"
|
|
118
|
+
when :mr
|
|
119
|
+
".u#{update.gsub(":", "-")}"
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def render_translation(format)
|
|
124
|
+
return "" if translation.nil?
|
|
125
|
+
|
|
126
|
+
case format
|
|
127
|
+
when :long, :abbrev
|
|
128
|
+
" (#{translation.upcase})"
|
|
129
|
+
else
|
|
130
|
+
"(#{translation})"
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def render_addendum(input, format)
|
|
135
|
+
return input unless addendum
|
|
136
|
+
|
|
137
|
+
case format
|
|
138
|
+
when :long
|
|
139
|
+
"Addendum to #{input}"
|
|
140
|
+
when :abbrev
|
|
141
|
+
"Add. to #{input}"
|
|
142
|
+
when :short
|
|
143
|
+
"#{input} Addendum"
|
|
144
|
+
when :mr
|
|
145
|
+
"#{input}.add-1"
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
PUBLISHERS = YAML.load_file(File.join(File.dirname(__FILE__),
|
|
2
|
+
"../../publishers.yaml"))
|
|
3
|
+
|
|
4
|
+
module NistPubid
|
|
5
|
+
class Publisher
|
|
6
|
+
attr_accessor :publisher
|
|
7
|
+
|
|
8
|
+
def initialize(publisher:)
|
|
9
|
+
@publisher = publisher
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def to_s(format)
|
|
13
|
+
return @publisher if %i[short mr].include?(format)
|
|
14
|
+
|
|
15
|
+
PUBLISHERS[format.to_s][@publisher]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.publishers_keys
|
|
19
|
+
PUBLISHERS["long"].keys
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.regexp
|
|
23
|
+
/(#{PUBLISHERS["long"].keys.join('|')})(?=\.|\s)/
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
SERIES = YAML.load_file(File.join(File.dirname(__FILE__), "../../series.yaml"))
|
|
2
|
+
|
|
3
|
+
module NistPubid
|
|
4
|
+
class Serie
|
|
5
|
+
attr_accessor :serie
|
|
6
|
+
|
|
7
|
+
def initialize(serie:)
|
|
8
|
+
@serie = serie
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def to_s(format)
|
|
12
|
+
return @serie if %i[short mr].include?(format)
|
|
13
|
+
|
|
14
|
+
result = SERIES[format.to_s][@serie]
|
|
15
|
+
return SERIES["long"][@serie] if result.nil?
|
|
16
|
+
|
|
17
|
+
result
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.regexp
|
|
21
|
+
/(#{(SERIES["long"].keys + SERIES["mr"].values).join('|')})(?=\.|\s)/
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
STAGES = YAML.load_file(File.join(File.dirname(__FILE__), "../../stages.yaml"))
|
|
2
|
+
|
|
3
|
+
module NistPubid
|
|
4
|
+
class Stage
|
|
5
|
+
attr_accessor :stage
|
|
6
|
+
|
|
7
|
+
def initialize(stage:)
|
|
8
|
+
@stage = stage
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def to_s(format)
|
|
12
|
+
return "" if @stage.nil?
|
|
13
|
+
return "#{@stage} " if %i[short mr].include?(format)
|
|
14
|
+
|
|
15
|
+
"#{STAGES[@stage]} "
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def self.regexp
|
|
19
|
+
/(#{STAGES.keys.join('|')})(?=\.|\s)/
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
data/lib/nist_pubid.rb
ADDED
data/nist_pubid.gemspec
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
lib = File.expand_path("lib", __dir__)
|
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
|
+
require "nist_pubid/version"
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |spec|
|
|
6
|
+
spec.name = "nist-pubid"
|
|
7
|
+
spec.version = NistPubid::VERSION
|
|
8
|
+
spec.authors = ["Ribose Inc."]
|
|
9
|
+
spec.email = ["open.source@ribose.com"]
|
|
10
|
+
|
|
11
|
+
spec.homepage = "http://github.com/metanorma/nist-pubid"
|
|
12
|
+
spec.summary = "Extract and convert NIST machine-readable PubID."
|
|
13
|
+
spec.description = "Extract and convert NIST machine-readable PubID."
|
|
14
|
+
spec.license = "BSD-2-Clause"
|
|
15
|
+
|
|
16
|
+
# Specify which files should be added to the gem when it is released.
|
|
17
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
18
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
|
19
|
+
`git ls-files -z`.split("\x0").reject do |f|
|
|
20
|
+
f.match(%r{^(test|spec|features)/})
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
spec.extra_rdoc_files = %w[README.adoc LICENSE.txt]
|
|
24
|
+
spec.bindir = "exe"
|
|
25
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
26
|
+
spec.require_paths = ["lib"]
|
|
27
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.5.0")
|
|
28
|
+
|
|
29
|
+
spec.add_development_dependency "pry-byebug"
|
|
30
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
|
31
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
|
32
|
+
spec.add_development_dependency "rubocop", "~> 1.23.0"
|
|
33
|
+
spec.add_development_dependency "rubocop-performance", "~> 1.12.0"
|
|
34
|
+
spec.add_development_dependency "rubocop-rails", "~> 2.12.4"
|
|
35
|
+
spec.metadata = {
|
|
36
|
+
"rubygems_mfa_required" => "true",
|
|
37
|
+
}
|
|
38
|
+
end
|
data/publishers.yaml
ADDED
data/series.yaml
ADDED
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
long:
|
|
2
|
+
NIST AMS: Advanced Manufacturing Standard
|
|
3
|
+
NIST BSS: Building Science Series
|
|
4
|
+
NBS BSS: Building Science Series
|
|
5
|
+
NBS BMS: Building Material Structures Report
|
|
6
|
+
NBS BRPD-CRPL-D: Basic Radio Propagation Predictions Series
|
|
7
|
+
NBS BH: Building and Housing Reports
|
|
8
|
+
NBS CRPL: Central Radio Propagation Laboratory Reports
|
|
9
|
+
NBS CRPL-F-A: CRPL Ionospheric Data
|
|
10
|
+
NBS CRPL-F-B: CRPL Solar-Geophysical Data
|
|
11
|
+
NBS IP: CRPL Ionospheric Predictions
|
|
12
|
+
NBS CIRC: Circulars
|
|
13
|
+
NBS CIS: Consumer Information Series
|
|
14
|
+
NBS CS: Commercial Standards
|
|
15
|
+
NBS CSM: Commercial Standards Monthly
|
|
16
|
+
FIPS PUB: Federal Information Processing Standards Publication
|
|
17
|
+
NISTGCR: Grant/Contract Reports
|
|
18
|
+
NBS GCR: Grant/Contract Reports
|
|
19
|
+
NIST HB: Handbook
|
|
20
|
+
NBS HB: Handbook
|
|
21
|
+
NBS HR: Hydraulic Research in the United States
|
|
22
|
+
NBS IRPL: Interservice Radio Propagation Laboratory
|
|
23
|
+
ITL Bulletin: ITL Bulletin
|
|
24
|
+
NIST LC: Letter Circular
|
|
25
|
+
NBS LC: Letter Circular
|
|
26
|
+
NIST MN: Monograph
|
|
27
|
+
NBS MN: Monograph
|
|
28
|
+
NBS MP: Miscellaneous Publications
|
|
29
|
+
NIST NCSTAR: National Construction Safety Team Report
|
|
30
|
+
NIST NSRDS: National Standard Reference Data Series
|
|
31
|
+
NSRDS-NBS: National Standard Reference Data Series
|
|
32
|
+
NIST IR: Interagency or Internal Report
|
|
33
|
+
NBS IR: Interagency or Internal Report
|
|
34
|
+
NIST OWMWP: Office of Weights and Measures White Papers
|
|
35
|
+
NBS PC: Photographic Circulars
|
|
36
|
+
NBS RPT: Reports
|
|
37
|
+
NIST PS: Voluntary Product Standards
|
|
38
|
+
NBS SIBS: Special Interior Ballistics Studies
|
|
39
|
+
NBS PS: Voluntary Product Standards
|
|
40
|
+
NIST SP: Special Publication
|
|
41
|
+
NBS SP: Special Publication
|
|
42
|
+
NIST TN: Technical Note
|
|
43
|
+
NBS TN: Technical Note
|
|
44
|
+
NBS TIBM: Technical Information on Building Materials
|
|
45
|
+
NIST TTB: Technology Transfer Brief
|
|
46
|
+
NIST DCI: Data Collection Instruments
|
|
47
|
+
NIST EAB: Economic Analysis Brief
|
|
48
|
+
NIST Other: Other
|
|
49
|
+
CSRC White Paper: Cybersecurity Resource Center White Paper
|
|
50
|
+
CSRC Book: Cybersecurity Resource Center Book
|
|
51
|
+
CSRC Use Case: Cybersecurity Resource Center Use Case
|
|
52
|
+
CSRC Building Block: Cybersecurity Resource Center Building Block
|
|
53
|
+
JPCRD: Journal of Physical and Chemical Reference Data
|
|
54
|
+
JRES: Journal of Research of NIST
|
|
55
|
+
abbrev:
|
|
56
|
+
NIST AMS: Adv. Man. Ser
|
|
57
|
+
NIST BSS: Bldg. Sci. Ser.
|
|
58
|
+
NBS BSS: Bldg. Sci. Ser.
|
|
59
|
+
FIPS PUB: Federal Inf. Process. Stds.
|
|
60
|
+
NIST HB: Handb.
|
|
61
|
+
NBS HB: Handb.
|
|
62
|
+
NIST MN: Monogr.
|
|
63
|
+
NBS MN: Monogr.
|
|
64
|
+
NIST NCSTAR: Natl. Constr. Tm. Act Rpt.
|
|
65
|
+
NIST NSRDS: Natl. Stand. Ret. Data Ser.
|
|
66
|
+
NSRDS-NBS: Natl. Stand. Ret. Data Ser.
|
|
67
|
+
NIST PS: Prod. Stand.
|
|
68
|
+
NBS PS: Prod. Stand.
|
|
69
|
+
NIST SP: Spec. Publ.
|
|
70
|
+
NBS SP: Spec. Publ.
|
|
71
|
+
NIST TN: Tech. Note
|
|
72
|
+
NBS TN: Tech. Note
|
|
73
|
+
NIST DCI: Data Collect. Instr.
|
|
74
|
+
NIST Other: Other
|
|
75
|
+
CSRC White Paper: CSWP
|
|
76
|
+
CSRC Book: CSRC Book
|
|
77
|
+
CSRC Use Case: CSRC Use Case
|
|
78
|
+
CSRC Building Block: CSRC Building Block
|
|
79
|
+
JPCRD: J. Phys. & Chem. Ref. Data
|
|
80
|
+
JRES: J. Res. Natl. Inst. Stan.
|
|
81
|
+
mr:
|
|
82
|
+
NIST AMS: NIST.AMS
|
|
83
|
+
NIST BSS: NIST.BSS
|
|
84
|
+
NBS BSS: NBS.BSS
|
|
85
|
+
NBS BMS: NBS.BMS
|
|
86
|
+
NBS BRPD-CRPL-D: NBS.BRPD-CRPL-D
|
|
87
|
+
NBS BH: NBS.BH
|
|
88
|
+
NBS CRPL: NBS.CRPL
|
|
89
|
+
NBS CRPL-F-A: NBS.CRPL-F-A
|
|
90
|
+
NBS CRPL-F-B: NBS CRPL-F-B245
|
|
91
|
+
NBS IP: NBS.IP
|
|
92
|
+
NBS CIRC: NBS.CIRC
|
|
93
|
+
NBS CIS: NBS.CIS
|
|
94
|
+
NBS CS: NBS.CS
|
|
95
|
+
NBS CSM: NBS.CSM
|
|
96
|
+
FIPS PUB: NIST.FIPS
|
|
97
|
+
NISTGCR: NIST.GCR
|
|
98
|
+
NBS GCR: NBS.GCR
|
|
99
|
+
NIST HB: NIST.HB
|
|
100
|
+
NBS HB: NBS.HB
|
|
101
|
+
NBS HR: NBS.HR
|
|
102
|
+
NBS IRPL: NBS.IRPL
|
|
103
|
+
ITL Bulletin: NIST.ITLB
|
|
104
|
+
NIST LC: NIST.LCIRC
|
|
105
|
+
NBS LC: NBS.LCIRC
|
|
106
|
+
NIST MN: NIST.MN
|
|
107
|
+
NBS MN: NBS.MN
|
|
108
|
+
NBS MP: NBS.MP
|
|
109
|
+
NIST NCSTAR: NIST.NCSTAR
|
|
110
|
+
NIST NSRDS: NIST.NSRDS
|
|
111
|
+
NSRDS-NBS: NBS.NSRDS
|
|
112
|
+
NISTIR: NIST.IR
|
|
113
|
+
NBSIR: NBS.IR
|
|
114
|
+
NIST OWMWP: NIST.OWMWP
|
|
115
|
+
NBS PC: NBS.PC
|
|
116
|
+
NBS RPT: NBS.RPT
|
|
117
|
+
NIST PS: NIST.PS
|
|
118
|
+
NBS SIBS: NBS.SIBS
|
|
119
|
+
NBS PS: NBS.PS
|
|
120
|
+
NIST SP: NIST.SP
|
|
121
|
+
NBS SP: NBS.SP
|
|
122
|
+
NIST TN: NIST.TN
|
|
123
|
+
NBS TN: NBS.TN
|
|
124
|
+
NBS TIBM: NBS.TIBM
|
|
125
|
+
NIST TTB: NIST.TTB
|
|
126
|
+
NIST DCI: NIST.DCI
|
|
127
|
+
NIST EAB: NIST.EAB
|
|
128
|
+
NIST Other: NIST.O
|
|
129
|
+
CSRC White Paper: NIST.CSWP
|
|
130
|
+
CSRC Book: NIST.CSB
|
|
131
|
+
CSRC Use Case: NIST.CSUC
|
|
132
|
+
CSRC Building Block: NIST.CSBB
|
|
133
|
+
JPCRD: JPCRD
|
|
134
|
+
JRES: NIST.JRES
|
data/stages.yaml
ADDED
metadata
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: nist-pubid
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Ribose Inc.
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: exe
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2021-12-04 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: pry-byebug
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - "~>"
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '13.0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - "~>"
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '13.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: rspec
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '3.0'
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '3.0'
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: rubocop
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: 1.23.0
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - "~>"
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: 1.23.0
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: rubocop-performance
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: 1.12.0
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: 1.12.0
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: rubocop-rails
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: 2.12.4
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: 2.12.4
|
|
97
|
+
description: Extract and convert NIST machine-readable PubID.
|
|
98
|
+
email:
|
|
99
|
+
- open.source@ribose.com
|
|
100
|
+
executables: []
|
|
101
|
+
extensions: []
|
|
102
|
+
extra_rdoc_files:
|
|
103
|
+
- README.adoc
|
|
104
|
+
- LICENSE.txt
|
|
105
|
+
files:
|
|
106
|
+
- ".github/workflows/rake.yml"
|
|
107
|
+
- ".rspec"
|
|
108
|
+
- ".rubocop.yml"
|
|
109
|
+
- Gemfile
|
|
110
|
+
- Gemfile.lock
|
|
111
|
+
- LICENSE.txt
|
|
112
|
+
- README.adoc
|
|
113
|
+
- Rakefile
|
|
114
|
+
- lib/nist_pubid.rb
|
|
115
|
+
- lib/nist_pubid/document.rb
|
|
116
|
+
- lib/nist_pubid/publisher.rb
|
|
117
|
+
- lib/nist_pubid/serie.rb
|
|
118
|
+
- lib/nist_pubid/stage.rb
|
|
119
|
+
- lib/nist_pubid/version.rb
|
|
120
|
+
- nist_pubid.gemspec
|
|
121
|
+
- publishers.yaml
|
|
122
|
+
- series.yaml
|
|
123
|
+
- stages.yaml
|
|
124
|
+
homepage: http://github.com/metanorma/nist-pubid
|
|
125
|
+
licenses:
|
|
126
|
+
- BSD-2-Clause
|
|
127
|
+
metadata:
|
|
128
|
+
rubygems_mfa_required: 'true'
|
|
129
|
+
post_install_message:
|
|
130
|
+
rdoc_options: []
|
|
131
|
+
require_paths:
|
|
132
|
+
- lib
|
|
133
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
134
|
+
requirements:
|
|
135
|
+
- - ">="
|
|
136
|
+
- !ruby/object:Gem::Version
|
|
137
|
+
version: 2.5.0
|
|
138
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
|
+
requirements:
|
|
140
|
+
- - ">="
|
|
141
|
+
- !ruby/object:Gem::Version
|
|
142
|
+
version: '0'
|
|
143
|
+
requirements: []
|
|
144
|
+
rubyforge_project:
|
|
145
|
+
rubygems_version: 2.7.10
|
|
146
|
+
signing_key:
|
|
147
|
+
specification_version: 4
|
|
148
|
+
summary: Extract and convert NIST machine-readable PubID.
|
|
149
|
+
test_files: []
|