metanorma-iso 2.6.0 → 2.6.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 +4 -4
- data/lib/isodoc/iso/i18n-de.yaml +94 -0
- data/lib/isodoc/iso/i18n.rb +7 -14
- data/lib/isodoc/iso/presentation_bibdata.rb +4 -6
- data/lib/isodoc/iso/presentation_xref.rb +25 -1
- data/lib/isodoc/iso/xref.rb +14 -14
- data/lib/metanorma/iso/biblio.rng +13 -0
- data/lib/metanorma/iso/boilerplate-fr.adoc +1 -1
- data/lib/metanorma/iso/boilerplate-ru.adoc +1 -1
- data/lib/metanorma/iso/boilerplate.adoc +1 -1
- data/lib/metanorma/iso/cleanup.rb +4 -3
- data/lib/metanorma/iso/front.rb +0 -1
- data/lib/metanorma/iso/front_id.rb +60 -18
- data/lib/metanorma/iso/isodoc.rng +11 -1
- data/lib/metanorma/iso/validate_style.rb +2 -2
- data/lib/metanorma/iso/version.rb +1 -1
- data/metanorma-iso.gemspec +2 -0
- metadata +31 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c067cd90bfc946d6c179fba63a5f83cc0f803aabf6b1ab44c3ae81bd3a948ed
|
4
|
+
data.tar.gz: 40effc5bdc15f1e0a869b39e211bb2a2355938f58a39e5e46b04358c35c44d38
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 714502eb99f9d9ad48d2b9c4c43c77b00ebcde0d632496a1cbcc8d3ee37345f60322203f8ed76c806b3b6d7a55da86ea44be693379c82e8f8687f3336ecc8bd1
|
7
|
+
data.tar.gz: f0e71370ae6cfa856e8c533fdb1f87ee61cd62deb20c083e6d9ce15a5b69b4300e10228b67d8cfdc6152119d334354fc8088b92133ecc7359e6082f8a54cbddd
|
@@ -0,0 +1,94 @@
|
|
1
|
+
term_def_boilerplate: |
|
2
|
+
<p>ISO und IEC unterhalten Terminologiedatenbanken zur Verwendung in
|
3
|
+
Standardisierung unter folgenden Adressen:</p>
|
4
|
+
|
5
|
+
<ul>
|
6
|
+
<li><p>Online-Browsing-Plattform: verfügbar unter
|
7
|
+
<link target="https://www.iso.org/obp"/></p></li>
|
8
|
+
<li><p>IEC Electropedia: verfügbar unter
|
9
|
+
<link target="https://www.electropedia.org"/></p></li>
|
10
|
+
</ul>
|
11
|
+
all_rights_reserved: Alle Rechte vorbehalten
|
12
|
+
reference_number: Referenznummer
|
13
|
+
price_based_on: Preis basierend auf % Seiten
|
14
|
+
descriptor: Deskriptor
|
15
|
+
under_preparation: In Vorbereitung. (Stadium zum Zeitpunkt der Veröffentlichung %).
|
16
|
+
withdrawn: Zurückgezogen.
|
17
|
+
cancelled_and_replaced: Abgebrochen und ersetzt durch %.
|
18
|
+
table_of_contents: Inhalt
|
19
|
+
date: datum
|
20
|
+
index: Index
|
21
|
+
see: Schau
|
22
|
+
see_also: siehe auch
|
23
|
+
secretariat: Sekretariat
|
24
|
+
edition: Ausgabe
|
25
|
+
termsrelated: Begriffe im Zusammenhang mit
|
26
|
+
availablefrom: Verfügbar ab
|
27
|
+
voting_begins_on: Die Abstimmung beginnt am
|
28
|
+
voting_terminates_on: Die Abstimmung endet am
|
29
|
+
corrected_version: Korrigierte Version
|
30
|
+
multiple_and: "%1 und %2"
|
31
|
+
multiple_or: "%1 oder %2"
|
32
|
+
doctype_dict:
|
33
|
+
international-standard: Internationaler Standard
|
34
|
+
technical-specification: Technische Spezifikation
|
35
|
+
technical-report: Technischer Bericht
|
36
|
+
publicly-available-specification: Öffentlich verfügbare Spezifikation
|
37
|
+
international-workshop-agreement: Internationales Workshop-Vereinbarung
|
38
|
+
guide: Leitfaden
|
39
|
+
amendment: Änderung
|
40
|
+
technical-corrigendum: Technische Berichtigung
|
41
|
+
directive: Richtlinie
|
42
|
+
stage_dict:
|
43
|
+
"00": Vorläufiges Arbeitselement
|
44
|
+
"10": Neuer Arbeitselementvorschlag
|
45
|
+
"20": Arbeitsentwurf
|
46
|
+
"30": Ausschussentwurf
|
47
|
+
"40":
|
48
|
+
international-standard: Entwurf des internationalen Standards
|
49
|
+
technical-specification: Entwurf der technischen Spezifikation
|
50
|
+
technical-report: Entwurf des technischen Berichts
|
51
|
+
publicly-available-specification: Entwurf der öffentlich verfügbaren Spezifikation
|
52
|
+
international-workshop-agreement: Entwurf der internationalen Workshop-Vereinbarung
|
53
|
+
guide: Leitfadenentwurf
|
54
|
+
amendment: Änderungsentwurf
|
55
|
+
technical-corrigendum: Entwurf der technischen Berichtigung
|
56
|
+
directive: Richtlinienentwurf
|
57
|
+
"50":
|
58
|
+
international-standard: Endgültiger Entwurf des internationalen Standards
|
59
|
+
technical-specification: Endgültiger Entwurf der technischen Spezifikation
|
60
|
+
technical-report: Endgültiger Entwurf des technischen Berichts
|
61
|
+
publicly-available-specification: Endgültiger Entwurf der öffentlich verfügbaren Spezifikation
|
62
|
+
international-workshop-agreement: Endgültiger Entwurf der internationalen Workshop-Vereinbarung
|
63
|
+
guide: Endgültiger Leitfadenentwurf
|
64
|
+
amendment: Endgültiger Änderungsentwurf
|
65
|
+
technical-corrigendum: Endgültiger Entwurf der technischen Berichtigung
|
66
|
+
directive: Endgültiger Richtlinienentwurf
|
67
|
+
"60":
|
68
|
+
international-standard: Internationaler Standard
|
69
|
+
technical-specification: Technische Spezifikation
|
70
|
+
technical-report: Technischer Bericht
|
71
|
+
publicly-available-specification: Öffentlich verfügbare Spezifikation
|
72
|
+
international-workshop-agreement: Internationales Workshop-Vereinbarung
|
73
|
+
guide: Leitfaden
|
74
|
+
amendment: Änderung
|
75
|
+
technical-corrigendum: Technische Berichtigung
|
76
|
+
directive: Richtlinie
|
77
|
+
"90": Rezension
|
78
|
+
"95": Rückzug
|
79
|
+
locality:
|
80
|
+
appendix: Anhang
|
81
|
+
requirements:
|
82
|
+
modspec:
|
83
|
+
provision: Bereitstellung
|
84
|
+
conformancetest: Konformitätstest
|
85
|
+
inflection:
|
86
|
+
Bereitstellung:
|
87
|
+
sg: Bereitstellung
|
88
|
+
pl: Bereitstellungen
|
89
|
+
Aussage:
|
90
|
+
sg: Aussage
|
91
|
+
pl: Aussagen
|
92
|
+
Deskriptor:
|
93
|
+
sg: Deskriptor
|
94
|
+
pl: Deskriptoren
|
data/lib/isodoc/iso/i18n.rb
CHANGED
@@ -1,23 +1,16 @@
|
|
1
1
|
module IsoDoc
|
2
2
|
module Iso
|
3
3
|
class I18n < IsoDoc::I18n
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
# name iso_load_file instead of load_file
|
5
|
+
# so that child flavours cannot inherit it and override it
|
6
|
+
def iso_load_file(fname)
|
7
|
+
f = File.join(File.dirname(__FILE__), fname)
|
8
|
+
File.exist?(f) ? YAML.load_file(f) : {}
|
7
9
|
end
|
8
10
|
|
9
|
-
# all gems inheriting from ISO need to be represented here,
|
10
|
-
# even if the file is empty
|
11
|
-
# e.g. JA for metanorma-jis
|
12
11
|
def load_yaml1(lang, script)
|
13
|
-
y =
|
14
|
-
|
15
|
-
elsif lang == "ru" then load_file("i18n-ru.yaml")
|
16
|
-
elsif lang == "ja" then load_file("i18n-ja.yaml")
|
17
|
-
elsif lang == "zh" && script == "Hans"
|
18
|
-
load_file("i18n-zh-Hans.yaml")
|
19
|
-
else load_file("i18n-en.yaml")
|
20
|
-
end
|
12
|
+
y = iso_load_file("i18n-#{yaml_lang(lang, script)}.yaml")
|
13
|
+
y.empty? and return iso_load_file("i18n-en.yaml").deep_merge(super)
|
21
14
|
super.deep_merge(y)
|
22
15
|
end
|
23
16
|
end
|
@@ -8,11 +8,9 @@ module IsoDoc
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def warning_for_missing_metadata(docxml)
|
11
|
-
|
12
|
-
|
11
|
+
@meta.get[:unpublished] or return
|
13
12
|
ret = warning_for_missing_metadata_create(docxml)
|
14
|
-
|
15
|
-
|
13
|
+
ret.empty? and return
|
16
14
|
warning_for_missing_metadata_post(docxml, ret)
|
17
15
|
end
|
18
16
|
|
@@ -73,10 +71,10 @@ module IsoDoc
|
|
73
71
|
def bibdata_i18n_stage(bib, stage, type, lang: @lang, i18n: @i18n)
|
74
72
|
return unless stage
|
75
73
|
|
76
|
-
i18n.get
|
74
|
+
i18n.get.dig("stage_dict", stage.text).is_a?(Hash) or
|
77
75
|
return hash_translate(bib, i18n.get["stage_dict"],
|
78
76
|
"./status/stage", lang)
|
79
|
-
stagetype = i18n.get
|
77
|
+
stagetype = i18n.get.dig("stage_dict", stage.text, type&.text) and
|
80
78
|
tag_translate(stage, lang, stagetype)
|
81
79
|
end
|
82
80
|
end
|
@@ -105,6 +105,7 @@ module IsoDoc
|
|
105
105
|
locality_span_wrap(ret, opt[:type])
|
106
106
|
end
|
107
107
|
|
108
|
+
=begin
|
108
109
|
def prefix_container(container, linkend, node, target)
|
109
110
|
delim = ", "
|
110
111
|
ref = if @xrefs.anchor(target, :type) == "listitem" &&
|
@@ -118,6 +119,29 @@ module IsoDoc
|
|
118
119
|
ref and linkend = ref + delim + linkend
|
119
120
|
l10n(linkend)
|
120
121
|
end
|
122
|
+
=end
|
123
|
+
|
124
|
+
# 7 a) : Clause 7 a), but Clause 7 List 1 a)
|
125
|
+
def prefix_container(container, linkend, node, target)
|
126
|
+
prefix_container?(container, node) or return linkend
|
127
|
+
container_container = @xrefs.anchor(container, :container, false)
|
128
|
+
nested_xref, container_label =
|
129
|
+
prefix_container_template(container, node, target)
|
130
|
+
container_label = prefix_container(container_container,
|
131
|
+
container_label, node, target)
|
132
|
+
l10n(nested_xref.sub("%1", container_label).sub("%2", linkend))
|
133
|
+
end
|
134
|
+
|
135
|
+
def prefix_container_template(container, node, target)
|
136
|
+
nested_xref = @i18n.nested_xref
|
137
|
+
container_label = anchor_xref(node, container)
|
138
|
+
if @xrefs.anchor(target, :type) == "listitem" &&
|
139
|
+
!@xrefs.anchor(target, :refer_list)
|
140
|
+
nested_xref = "%1 %2"
|
141
|
+
container_label = @xrefs.anchor(container, :label)
|
142
|
+
end
|
143
|
+
[nested_xref, container_label]
|
144
|
+
end
|
121
145
|
|
122
146
|
def expand_citeas(text)
|
123
147
|
std_docid_semantic(super)
|
@@ -125,7 +149,7 @@ module IsoDoc
|
|
125
149
|
|
126
150
|
def anchor_value(id)
|
127
151
|
locality_span_wrap(super, @xrefs.anchor(id, :subtype) ||
|
128
|
-
|
152
|
+
@xrefs.anchor(id, :type))
|
129
153
|
end
|
130
154
|
|
131
155
|
def anchor_linkend1(node)
|
data/lib/isodoc/iso/xref.rb
CHANGED
@@ -57,10 +57,10 @@ module IsoDoc
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
def figure_anchor(elem, sublabel, label, klass)
|
60
|
+
def figure_anchor(elem, sublabel, label, klass, container: false)
|
61
61
|
@anchors[elem["id"]] = anchor_struct(
|
62
|
-
"#{label}#{sublabel}",
|
63
|
-
|
62
|
+
"#{label}#{sublabel}", container ? elem : nil,
|
63
|
+
@labels[klass] || klass.capitalize, klass, elem["unnumbered"]
|
64
64
|
)
|
65
65
|
!sublabel.empty? && elem["unnumbered"] != "true" and
|
66
66
|
@anchors[elem["id"]][:label] = sublabel
|
@@ -71,18 +71,18 @@ module IsoDoc
|
|
71
71
|
" #{(subfignum + 96).chr})"
|
72
72
|
end
|
73
73
|
|
74
|
-
def sequential_figure_names(clause)
|
74
|
+
def sequential_figure_names(clause, container: false)
|
75
75
|
j = 0
|
76
76
|
clause.xpath(ns(FIGURE_NO_CLASS)).noblank
|
77
77
|
.each_with_object(IsoDoc::XrefGen::Counter.new) do |t, c|
|
78
78
|
j = subfigure_increment(j, c, t)
|
79
79
|
sublabel = subfigure_label(j)
|
80
|
-
figure_anchor(t, sublabel, c.print, "figure")
|
80
|
+
figure_anchor(t, sublabel, c.print, "figure", container: container)
|
81
81
|
end
|
82
|
-
sequential_figure_class_names(clause)
|
82
|
+
sequential_figure_class_names(clause, container: container)
|
83
83
|
end
|
84
84
|
|
85
|
-
def sequential_figure_class_names(clause)
|
85
|
+
def sequential_figure_class_names(clause, container: false)
|
86
86
|
c = {}
|
87
87
|
j = 0
|
88
88
|
clause.xpath(ns(".//figure[@class][not(@class = 'pseudocode')]"))
|
@@ -90,7 +90,7 @@ module IsoDoc
|
|
90
90
|
c[t["class"]] ||= IsoDoc::XrefGen::Counter.new
|
91
91
|
j = subfigure_increment(j, c[t["class"]], t)
|
92
92
|
sublabel = j.zero? ? nil : "#{(j + 96).chr})"
|
93
|
-
figure_anchor(t, sublabel, c.print, t["class"])
|
93
|
+
figure_anchor(t, sublabel, c.print, t["class"], container: container)
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
@@ -154,23 +154,23 @@ module IsoDoc
|
|
154
154
|
true
|
155
155
|
end
|
156
156
|
|
157
|
-
def sequential_table_names(clause)
|
157
|
+
def sequential_table_names(clause, container: false)
|
158
158
|
super
|
159
|
-
modspec_table_xrefs(clause) if @anchors_previous
|
159
|
+
modspec_table_xrefs(clause, container: container) if @anchors_previous
|
160
160
|
end
|
161
161
|
|
162
|
-
def modspec_table_xrefs(clause)
|
162
|
+
def modspec_table_xrefs(clause, container: false)
|
163
163
|
clause.xpath(ns(".//table[@class = 'modspec']")).noblank.each do |t|
|
164
164
|
n = @anchors[t["id"]][:xref]
|
165
165
|
xref_to_modspec(t["id"], n) or next
|
166
|
-
modspec_table_components_xrefs(t, n)
|
166
|
+
modspec_table_components_xrefs(t, n, container: container)
|
167
167
|
end
|
168
168
|
end
|
169
169
|
|
170
|
-
def modspec_table_components_xrefs(table, table_label)
|
170
|
+
def modspec_table_components_xrefs(table, table_label, container: false)
|
171
171
|
table.xpath(ns(".//tr[@id]")).each do |tr|
|
172
172
|
xref_to_modspec(tr["id"], table_label) or next
|
173
|
-
@anchors[tr["id"]].delete(:container)
|
173
|
+
container or @anchors[tr["id"]].delete(:container)
|
174
174
|
end
|
175
175
|
end
|
176
176
|
|
@@ -374,6 +374,16 @@
|
|
374
374
|
<ref name="image"/>
|
375
375
|
</element>
|
376
376
|
</define>
|
377
|
+
<define name="depiction">
|
378
|
+
<element name="depiction">
|
379
|
+
<optional>
|
380
|
+
<attribute name="scope"/>
|
381
|
+
</optional>
|
382
|
+
<zeroOrMore>
|
383
|
+
<ref name="image"/>
|
384
|
+
</zeroOrMore>
|
385
|
+
</element>
|
386
|
+
</define>
|
377
387
|
<define name="NameWithVariants">
|
378
388
|
<element name="primary">
|
379
389
|
<ref name="LocalizedString"/>
|
@@ -760,6 +770,9 @@
|
|
760
770
|
<optional>
|
761
771
|
<ref name="validity"/>
|
762
772
|
</optional>
|
773
|
+
<optional>
|
774
|
+
<ref name="depiction"/>
|
775
|
+
</optional>
|
763
776
|
</define>
|
764
777
|
<define name="ReducedBibliographicItem">
|
765
778
|
<optional>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
=== {% if stage_int >= 40 %}DOCUMENT PROTÉGÉ PAR COPYRIGHT{%else%}{blank}{%endif%}
|
3
3
|
|
4
4
|
[[boilerplate-year]]
|
5
|
-
© span:std_publisher:[{{ agency }}
|
5
|
+
© span:std_publisher:[{{ agency }} ]span:std_docNumber[{{ docyear }}]
|
6
6
|
|
7
7
|
[[boilerplate-message]]
|
8
8
|
Droits de reproduction réservés. Sauf indication contraire, ou requise dans le cadre de sa mise en œuvre,
|
@@ -3,7 +3,7 @@
|
|
3
3
|
=== {% if stage_int >= 40 %}ДОКУМЕНТ, ОХРАНЯЕМЫЙ АВТОРСКИМ ПРАВОМ{% else %}{blank}{% endif %}
|
4
4
|
|
5
5
|
[[boilerplate-year]]
|
6
|
-
© span:std_publisher[{{ agency }}
|
6
|
+
© span:std_publisher[{{ agency }} ]span:std_docNumber[{{ docyear }}]
|
7
7
|
|
8
8
|
[[boilerplate-message]]
|
9
9
|
Все права защищены. Если иначе не определено или не требуется в контексте его реализации, никакая часть этой публикации не может быть воспроизведена или использована иначе в любой форме или каким-либо образом, электронным или механическим, включая фотокопирование, или публикацию в Интернете или интранете, без предварительного письменного разрешения. Разрешение может быть запрошено ISO по адресу, указанному ниже, или у органа — члена ISO страны запрашивающего.
|
@@ -3,7 +3,7 @@
|
|
3
3
|
=== {% if stage_int >= 40 %}COPYRIGHT PROTECTED DOCUMENT{% else %}{blank}{% endif %}
|
4
4
|
|
5
5
|
[[boilerplate-year]]
|
6
|
-
© span:std_publisher[{{ agency }}
|
6
|
+
© span:std_publisher[{{ agency }} ]span:std_docNumber[{{ docyear }}]
|
7
7
|
|
8
8
|
[[boilerplate-message]]
|
9
9
|
All rights reserved. Unless otherwise specified, or required in the context of its implementation,
|
@@ -137,9 +137,10 @@ module Metanorma
|
|
137
137
|
xmldoc.xpath("//bibitem[not(./ancestor::bibitem)]" \
|
138
138
|
"[not(note[@type = 'Unpublished-Status'])]").each do |b|
|
139
139
|
pub_class(b) > 2 and next
|
140
|
-
((s = b.at("./status/stage")) &&
|
141
|
-
|
142
|
-
insert_unpub_note(b, @i18n.under_preparation
|
140
|
+
((s = b.at("./status/stage")) && s.text.match?(/\d/) &&
|
141
|
+
(s.text.to_i < 60)) or next
|
142
|
+
insert_unpub_note(b, @i18n.under_preparation
|
143
|
+
.sub("%", b.at("docidentifier").text))
|
143
144
|
end
|
144
145
|
end
|
145
146
|
|
data/lib/metanorma/iso/front.rb
CHANGED
@@ -6,6 +6,8 @@ require "pathname"
|
|
6
6
|
require "open-uri"
|
7
7
|
require "twitter_cldr"
|
8
8
|
require "pubid-iso"
|
9
|
+
require "pubid-cen"
|
10
|
+
require "pubid-iec"
|
9
11
|
|
10
12
|
module Metanorma
|
11
13
|
module ISO
|
@@ -36,8 +38,8 @@ module Metanorma
|
|
36
38
|
end
|
37
39
|
|
38
40
|
def iso_id(node, xml)
|
39
|
-
(!@amd && node.attr("docnumber")
|
40
|
-
return
|
41
|
+
(!@amd && node.attr("docnumber") || node.attr("adopted-from")) ||
|
42
|
+
(@amd && node.attr("updates")) or return
|
41
43
|
params = iso_id_params(node)
|
42
44
|
iso_id_out(xml, params, true)
|
43
45
|
end
|
@@ -45,13 +47,39 @@ module Metanorma
|
|
45
47
|
def iso_id_params(node)
|
46
48
|
params = iso_id_params_core(node)
|
47
49
|
params2 = iso_id_params_add(node)
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
50
|
+
num = node.attr("docnumber")
|
51
|
+
orig = node.attr("updates") || node.attr("adopted-from")
|
52
|
+
/^\d+$/.match?(num) or orig ||= num
|
53
|
+
orig and orig_id = orig_id_parse(orig)
|
52
54
|
iso_id_params_resolve(params, params2, node, orig_id)
|
53
55
|
end
|
54
56
|
|
57
|
+
def cen?(str)
|
58
|
+
/^C?EN/.match?(str)
|
59
|
+
end
|
60
|
+
|
61
|
+
def orig_id_parse(orig)
|
62
|
+
cen?(orig) and return Pubid::Cen::Identifier::Base.parse(orig)
|
63
|
+
ret = case orig
|
64
|
+
when /^ISO/ then Pubid::Iso::Identifier::Base.parse(orig)
|
65
|
+
when /^IEC/ then Pubid::Iec::Identifier::Base.parse(orig)
|
66
|
+
else base_pubid::Base.parse(orig)
|
67
|
+
end
|
68
|
+
ret.edition ||= 1
|
69
|
+
ret
|
70
|
+
end
|
71
|
+
|
72
|
+
def base_pubid
|
73
|
+
Pubid::Iso::Identifier
|
74
|
+
end
|
75
|
+
|
76
|
+
def pubid_select(params)
|
77
|
+
if cen?(Array(params[:publisher])&.first || "")
|
78
|
+
Pubid::Cen::Identifier
|
79
|
+
else base_pubid
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
55
83
|
# unpublished is for internal use
|
56
84
|
def iso_id_params_core(node)
|
57
85
|
pub = (node.attr("publisher") || "ISO").split(/[;,]/)
|
@@ -72,7 +100,7 @@ module Metanorma
|
|
72
100
|
node.attr("corrigendum-number"),
|
73
101
|
year: iso_id_year(node),
|
74
102
|
iteration: node.attr("iteration") }.compact
|
75
|
-
if stage
|
103
|
+
if stage && !cen?(node.attr("publisher"))
|
76
104
|
ret[:stage] = stage
|
77
105
|
ret[:stage] == "60.00" and ret[:stage] = :PRF
|
78
106
|
end
|
@@ -92,30 +120,45 @@ module Metanorma
|
|
92
120
|
def iso_id_params_resolve(params, params2, node, orig_id)
|
93
121
|
if orig_id && (node.attr("amendment-number") ||
|
94
122
|
node.attr("corrigendum-number"))
|
95
|
-
params.delete(
|
96
|
-
params.delete(:part)
|
123
|
+
%i(unpublished part).each { |x| params.delete(x) }
|
97
124
|
params2[:base] = orig_id
|
125
|
+
elsif orig_id &&
|
126
|
+
![Pubid::Iso::Identifier,
|
127
|
+
Pubid::Iec::Identifier].include?(pubid_select(params))
|
128
|
+
params2[:adopted] = orig_id
|
98
129
|
end
|
99
130
|
params.merge!(params2)
|
100
131
|
params
|
101
132
|
end
|
102
133
|
|
103
134
|
def iso_id_out(xml, params, with_prf)
|
135
|
+
cen?(params[:publisher]) and return cen_id_out(xml, params)
|
136
|
+
iso_id_out_common(xml, params, with_prf)
|
137
|
+
@amd and return
|
138
|
+
iso_id_out_non_amd(xml, params, with_prf)
|
139
|
+
rescue StandardError => e
|
140
|
+
clean_abort("Document identifier: #{e}", xml)
|
141
|
+
end
|
142
|
+
|
143
|
+
def cen_id_out(xml, params)
|
144
|
+
xml.docidentifier iso_id_default(params).to_s, **attr_code(type: "CEN")
|
145
|
+
end
|
146
|
+
|
147
|
+
def iso_id_out_common(xml, params, with_prf)
|
104
148
|
xml.docidentifier iso_id_default(params).to_s(with_prf: with_prf),
|
105
149
|
**attr_code(type: "ISO")
|
106
150
|
xml.docidentifier iso_id_reference(params)
|
107
151
|
.to_s(format: :ref_num_short, with_prf: with_prf),
|
108
152
|
**attr_code(type: "iso-reference")
|
109
153
|
xml.docidentifier iso_id_reference(params).urn, **attr_code(type: "URN")
|
110
|
-
|
154
|
+
end
|
111
155
|
|
156
|
+
def iso_id_out_non_amd(xml, params, with_prf)
|
112
157
|
xml.docidentifier iso_id_undated(params).to_s(with_prf: with_prf),
|
113
158
|
**attr_code(type: "iso-undated")
|
114
159
|
xml.docidentifier iso_id_with_lang(params)
|
115
160
|
.to_s(format: :ref_num_long, with_prf: with_prf),
|
116
161
|
**attr_code(type: "iso-with-lang")
|
117
|
-
rescue StandardError => e
|
118
|
-
clean_abort("Document identifier: #{e}", xml)
|
119
162
|
end
|
120
163
|
|
121
164
|
def iso_id_default(params)
|
@@ -127,7 +170,7 @@ module Metanorma
|
|
127
170
|
else params_nolang
|
128
171
|
end
|
129
172
|
params1.delete(:unpublished)
|
130
|
-
|
173
|
+
pubid_select(params1).create(**params1)
|
131
174
|
end
|
132
175
|
|
133
176
|
def iso_id_undated(params)
|
@@ -136,7 +179,7 @@ module Metanorma
|
|
136
179
|
hs.delete(:year)
|
137
180
|
hs.delete(:unpublished)
|
138
181
|
end
|
139
|
-
|
182
|
+
pubid_select(params2).create(**params2)
|
140
183
|
end
|
141
184
|
|
142
185
|
def iso_id_with_lang(params)
|
@@ -146,17 +189,16 @@ module Metanorma
|
|
146
189
|
end
|
147
190
|
else params end
|
148
191
|
params1.delete(:unpublished)
|
149
|
-
|
192
|
+
pubid_select(params1).create(**params1)
|
150
193
|
end
|
151
194
|
|
152
195
|
def iso_id_reference(params)
|
153
196
|
params1 = params.dup.tap { |hs| hs.delete(:unpublished) }
|
154
|
-
|
197
|
+
pubid_select(params1).create(**params1)
|
155
198
|
end
|
156
199
|
|
157
200
|
def structured_id(node, xml)
|
158
|
-
|
159
|
-
|
201
|
+
node.attr("docnumber") or return
|
160
202
|
part, subpart = node&.attr("partnumber")&.split("-")
|
161
203
|
xml.structuredidentifier do |i|
|
162
204
|
i.project_number(node.attr("docnumber"), **attr_code(
|
@@ -17,7 +17,7 @@
|
|
17
17
|
these elements; we just want one namespace for any child grammars
|
18
18
|
of this.
|
19
19
|
-->
|
20
|
-
<!-- VERSION v1.2.
|
20
|
+
<!-- VERSION v1.2.9 -->
|
21
21
|
<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
22
22
|
<include href="reqt.rng"/>
|
23
23
|
<include href="basicdoc.rng">
|
@@ -1958,6 +1958,16 @@
|
|
1958
1958
|
<data type="boolean"/>
|
1959
1959
|
</attribute>
|
1960
1960
|
</optional>
|
1961
|
+
<optional>
|
1962
|
+
<attribute name="type">
|
1963
|
+
<choice>
|
1964
|
+
<value>letter</value>
|
1965
|
+
<value>symbol</value>
|
1966
|
+
<value>formula</value>
|
1967
|
+
<value>equation</value>
|
1968
|
+
</choice>
|
1969
|
+
</attribute>
|
1970
|
+
</optional>
|
1961
1971
|
<element name="name">
|
1962
1972
|
<oneOrMore>
|
1963
1973
|
<choice>
|
@@ -123,11 +123,11 @@ module Metanorma
|
|
123
123
|
# https://www.iso.org/ISO-house-style.html#iso-hs-s-text-r-n-numbers
|
124
124
|
def style_number(node, text)
|
125
125
|
style_number_grouping(node, text)
|
126
|
-
style_regex(
|
126
|
+
style_regex(/(?:^|\p{Zs})(?<num>[0-9]+\.[0-9]+)(?!\.[0-9])/i,
|
127
127
|
"possible decimal point", node, text)
|
128
128
|
@lang == "en" and style_regex(/\b(?<num>billions?)\b/i,
|
129
129
|
"ambiguous number", node, text)
|
130
|
-
style_regex(/(?:^|\
|
130
|
+
style_regex(/(?:^|\p{Zs})(?<num>-[0-9][0-9,.]*)/i,
|
131
131
|
"hyphen instead of minus sign U+2212", node, text)
|
132
132
|
end
|
133
133
|
|
data/metanorma-iso.gemspec
CHANGED
@@ -35,6 +35,8 @@ Gem::Specification.new do |spec|
|
|
35
35
|
spec.add_dependency "metanorma-standoc", "~> 2.7.0"
|
36
36
|
spec.add_dependency "mnconvert", "~> 1.14"
|
37
37
|
spec.add_dependency "pubid-iso", "~> 0.6.0"
|
38
|
+
spec.add_dependency "pubid-cen"
|
39
|
+
spec.add_dependency "pubid-iec"
|
38
40
|
spec.add_dependency "ruby-jing"
|
39
41
|
spec.add_dependency "tokenizer", "~> 0.3.0"
|
40
42
|
spec.add_dependency "twitter_cldr"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-iso
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.6.
|
4
|
+
version: 2.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: metanorma-standoc
|
@@ -52,6 +52,34 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.6.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pubid-cen
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: pubid-iec
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: ruby-jing
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -338,6 +366,7 @@ files:
|
|
338
366
|
- lib/isodoc/iso/html/wordstyle.css
|
339
367
|
- lib/isodoc/iso/html/wordstyle.scss
|
340
368
|
- lib/isodoc/iso/html_convert.rb
|
369
|
+
- lib/isodoc/iso/i18n-de.yaml
|
341
370
|
- lib/isodoc/iso/i18n-en.yaml
|
342
371
|
- lib/isodoc/iso/i18n-fr.yaml
|
343
372
|
- lib/isodoc/iso/i18n-ja.yaml
|