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 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: []