metanorma-iec 1.1.3 → 1.2.0
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/asciidoctor/iec/converter.rb +6 -15
- data/lib/asciidoctor/iec/isodoc.rng +12 -6
- data/lib/isodoc/iec/base_convert.rb +9 -41
- data/lib/isodoc/iec/html_convert.rb +2 -0
- data/lib/isodoc/iec/i18n-en.yaml +13 -0
- data/lib/isodoc/iec/i18n-fr.yaml +13 -0
- data/lib/isodoc/iec/i18n-zh-Hans.yaml +11 -0
- data/lib/isodoc/iec/i18n.rb +19 -0
- data/lib/isodoc/iec/init.rb +29 -0
- data/lib/isodoc/iec/presentation_xml_convert.rb +26 -1
- data/lib/isodoc/iec/word_convert.rb +3 -1
- data/lib/isodoc/iec/xref.rb +1 -1
- data/lib/metanorma/iec/version.rb +1 -1
- data/metanorma-iec.gemspec +2 -2
- data/spec/asciidoctor-iec/blocks_spec.rb +1 -1
- data/spec/asciidoctor-iec/cleanup_spec.rb +2 -2
- data/spec/asciidoctor-iec/iev_spec.rb +74 -1
- data/spec/asciidoctor-iec/inline_spec.rb +1 -1
- data/spec/asciidoctor-iec/section_spec.rb +17 -15
- data/spec/isodoc/blocks_spec.rb +66 -1
- data/spec/isodoc/i18n_spec.rb +296 -244
- data/spec/isodoc/iev_spec.rb +221 -14
- data/spec/isodoc/inline_spec.rb +97 -73
- data/spec/isodoc/iso_spec.rb +6 -0
- data/spec/isodoc/postproc_spec.rb +15 -29
- data/spec/isodoc/ref_spec.rb +129 -2
- data/spec/isodoc/section_spec.rb +112 -102
- data/spec/isodoc/terms_spec.rb +67 -53
- data/spec/metanorma/processor_spec.rb +2 -1
- metadata +8 -9
- data/lib/asciidoctor/iec/i18n-en.yaml +0 -12
- data/lib/asciidoctor/iec/i18n-fr.yaml +0 -11
- data/lib/asciidoctor/iec/i18n-zh-Hans.yaml +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e72099c93ed3258ff5f342d7e2904b9e5a4d34e00a0546a0f77e0993f2bf824f
|
4
|
+
data.tar.gz: d12c6b7259b187bf5718140ad47addf83b19281bcd34e1f1bcb80b8f695e39ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86a009528de61d607c417a99ca4090a829c26e86e2f91c9ab513b3800456d68a544c7fc18eaaeaac0fe0b85474c0fdd1f34d9aaf653ddc54a263ad98dae1e10d
|
7
|
+
data.tar.gz: 19fb4b433da961438c84da0cc0fbc697a7a7d684f37725a6b4f6ad2c193b5e38cefc524405c9071fcfa376e10f85f30101bb3060f2a742db9ecea3ea29c6e518
|
@@ -38,20 +38,6 @@ module Asciidoctor
|
|
38
38
|
File.join(File.dirname(__FILE__), "iec.rng"))
|
39
39
|
end
|
40
40
|
|
41
|
-
def load_yaml(lang, script)
|
42
|
-
y = if @i18nyaml then YAML.load_file(@i18nyaml)
|
43
|
-
elsif lang == "en"
|
44
|
-
YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
|
45
|
-
elsif lang == "fr"
|
46
|
-
YAML.load_file(File.join(File.dirname(__FILE__), "i18n-fr.yaml"))
|
47
|
-
elsif lang == "zh" && script == "Hans"
|
48
|
-
YAML.load_file(File.join(File.dirname(__FILE__), "i18n-zh-Hans.yaml"))
|
49
|
-
else
|
50
|
-
YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
|
51
|
-
end
|
52
|
-
super.merge(y)
|
53
|
-
end
|
54
|
-
|
55
41
|
def html_converter(node)
|
56
42
|
node.nil? ? IsoDoc::Iec::HtmlConvert.new({}) :
|
57
43
|
IsoDoc::Iec::HtmlConvert.new(html_extract_attributes(node))
|
@@ -75,7 +61,7 @@ module Asciidoctor
|
|
75
61
|
def norm_ref_preface(f)
|
76
62
|
return super unless @is_iev
|
77
63
|
f.at("./title").next =
|
78
|
-
"<p>#{@norm_empty_pref}</p>"
|
64
|
+
"<p>#{@i18n.norm_empty_pref}</p>"
|
79
65
|
end
|
80
66
|
|
81
67
|
def term_defs_boilerplate(div, source, term, preface, isodoc)
|
@@ -84,6 +70,11 @@ module Asciidoctor
|
|
84
70
|
|
85
71
|
def sts_converter(node)
|
86
72
|
end
|
73
|
+
|
74
|
+
def sections_names_cleanup(x)
|
75
|
+
super
|
76
|
+
@is_iev and replace_title(x, "//introduction", @i18n&.introduction_iev)
|
77
|
+
end
|
87
78
|
end
|
88
79
|
end
|
89
80
|
end
|
@@ -922,6 +922,9 @@
|
|
922
922
|
<optional>
|
923
923
|
<attribute name="script"/>
|
924
924
|
</optional>
|
925
|
+
<optional>
|
926
|
+
<attribute name="type"/>
|
927
|
+
</optional>
|
925
928
|
<optional>
|
926
929
|
<attribute name="obligation">
|
927
930
|
<choice>
|
@@ -961,9 +964,6 @@
|
|
961
964
|
</define>
|
962
965
|
<define name="content-subsection">
|
963
966
|
<element name="clause">
|
964
|
-
<optional>
|
965
|
-
<attribute name="type"/>
|
966
|
-
</optional>
|
967
967
|
<ref name="Content-Section"/>
|
968
968
|
</element>
|
969
969
|
</define>
|
@@ -992,6 +992,9 @@
|
|
992
992
|
</choice>
|
993
993
|
</attribute>
|
994
994
|
</optional>
|
995
|
+
<optional>
|
996
|
+
<attribute name="type"/>
|
997
|
+
</optional>
|
995
998
|
<optional>
|
996
999
|
<ref name="section-title"/>
|
997
1000
|
</optional>
|
@@ -1011,9 +1014,6 @@
|
|
1011
1014
|
</define>
|
1012
1015
|
<define name="clause">
|
1013
1016
|
<element name="clause">
|
1014
|
-
<optional>
|
1015
|
-
<attribute name="type"/>
|
1016
|
-
</optional>
|
1017
1017
|
<ref name="Clause-Section"/>
|
1018
1018
|
</element>
|
1019
1019
|
</define>
|
@@ -1042,6 +1042,9 @@
|
|
1042
1042
|
</choice>
|
1043
1043
|
</attribute>
|
1044
1044
|
</optional>
|
1045
|
+
<optional>
|
1046
|
+
<attribute name="type"/>
|
1047
|
+
</optional>
|
1045
1048
|
<optional>
|
1046
1049
|
<ref name="section-title"/>
|
1047
1050
|
</optional>
|
@@ -1180,6 +1183,9 @@
|
|
1180
1183
|
<optional>
|
1181
1184
|
<attribute name="script"/>
|
1182
1185
|
</optional>
|
1186
|
+
<optional>
|
1187
|
+
<attribute name="type"/>
|
1188
|
+
</optional>
|
1183
1189
|
<optional>
|
1184
1190
|
<attribute name="obligation">
|
1185
1191
|
<choice>
|
@@ -4,14 +4,6 @@ require "metanorma-iso"
|
|
4
4
|
module IsoDoc
|
5
5
|
module Iec
|
6
6
|
module BaseConvert
|
7
|
-
def metadata_init(lang, script, labels)
|
8
|
-
@meta = Metadata.new(lang, script, labels)
|
9
|
-
end
|
10
|
-
|
11
|
-
def xref_init(lang, script, klass, labels, options)
|
12
|
-
@xrefs = Xref.new(lang, script, klass, labels, options)
|
13
|
-
end
|
14
|
-
|
15
7
|
def boilerplate(node, out)
|
16
8
|
# processed in foreword instead
|
17
9
|
end
|
@@ -23,7 +15,7 @@ module IsoDoc
|
|
23
15
|
iec_orgname(out)
|
24
16
|
middle_title(out)
|
25
17
|
out.div **attr_code(id: f ? f["id"] : "") do |s|
|
26
|
-
s.h1(**{ class: "ForewordTitle" }) { |h1| h1 << @
|
18
|
+
s.h1(**{ class: "ForewordTitle" }) { |h1| h1 << @i18n.foreword }
|
27
19
|
@meta.get[:doctype] == "Amendment" or
|
28
20
|
s.div **attr_code(class: "boilerplate_legal") do |s1|
|
29
21
|
b&.elements&.each { |e| parse(e, s1) }
|
@@ -33,7 +25,7 @@ module IsoDoc
|
|
33
25
|
end
|
34
26
|
|
35
27
|
def iec_orgname(out)
|
36
|
-
out.p(**{ class: "zzSTDTitle1" }) { |p| p << @
|
28
|
+
out.p(**{ class: "zzSTDTitle1" }) { |p| p << @i18n.get["IEC"] }
|
37
29
|
out.p(**{ class: "zzSTDTitle1" }) { |p| p << "____________" }
|
38
30
|
out.p(**{ class: "zzSTDTitle1" }) { |p| p << " " }
|
39
31
|
end
|
@@ -60,39 +52,20 @@ module IsoDoc
|
|
60
52
|
out.p(**{ class: "zzSTDTitle1" }) { |p| p << " " }
|
61
53
|
end
|
62
54
|
|
63
|
-
|
64
|
-
y = if @i18nyaml then YAML.load_file(@i18nyaml)
|
65
|
-
elsif lang == "en"
|
66
|
-
YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
|
67
|
-
elsif lang == "fr"
|
68
|
-
YAML.load_file(File.join(File.dirname(__FILE__), "i18n-fr.yaml"))
|
69
|
-
elsif lang == "zh" && script == "Hans"
|
70
|
-
YAML.load_file(File.join(File.dirname(__FILE__),
|
71
|
-
"i18n-zh-Hans.yaml"))
|
72
|
-
else
|
73
|
-
YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
|
74
|
-
end
|
75
|
-
super.merge(y)
|
76
|
-
end
|
77
|
-
|
78
|
-
def convert1(docxml, filename, dir)
|
79
|
-
id = docxml&.at(ns("//bibdata/docnumber"))&.text
|
80
|
-
@is_iev = id == "60050"
|
81
|
-
super
|
82
|
-
end
|
83
|
-
|
55
|
+
=begin
|
84
56
|
def introduction(isoxml, out)
|
85
57
|
return super unless @is_iev
|
86
58
|
f = isoxml.at(ns("//introduction")) || return
|
87
59
|
title_attr = { class: "IntroTitle" }
|
88
60
|
page_break(out)
|
89
61
|
out.div **{ class: "Section3", id: f["id"] } do |div|
|
90
|
-
clause_name(nil, @
|
62
|
+
clause_name(nil, @i18n.get["introduction_iev"], div, title_attr)
|
91
63
|
f.elements.each do |e|
|
92
64
|
parse(e, div) unless e.name == "title"
|
93
65
|
end
|
94
66
|
end
|
95
67
|
end
|
68
|
+
=end
|
96
69
|
|
97
70
|
def bibliography(isoxml, out)
|
98
71
|
return super unless @is_iev
|
@@ -112,7 +85,6 @@ module IsoDoc
|
|
112
85
|
out.div **attr_code(id: node["id"]) do |div|
|
113
86
|
out.p(**{ class: "zzSTDTitle2" }) do |p|
|
114
87
|
p.b do |b|
|
115
|
-
b << "#{@xrefs.anchor(node['id'], :label)} "
|
116
88
|
node&.at(ns("./title"))&.children&.each { |c2| parse(c2, b) }
|
117
89
|
end
|
118
90
|
end
|
@@ -126,10 +98,10 @@ module IsoDoc
|
|
126
98
|
return super unless @is_iev
|
127
99
|
docxml.
|
128
100
|
gsub(%r{\s*\[/TERMREF\]\s*</p>\s*<p>\s*\[TERMREF\]}, "; ").
|
129
|
-
gsub(/\[TERMREF\]\s*/, l10n("#{@
|
130
|
-
gsub(/\s*\[MODIFICATION\]\s*\[\/TERMREF\]/, l10n(", #{@
|
101
|
+
gsub(/\[TERMREF\]\s*/, l10n("#{@i18n.source}: ")).
|
102
|
+
gsub(/\s*\[MODIFICATION\]\s*\[\/TERMREF\]/, l10n(", #{@i18n.modified} [/TERMREF]")).
|
131
103
|
gsub(/\s*\[\/TERMREF\]\s*/, l10n("")).
|
132
|
-
gsub(/\s*\[MODIFICATION\]/, l10n(", #{@
|
104
|
+
gsub(/\s*\[MODIFICATION\]/, l10n(", #{@i18n.modified} — "))
|
133
105
|
end
|
134
106
|
|
135
107
|
def set_termdomain(termdomain)
|
@@ -145,7 +117,7 @@ module IsoDoc
|
|
145
117
|
|
146
118
|
def deprecated_term_parse(node, out)
|
147
119
|
out.p **{ class: "DeprecatedTerms", style:"text-align:left;" } do |p|
|
148
|
-
p << l10n("#{@
|
120
|
+
p << l10n("#{@i18n.deprecated}: ")
|
149
121
|
node.children.each { |c| parse(c, p) }
|
150
122
|
term_suffix(node, p)
|
151
123
|
end
|
@@ -166,10 +138,6 @@ module IsoDoc
|
|
166
138
|
end
|
167
139
|
end
|
168
140
|
|
169
|
-
def clause_parse_title(node, div, c1, out)
|
170
|
-
IsoDoc::Common.instance_method(:clause_parse_title).bind(self).call(node, div, c1, out)
|
171
|
-
end
|
172
|
-
|
173
141
|
def biblio_list(f, div, biblio)
|
174
142
|
biblio = false
|
175
143
|
super
|
data/lib/isodoc/iec/i18n-en.yaml
CHANGED
@@ -2,4 +2,17 @@ introduction: INTRODUCTION
|
|
2
2
|
introduction_iev: INTRODUCTION<br/>Principles and rules followed
|
3
3
|
foreword: FOREWORD
|
4
4
|
IEC: INTERNATIONAL ELECTROTECHNICAL COMMISSION
|
5
|
+
formula: Equation
|
6
|
+
inequality: Inequality
|
5
7
|
section_iev: Section
|
8
|
+
term_def_boilerplate: |
|
9
|
+
<p>ISO and IEC maintain terminological databases for use in
|
10
|
+
standardization at the following addresses:</p>
|
11
|
+
|
12
|
+
<ul>
|
13
|
+
<li> <p>IEC Electropedia: available at
|
14
|
+
<link target="http://www.electropedia.org"/>
|
15
|
+
</p> </li>
|
16
|
+
<li> <p>ISO Online browsing platform: available at
|
17
|
+
<link target="http://www.iso.org/obp"/></p> </li>
|
18
|
+
</ul>
|
data/lib/isodoc/iec/i18n-fr.yaml
CHANGED
@@ -1,5 +1,18 @@
|
|
1
1
|
introduction: INTRODUCTION
|
2
2
|
introduction_iev: INTRODUCTION<br/>Principes d’établissement et règles suivies
|
3
3
|
foreword: AVANT-PROPOS
|
4
|
+
formula: Equation
|
5
|
+
inequality: Inégalité
|
4
6
|
IEC: COMMISSION ELECTROTECHNIQUE INTERNATIONALE
|
5
7
|
section_iev: Section
|
8
|
+
term_def_boilerplate: |
|
9
|
+
<p>L'ISO et l'IEC tiennent à jour des bases de données terminologiques
|
10
|
+
destinées à être utilisées en normalisation, consultables aux adresses
|
11
|
+
suivantes:</p>
|
12
|
+
<ul>
|
13
|
+
<li> <p>IEC Electropedia: disponible à l'adresse
|
14
|
+
<link target="http://www.electropedia.org"/>
|
15
|
+
</p> </li>
|
16
|
+
<li> <p>ISO Online browsing platform: disponible à l'adresse
|
17
|
+
<link target="http://www.iso.org/obp"/></p> </li>
|
18
|
+
</ul>
|
@@ -1,3 +1,14 @@
|
|
1
1
|
introduction: 引言
|
2
2
|
foreword: 前言
|
3
3
|
IEC: 国际电工委员会
|
4
|
+
formula: 方程式
|
5
|
+
inequality: 不等式
|
6
|
+
term_def_boilerplate: |
|
7
|
+
<p>ISO和IEC用于标准化的术语数据库地址如下:</p>
|
8
|
+
<ul>
|
9
|
+
<li> <p>IEC Electropedia:
|
10
|
+
位于<link target="http://www.electropedia.org"/>
|
11
|
+
</p> </li>
|
12
|
+
<li> <p>ISO在线浏览平台:
|
13
|
+
位于<link target="http://www.iso.org/obp"/></p></li>
|
14
|
+
</ul>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module IsoDoc
|
2
|
+
module Iec
|
3
|
+
class I18n < IsoDoc::Iso::I18n
|
4
|
+
def load_yaml1(lang, script)
|
5
|
+
y = if lang == "en"
|
6
|
+
YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
|
7
|
+
elsif lang == "fr"
|
8
|
+
YAML.load_file(File.join(File.dirname(__FILE__), "i18n-fr.yaml"))
|
9
|
+
elsif lang == "zh" && script == "Hans"
|
10
|
+
YAML.load_file(File.join(File.dirname(__FILE__), "i18n-zh-Hans.yaml"))
|
11
|
+
else
|
12
|
+
YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
|
13
|
+
end
|
14
|
+
super.merge(y)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "isodoc"
|
2
|
+
require_relative "metadata"
|
3
|
+
require_relative "xref"
|
4
|
+
require_relative "i18n"
|
5
|
+
|
6
|
+
module IsoDoc
|
7
|
+
module Iec
|
8
|
+
module Init
|
9
|
+
def metadata_init(lang, script, labels)
|
10
|
+
@meta = Metadata.new(lang, script, labels)
|
11
|
+
end
|
12
|
+
|
13
|
+
def xref_init(lang, script, klass, labels, options)
|
14
|
+
@xrefs = Xref.new(lang, script, HtmlConvert.new(language: lang, script: script), labels, options)
|
15
|
+
end
|
16
|
+
|
17
|
+
def i18n_init(lang, script, i18nyaml = nil)
|
18
|
+
@i18n = I18n.new(lang, script, i18nyaml || @i18nyaml)
|
19
|
+
end
|
20
|
+
|
21
|
+
def convert1(docxml, filename, dir)
|
22
|
+
id = docxml&.at(ns("//bibdata/docnumber"))&.text
|
23
|
+
@is_iev = id == "60050"
|
24
|
+
super
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
@@ -1,9 +1,34 @@
|
|
1
|
-
require_relative "
|
1
|
+
require_relative "init"
|
2
2
|
require "isodoc"
|
3
3
|
|
4
4
|
module IsoDoc
|
5
5
|
module Iec
|
6
6
|
class PresentationXMLConvert < IsoDoc::Iso::PresentationXMLConvert
|
7
|
+
def clause(docxml)
|
8
|
+
docxml.xpath(ns("//clause[not(ancestor::annex)] | "\
|
9
|
+
"//definitions | //references | "\
|
10
|
+
"//preface/introduction[clause]")).
|
11
|
+
each do |f|
|
12
|
+
clause1(f)
|
13
|
+
end
|
14
|
+
docxml.xpath(ns("//terms")).each do |f|
|
15
|
+
termclause1(f)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def termclause1(f)
|
20
|
+
return clause1(f) unless @is_iev
|
21
|
+
return if @suppressheadingnumbers || f["unnumbered"]
|
22
|
+
lbl = @xrefs.anchor(f['id'], :label, true) or return
|
23
|
+
prefix_name(f, " ", "#{lbl}#{clausedelim}", "title")
|
24
|
+
end
|
25
|
+
|
26
|
+
def clause1(f)
|
27
|
+
IsoDoc::PresentationXMLConvert.instance_method(:clause1).bind(self).
|
28
|
+
call(f)
|
29
|
+
end
|
30
|
+
|
31
|
+
include Init
|
7
32
|
end
|
8
33
|
end
|
9
34
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require "isodoc"
|
2
2
|
require "metanorma-iso"
|
3
3
|
require_relative "base_convert"
|
4
|
+
require_relative "init"
|
4
5
|
|
5
6
|
module IsoDoc
|
6
7
|
module Iec
|
@@ -171,7 +172,7 @@ module IsoDoc
|
|
171
172
|
div.p **attr_code(class: "formula") do |p|
|
172
173
|
insert_tab(div, 1)
|
173
174
|
parse(node.at(ns("./stem")), div)
|
174
|
-
lbl =
|
175
|
+
lbl = node&.at(ns("./name"))&.text
|
175
176
|
unless lbl.nil?
|
176
177
|
insert_tab(div, 1)
|
177
178
|
div << "(#{lbl})"
|
@@ -181,6 +182,7 @@ module IsoDoc
|
|
181
182
|
end
|
182
183
|
|
183
184
|
include BaseConvert
|
185
|
+
include Init
|
184
186
|
end
|
185
187
|
end
|
186
188
|
end
|
data/lib/isodoc/iec/xref.rb
CHANGED
@@ -38,7 +38,7 @@ module IsoDoc
|
|
38
38
|
def annex_name_lbl(clause, num)
|
39
39
|
obl = l10n("(#{@labels["inform_annex"]})")
|
40
40
|
obl = l10n("(#{@labels["norm_annex"]})") if clause["obligation"] == "normative"
|
41
|
-
l10n("<
|
41
|
+
l10n("<strong>#{@labels["annex"]} #{num}</strong><br/>#{obl}")
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
data/metanorma-iec.gemspec
CHANGED
@@ -28,8 +28,8 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
|
29
29
|
|
30
30
|
spec.add_dependency "ruby-jing"
|
31
|
-
spec.add_dependency "isodoc", "~> 1.
|
32
|
-
spec.add_dependency "metanorma-iso", "~> 1.
|
31
|
+
spec.add_dependency "isodoc", "~> 1.2.0"
|
32
|
+
spec.add_dependency "metanorma-iso", "~> 1.5.0"
|
33
33
|
|
34
34
|
spec.add_development_dependency "byebug"
|
35
35
|
spec.add_development_dependency "sassc", "2.4.0"
|
@@ -265,7 +265,7 @@ RSpec.describe Asciidoctor::Iec do
|
|
265
265
|
INPUT
|
266
266
|
#{BLANK_HDR}
|
267
267
|
<preface><foreword id="_" obligation="informative">
|
268
|
-
<title>
|
268
|
+
<title>FOREWORD</title>
|
269
269
|
<p id="_">This is a preamble</p>
|
270
270
|
</foreword></preface><sections>
|
271
271
|
<clause id="_" inline-header="false" obligation="normative">
|