nist-pubid 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
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
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in relaton_nist.gemspec
4
+ gemspec
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,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "bundler/gem_tasks"
4
+ require "rspec/core/rake_task"
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task default: :spec
@@ -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
@@ -0,0 +1,3 @@
1
+ module NistPubid
2
+ VERSION = "0.1.1".freeze
3
+ end
data/lib/nist_pubid.rb ADDED
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "yaml"
4
+ require "nist_pubid/document"
5
+ require "nist_pubid/publisher"
6
+ require "nist_pubid/serie"
7
+ require "nist_pubid/stage"
@@ -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
@@ -0,0 +1,6 @@
1
+ long:
2
+ NIST: National Institute of Standards and Technology
3
+ NBS: National Bureau of Standards
4
+ abbrev:
5
+ NIST: Natl. Inst. Stand. Technol.
6
+ NBS: Natl. Bur. Stand.
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
@@ -0,0 +1,5 @@
1
+ IPD: Initial Public Draft
2
+ 2PD: Second Public Draft
3
+ FPD: Final Public Draft
4
+ WD: Work-in-Progress Draft
5
+ PreD: Preliminary Draft
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: []