metanorma-iec 1.1.3 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- 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">
|