metanorma-nist 1.0.5 → 1.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f758b64420197c62c491fb933d62fe0dde91fec5d9955d83e830a474160bfed0
4
- data.tar.gz: 5b37fe1074ed0d62720af6e88dd08ffca4cb0c1f6eb1aeb256653e53c56c632e
3
+ metadata.gz: fdfccf7f80188c5fdb7b176e3f2e1ec2533218d878ffc2e8798a4ad3b9cd70f7
4
+ data.tar.gz: d98180fcdd728e854e47df4f8ca07503c77de570ac3c7f41ab21c6ae0b516e87
5
5
  SHA512:
6
- metadata.gz: 3e4d2b04a0ded879553796a90c5a88ca0b7537020b5b59c0b94823c504e0c8594ac35d5fa299efd454014b8a25c1a891b10c5e0a11847224e83e7f693780b264
7
- data.tar.gz: 62c4a654c0d35e6e39104be8627d260650e2392e1ce3b61871747ccced61c38cd38a83d05e37073d82c7de320eeeb9b52096fa4ec7bcfaa00f38bf1c57d77af1
6
+ metadata.gz: 25231b4da1777b011ef5ac9eb9aa2c9691227882ca37fa59cc034a4bbf5a22b077bb59b512e1673488d7a497b36c304d508e8e65b45fd0deb5b3aa069304a9bc
7
+ data.tar.gz: ba4697d24bb857a5468dd1dc02e4b0bf83cb8ea296c6fc08b205c855d8b9b4dd000a08bcba3f7871ce06ab5919dfeb758148f862464fbbc78ed6124b6d26aa7b
@@ -6,15 +6,23 @@ on:
6
6
  push:
7
7
  branches: [ master ]
8
8
  pull_request:
9
+ paths-ignore:
10
+ - .github/workflows/ubuntu.yml
11
+ - .github/workflows/windows.yml
9
12
 
10
13
  jobs:
11
14
  test-macos:
12
15
  name: Test on Ruby ${{ matrix.ruby }} macOS
13
16
  runs-on: macos-latest
17
+ continue-on-error: ${{ matrix.experimental }}
14
18
  strategy:
15
19
  fail-fast: false
16
20
  matrix:
17
21
  ruby: [ '2.6', '2.5', '2.4' ]
22
+ experimental: [false]
23
+ include:
24
+ - ruby: '2.7'
25
+ experimental: true
18
26
  steps:
19
27
  - uses: actions/checkout@master
20
28
  - name: Use Ruby
@@ -26,13 +34,6 @@ jobs:
26
34
  run: |
27
35
  sudo gem install bundler --force
28
36
  bundle install --jobs 4 --retry 3
29
- - name: Use Node
30
- uses: actions/setup-node@v1
31
- with:
32
- node-version: '8'
33
- - name: Install Puppeteer
34
- run: |
35
- npm install -g puppeteer
36
37
  - name: Run specs
37
38
  run: |
38
39
  bundle exec rake
@@ -5,16 +5,26 @@ name: ubuntu
5
5
  on:
6
6
  push:
7
7
  branches: [ master ]
8
+ tags:
9
+ - '*'
8
10
  pull_request:
11
+ paths-ignore:
12
+ - .github/workflows/macos.yml
13
+ - .github/workflows/windows.yml
9
14
 
10
15
  jobs:
11
16
  test-linux:
12
17
  name: Test on Ruby ${{ matrix.ruby }} Ubuntu
13
18
  runs-on: ubuntu-latest
19
+ continue-on-error: ${{ matrix.experimental }}
14
20
  strategy:
15
21
  fail-fast: false
16
22
  matrix:
17
23
  ruby: [ '2.6', '2.5', '2.4' ]
24
+ experimental: [false]
25
+ include:
26
+ - ruby: '2.7'
27
+ experimental: true
18
28
  steps:
19
29
  - uses: actions/checkout@master
20
30
  - name: Use Ruby
@@ -26,18 +36,11 @@ jobs:
26
36
  run: |
27
37
  gem install bundler
28
38
  bundle install --jobs 4 --retry 3
29
- - name: Use Node
30
- uses: actions/setup-node@v1
31
- with:
32
- node-version: '8'
33
- - name: Install Puppeteer
34
- run: |
35
- npm install -g puppeteer
36
39
  - name: Run specs
37
40
  run: |
38
41
  bundle exec rake
39
42
  - name: Trigger dependent repositories
40
- if: github.ref == 'refs/heads/master'
43
+ if: github.ref == 'refs/heads/master' && matrix.ruby == '2.6'
41
44
  env:
42
45
  GH_USERNAME: ${{ secrets.PAT_USERNAME }}
43
46
  GH_ACCESS_TOKEN: ${{ secrets.PAT_TOKEN }}
@@ -46,5 +49,5 @@ jobs:
46
49
  [[ -f ".github/workflows/dependent_repos.env" ]] && source .github/workflows/dependent_repos.env
47
50
  for repo in $DEPENDENT_REPOS
48
51
  do
49
- sh trigger-gh-actions.sh $ORGANISATION $repo $GH_USERNAME $GH_ACCESS_TOKEN $GITHUB_REPOSITORY
52
+ sh trigger-gh-actions.sh $ORGANISATION $repo $GH_USERNAME $GH_ACCESS_TOKEN $GITHUB_REPOSITORY "{ \"ref\": \"${GITHUB_REF}\" }"
50
53
  done
@@ -6,15 +6,23 @@ on:
6
6
  push:
7
7
  branches: [ master ]
8
8
  pull_request:
9
+ paths-ignore:
10
+ - .github/workflows/macos.yml
11
+ - .github/workflows/ubuntu.yml
9
12
 
10
13
  jobs:
11
14
  test-windows:
12
15
  name: Test on Ruby ${{ matrix.ruby }} Windows
13
16
  runs-on: windows-latest
17
+ continue-on-error: ${{ matrix.experimental }}
14
18
  strategy:
15
19
  fail-fast: false
16
20
  matrix:
17
21
  ruby: [ '2.6', '2.5', '2.4' ]
22
+ experimental: [false]
23
+ include:
24
+ - ruby: '2.7'
25
+ experimental: true
18
26
  steps:
19
27
  - uses: actions/checkout@master
20
28
  - name: Use Ruby
@@ -27,15 +35,7 @@ jobs:
27
35
  run: |
28
36
  gem install bundler
29
37
  bundle config --local path vendor/bundle
30
- bundle update
31
38
  bundle install --jobs 4 --retry 3
32
- - name: Use Node
33
- uses: actions/setup-node@v1
34
- with:
35
- node-version: '8'
36
- - name: Install Puppeteer
37
- run: |
38
- npm install -g puppeteer
39
39
  - name: Run specs
40
40
  run: |
41
41
  bundle exec rake
@@ -223,6 +223,10 @@ Used to indicate the date of errata releases.
223
223
  The date at which a draft is circulated. Displayed on the cover page of drafts.
224
224
  MANDATORY FOR DRAFTS.
225
225
 
226
+ `:language:`::
227
+ Two-letter code (ISO 639-1) of the language the document is written in. Defaults to `en`.
228
+ If multiple languages are used in the document, comma-delimited; e.g. `en,fr`.
229
+
226
230
  === NIST-specific attributes
227
231
 
228
232
  The following document attributes are specific to this document class:
@@ -239,11 +243,29 @@ Added to authority statement as document contact. Use line breaks (in Asciidocto
239
243
  `:revision:`:: The document revision; e.g. `1` (Revision 1). Will be stored in Metanorma XML
240
244
  under the `<edition>` tag, with the prefix `Revision `.
241
245
 
246
+ `:version:`:: The document version, when titled as version. Will be stored in Metanorma XML
247
+ under the `<edition>` tag, with the prefix `Version `.
248
+
242
249
  `:volume:`::
243
250
  The number of the volume of a standard. Is ignored if a precomposed
244
251
  document identifier (`:docidentifier:`) is supplied.
245
252
  Is prefixed with "Volume" or "Vol." in display.
246
253
 
254
+ `:part:`::
255
+ The part number of a standard. Is only used to generate machine readable NIST identifier (nist-mr).
256
+
257
+ `:section:`::
258
+ The section number of a standard. Is only used to generate machine readable NIST identifier (nist-mr).
259
+
260
+ `:supplement:`::
261
+ The supplement number of a standard. Is only used to generate machine readable NIST identifier (nist-mr).
262
+
263
+ `:index:`::
264
+ The index number of a standard. Is only used to generate machine readable NIST identifier (nist-mr).
265
+
266
+ `:update:`::
267
+ The update number of a standard. Is only used to generate machine readable NIST identifier (nist-mr).
268
+
247
269
  `:title-main:`:: The title of the document.
248
270
  `:title-sub:`:: The subtitle of the document.
249
271
 
@@ -88,7 +88,7 @@
88
88
  <text/>
89
89
  </element>
90
90
  </define>
91
- <define name="LocalizedString">
91
+ <define name="LocalizedString1">
92
92
  <optional>
93
93
  <!-- multiple languages and scripts possible: comma delimit them if so -->
94
94
  <attribute name="language"/>
@@ -98,6 +98,16 @@
98
98
  </optional>
99
99
  <text/>
100
100
  </define>
101
+ <define name="LocalizedString">
102
+ <choice>
103
+ <ref name="LocalizedString1"/>
104
+ <oneOrMore>
105
+ <element name="variant">
106
+ <ref name="LocalizedString1"/>
107
+ </element>
108
+ </oneOrMore>
109
+ </choice>
110
+ </define>
101
111
  <!--
102
112
  Unlike UML, change type to format: type is overloaded
103
113
  Would be need if plain were default value and could omit the attribute
@@ -121,7 +131,7 @@
121
131
  </optional>
122
132
  <ref name="LocalizedStringOrXsAny"/>
123
133
  </define>
124
- <define name="LocalizedStringOrXsAny">
134
+ <define name="LocalizedStringOrXsAny1">
125
135
  <optional>
126
136
  <!-- multiple languages and scripts possible: comma delimit them if so -->
127
137
  <attribute name="language"/>
@@ -136,6 +146,16 @@
136
146
  </choice>
137
147
  </oneOrMore>
138
148
  </define>
149
+ <define name="LocalizedStringOrXsAny">
150
+ <choice>
151
+ <ref name="LocalizedStringOrXsAny1"/>
152
+ <oneOrMore>
153
+ <element name="variant">
154
+ <ref name="LocalizedStringOrXsAny1"/>
155
+ </element>
156
+ </oneOrMore>
157
+ </choice>
158
+ </define>
139
159
  <define name="contributor">
140
160
  <element name="contributor">
141
161
  <zeroOrMore>
@@ -512,7 +532,7 @@
512
532
  </define>
513
533
  <define name="LocalityType">
514
534
  <data type="string">
515
- <param name="pattern">section|clause|part|paragraph|chapter|page|whole|table|annex|figure|note|list|example|volume|issue|time|locality:[a-zA-Z0-9_]+</param>
535
+ <param name="pattern">section|clause|part|paragraph|chapter|page|whole|table|annex|figure|note|list|example|volume|issue|time|anchor|locality:[a-zA-Z0-9_]+</param>
516
536
  </data>
517
537
  </define>
518
538
  <define name="referenceFrom">
@@ -641,9 +661,9 @@
641
661
  <optional>
642
662
  <ref name="status"/>
643
663
  </optional>
644
- <optional>
664
+ <zeroOrMore>
645
665
  <ref name="copyright"/>
646
- </optional>
666
+ </zeroOrMore>
647
667
  <zeroOrMore>
648
668
  <ref name="docrelation"/>
649
669
  </zeroOrMore>
@@ -767,6 +787,8 @@
767
787
  <value>unchanged</value>
768
788
  <value>circulated</value>
769
789
  <value>adapted</value>
790
+ <value>vote-started</value>
791
+ <value>vote-ended</value>
770
792
  </choice>
771
793
  </define>
772
794
  <define name="bdate">
@@ -999,7 +1021,17 @@
999
1021
  <optional>
1000
1022
  <ref name="to"/>
1001
1023
  </optional>
1002
- <ref name="owner"/>
1024
+ <oneOrMore>
1025
+ <ref name="owner"/>
1026
+ </oneOrMore>
1027
+ <optional>
1028
+ <ref name="copyright_scope"/>
1029
+ </optional>
1030
+ </element>
1031
+ </define>
1032
+ <define name="copyright_scope">
1033
+ <element name="scope">
1034
+ <text/>
1003
1035
  </element>
1004
1036
  </define>
1005
1037
  <define name="from">
@@ -1019,38 +1051,63 @@
1019
1051
  </define>
1020
1052
  <define name="DocRelationType">
1021
1053
  <choice>
1022
- <value>obsoletes</value>
1023
- <value>obsoletedBy</value>
1024
- <value>supersedes</value>
1025
- <value>supersededBy</value>
1026
- <value>updates</value>
1027
- <value>updatedBy</value>
1028
- <value>complements</value>
1029
- <value>derivedFrom</value>
1030
- <value>translatedFrom</value>
1031
- <value>hasTranslation</value>
1032
- <value>adoptedFrom</value>
1033
- <value>equivalent</value>
1034
- <value>identical</value>
1035
- <value>nonequivalent</value>
1036
- <value>includedIn</value>
1037
1054
  <value>includes</value>
1038
- <value>instance</value>
1039
- <value>instanceOf</value>
1040
- <value>partOf</value>
1055
+ <value>includedIn</value>
1041
1056
  <value>hasPart</value>
1042
- <value>hasDraft</value>
1043
- <value>draftOf</value>
1057
+ <value>partOf</value>
1044
1058
  <value>merges</value>
1059
+ <value>mergedInto</value>
1045
1060
  <value>splits</value>
1046
- <value>amends</value>
1047
- <value>amendedBy</value>
1048
- <value>corrects</value>
1049
- <value>correctedBy</value>
1050
- <value>revises</value>
1051
- <value>revisedBy</value>
1061
+ <value>splitInto</value>
1062
+ <value>instance</value>
1063
+ <value>hasInstance</value>
1064
+ <value>exemplarOf</value>
1065
+ <value>hasExemplar</value>
1066
+ <value>manifestationOf</value>
1067
+ <value>hasManifestation</value>
1068
+ <value>reproductionOf</value>
1069
+ <value>hasReproduction</value>
1070
+ <value>reprintOf</value>
1071
+ <value>hasReprint</value>
1072
+ <value>expressionOf</value>
1073
+ <value>hasExpression</value>
1074
+ <value>translatedFrom</value>
1075
+ <value>hasTranslation</value>
1076
+ <value>arrangementOf</value>
1077
+ <value>hasArrangement</value>
1078
+ <value>abridgementOf</value>
1079
+ <value>hasAbridgement</value>
1080
+ <value>annotationOf</value>
1081
+ <value>hasAnnotation</value>
1082
+ <value>draftOf</value>
1083
+ <value>hasDraft</value>
1084
+ <value>editionOf</value>
1085
+ <value>hasEdition</value>
1086
+ <value>updates</value>
1087
+ <value>updatedBy</value>
1088
+ <value>derivedFrom</value>
1089
+ <value>derives</value>
1052
1090
  <value>describes</value>
1053
1091
  <value>describedBy</value>
1092
+ <value>catalogues</value>
1093
+ <value>cataloguedBy</value>
1094
+ <value>hasSuccessor</value>
1095
+ <value>successorOf</value>
1096
+ <value>adaptedFrom</value>
1097
+ <value>hasAdaptation</value>
1098
+ <value>adoptedFrom</value>
1099
+ <value>adoptedAs</value>
1100
+ <value>reviewOf</value>
1101
+ <value>hasReview</value>
1102
+ <value>commentaryOf</value>
1103
+ <value>hasCommentary</value>
1104
+ <value>related</value>
1105
+ <value>complements</value>
1106
+ <value>complementOf</value>
1107
+ <value>obsoletes</value>
1108
+ <value>obsoletedBy</value>
1109
+ <value>cited</value>
1110
+ <value>isCitedIn</value>
1054
1111
  </choice>
1055
1112
  </define>
1056
1113
  <define name="docrelation">
@@ -100,12 +100,12 @@ module Asciidoctor
100
100
  super
101
101
  ret = get_all_nist_refs(docxml)
102
102
  tallies = ret.inject(Hash.new(0)) do |memo, (k, v)|
103
- memo[v[:trunc]] += 1
103
+ memo[v[:trunc]] += 1 unless v[:trunc].nil?
104
104
  memo
105
105
  end
106
106
  ret.each do |k, v|
107
107
  tallies[v[:trunc]] == 1 and @anchors[k][:xref] = v[:trunc]
108
- @anchors[k][:xref].sub!(/^NIST /, "")
108
+ @anchors&.dig(k, :xref)&.sub!(/^NIST /, "")
109
109
  end
110
110
  end
111
111
 
@@ -149,10 +149,11 @@ module Asciidoctor
149
149
  key = /^\[\d+\]$/.match(metaid) ? ( @citation_order[metaid] % "09%d" ) : metaid
150
150
  elsif metaid = bib&.at("./docidentifier[@type = 'NIST']")&.text
151
151
  key = metaid.sub(/-(\d+)/) {|m| sprintf "-%09d", ($1.to_i) }
152
- else
153
- metaid = bib&.at("./docidentifier[not(@type = 'DOI' or "\
152
+ elsif metaid = bib&.at("./docidentifier[not(@type = 'DOI' or "\
154
153
  "@type = 'metanorma' or @type = 'ISSN' or @type = 'ISBN')]")&.text
155
154
  key = metaid.sub(/-(\d+)/) {|m| sprintf "-%09d", ($1.to_i) }
155
+ else # no usable docid
156
+ key = "000000000" + bib["id"]
156
157
  end
157
158
  title = bib&.at("./title[@type = 'main']")&.text ||
158
159
  bib&.at("./title")&.text || bib&.at("./formattedref")&.text
@@ -107,7 +107,7 @@ module Asciidoctor
107
107
  File.open(filename, "w:UTF-8") { |f| f.write(ret) }
108
108
  html_converter(node).convert filename unless node.attr("nodoc")
109
109
  word_converter(node).convert filename unless node.attr("nodoc")
110
- pdf_converter(node).convert filename unless node.attr("nodoc")
110
+ pdf_converter(node)&.convert filename unless node.attr("nodoc")
111
111
  end
112
112
  @log.write(@localdir + @filename + ".err") unless @novalid
113
113
  @files_to_delete.each { |f| FileUtils.rm f }
@@ -151,36 +151,12 @@ module Asciidoctor
151
151
  end
152
152
  end
153
153
 
154
- def section(node)
155
- a = section_attributes(node)
156
- noko do |xml|
157
- case sectiontype(node)
158
- #when "normative references" then norm_ref_parse(a, xml, node)
159
- when "terms and definitions"
160
- if node.attr("style") == "appendix" && node.level == 1
161
- @term_def = true
162
- terms_annex_parse(a, xml, node)
163
- @term_def = false
164
- else
165
- clause_parse(a, xml, node)
166
- end
167
- when "acknowledgements"
168
- acknowledgements_parse(a, xml, node)
169
- else
170
- if @term_def
171
- term_def_subclause_parse(a, xml, node)
172
- elsif @biblio then bibliography_parse(a, xml, node)
173
- elsif node.attr("style") == "bibliography"
174
- bibliography_parse(a, xml, node)
175
- elsif node.attr("style") == "abstract"
176
- abstract_parse(a, xml, node)
177
- elsif node.attr("style") == "appendix" && node.level == 1
178
- annex_parse(a, xml, node)
179
- else
180
- clause_parse(a, xml, node)
181
- end
182
- end
183
- end.join("\n")
154
+ def term_def_parse(attrs, xml, node, toplevel)
155
+ if node.attr("style") == "appendix" && node.level == 1
156
+ terms_annex_parse(attrs, xml, node)
157
+ else
158
+ clause_parse(attrs, xml, node)
159
+ end
184
160
  end
185
161
 
186
162
  def bibliography_parse(a, xml, node)
@@ -236,6 +212,7 @@ module Asciidoctor
236
212
  end
237
213
 
238
214
  def pdf_converter(node)
215
+ return nil if node.attr("no-pdf")
239
216
  IsoDoc::NIST::PdfConvert.new(html_extract_attributes(node))
240
217
  end
241
218
  end