metanorma-iso 2.7.5 → 2.7.6
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/index.rb +4 -6
- data/lib/isodoc/iso/iso.amendment.xsl +270 -81
- data/lib/isodoc/iso/iso.international-standard.xsl +270 -81
- data/lib/isodoc/iso/presentation_xml_convert.rb +5 -0
- data/lib/isodoc/iso/presentation_xref.rb +4 -19
- data/lib/isodoc/iso/word_convert.rb +10 -6
- data/lib/isodoc/iso/word_dis_cleanup.rb +1 -1
- data/lib/isodoc/iso/word_dis_convert.rb +0 -2
- data/lib/isodoc/iso/xref.rb +2 -4
- data/lib/isodoc/iso/xref_section.rb +12 -2
- data/lib/metanorma/iso/base.rb +9 -1
- data/lib/metanorma/iso/validate.rb +0 -8
- data/lib/metanorma/iso/validate_style.rb +17 -21
- data/lib/metanorma/iso/version.rb +1 -1
- data/metanorma-iso.gemspec +1 -3
- metadata +3 -31
@@ -105,22 +105,6 @@ module IsoDoc
|
|
105
105
|
locality_span_wrap(ret, opt[:type])
|
106
106
|
end
|
107
107
|
|
108
|
-
=begin
|
109
|
-
def prefix_container(container, linkend, node, target)
|
110
|
-
delim = ", "
|
111
|
-
ref = if @xrefs.anchor(target, :type) == "listitem" &&
|
112
|
-
!@xrefs.anchor(target, :refer_list)
|
113
|
-
delim = " "
|
114
|
-
@xrefs.anchor(container, :label)
|
115
|
-
# 7 a) : Clause 7 a), but Clause 7 List 1 a)
|
116
|
-
else anchor_xref(node, container)
|
117
|
-
end
|
118
|
-
|
119
|
-
ref and linkend = ref + delim + linkend
|
120
|
-
l10n(linkend)
|
121
|
-
end
|
122
|
-
=end
|
123
|
-
|
124
108
|
# 7 a) : Clause 7 a), but Clause 7 List 1 a)
|
125
109
|
def prefix_container(container, linkend, node, target)
|
126
110
|
prefix_container?(container, node) or return linkend
|
@@ -135,10 +119,11 @@ module IsoDoc
|
|
135
119
|
def prefix_container_template(container, node, target)
|
136
120
|
nested_xref = @i18n.nested_xref
|
137
121
|
container_label = anchor_xref(node, container)
|
138
|
-
if @xrefs.anchor(target, :type) == "listitem"
|
139
|
-
!@xrefs.anchor(target, :refer_list)
|
122
|
+
if @xrefs.anchor(target, :type) == "listitem"
|
123
|
+
if !@xrefs.anchor(target, :refer_list)
|
140
124
|
nested_xref = "%1 %2"
|
141
|
-
n = @xrefs.anchor(container, :label) and container_label = n
|
125
|
+
# n = @xrefs.anchor(container, :label) and container_label = n
|
126
|
+
end
|
142
127
|
end
|
143
128
|
[nested_xref, container_label]
|
144
129
|
end
|
@@ -52,18 +52,22 @@ module IsoDoc
|
|
52
52
|
|
53
53
|
def convert(input_filename, file = nil, debug = false,
|
54
54
|
output_filename = nil)
|
55
|
-
|
56
|
-
|
57
|
-
stage = docxml&.at(ns("//bibdata/status/stage"))&.text
|
58
|
-
if @dis &&
|
59
|
-
((/^[4569].$/.match?(stage) && @wordtemplate != "simple") ||
|
60
|
-
(/^[0-3].$/.match?(stage) && @wordtemplate == "dis"))
|
55
|
+
if @dis && use_dis?(input_filename, file)
|
56
|
+
swap_renderer(self, @dis, file, input_filename, debug)
|
61
57
|
@dis.convert(input_filename, file, debug, output_filename)
|
62
58
|
else
|
63
59
|
super
|
64
60
|
end
|
65
61
|
end
|
66
62
|
|
63
|
+
def use_dis?(input_filename, file)
|
64
|
+
file ||= File.read(input_filename, encoding: "utf-8")
|
65
|
+
stage = Nokogiri::XML(file, &:huge)
|
66
|
+
.at(ns("//bibdata/status/stage"))&.text
|
67
|
+
(/^[4569].$/.match?(stage) && @wordtemplate != "simple") ||
|
68
|
+
(/^[0-3].$/.match?(stage) && @wordtemplate == "dis")
|
69
|
+
end
|
70
|
+
|
67
71
|
def make_body(xml, docxml)
|
68
72
|
body_attr = { lang: "EN-US", link: "blue", vlink: "#954F72" }
|
69
73
|
xml.body **body_attr do |body|
|
data/lib/isodoc/iso/xref.rb
CHANGED
@@ -140,12 +140,10 @@ module IsoDoc
|
|
140
140
|
|
141
141
|
# all li in the ol in lists are consecutively numbered through @start
|
142
142
|
def single_ol_for_xrefs?(lists)
|
143
|
-
|
144
|
-
|
143
|
+
lists.size == 1 and return true
|
145
144
|
start = 0
|
146
145
|
lists.each_with_index do |l, i|
|
147
|
-
|
148
|
-
|
146
|
+
i.zero? and next
|
149
147
|
start += lists[i - 1].xpath(ns("./li")).size
|
150
148
|
return false unless l["start"]&.to_i == start + 1
|
151
149
|
end
|
@@ -58,9 +58,19 @@ module IsoDoc
|
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
+
def annex_name_anchors1(clause, num, level)
|
62
|
+
ret = { label: num, level: level, subtype: "annex" }
|
63
|
+
ret2 = if level == 2
|
64
|
+
{ xref: l10n("#{@labels['clause']} #{num}"),
|
65
|
+
elem: @labels["clause"] }
|
66
|
+
else
|
67
|
+
{ xref: num }
|
68
|
+
end
|
69
|
+
@anchors[clause["id"]] = ret.merge(ret2)
|
70
|
+
end
|
71
|
+
|
61
72
|
def annex_names1(clause, num, level)
|
62
|
-
|
63
|
-
subtype: "annex" }
|
73
|
+
annex_name_anchors1(clause, num, level)
|
64
74
|
i = Counter.new(0, prefix: "#{num}.")
|
65
75
|
clause.xpath(ns("./clause | ./references")).each do |c|
|
66
76
|
annex_names1(c, i.increment(c).print, level + 1)
|
data/lib/metanorma/iso/base.rb
CHANGED
@@ -79,8 +79,16 @@ module Metanorma
|
|
79
79
|
name
|
80
80
|
end
|
81
81
|
|
82
|
+
DOCUMENT_SCHEMES = [1951, 1972, 1979, 1987, 1989, 2012, 2013, 2024].freeze
|
83
|
+
|
82
84
|
def document_scheme(node)
|
83
|
-
node.attr("document-scheme")
|
85
|
+
r = node.attr("document-scheme") and return r
|
86
|
+
r = node.attr("copyright-year")&.to_i or return "2024"
|
87
|
+
DOCUMENT_SCHEMES.each_index do |i|
|
88
|
+
i.zero? and next
|
89
|
+
r < DOCUMENT_SCHEMES[i] and return DOCUMENT_SCHEMES[i - 1].to_s
|
90
|
+
end
|
91
|
+
"2024"
|
84
92
|
end
|
85
93
|
|
86
94
|
def outputs(node, ret)
|
@@ -125,13 +125,6 @@ module Metanorma
|
|
125
125
|
"#{@doctype} is not a recognised document type")
|
126
126
|
end
|
127
127
|
|
128
|
-
def script_validate(xmldoc)
|
129
|
-
script = xmldoc&.at("//bibdata/script")&.text
|
130
|
-
%w(Cyrl Latn).include?(script) or
|
131
|
-
@log.add("Document Attributes", nil,
|
132
|
-
"#{script} is not a recognised script")
|
133
|
-
end
|
134
|
-
|
135
128
|
def iteration_validate(xmldoc)
|
136
129
|
iteration = xmldoc&.at("//bibdata/status/iteration")&.text or return
|
137
130
|
/^\d+/.match(iteration) or
|
@@ -141,7 +134,6 @@ module Metanorma
|
|
141
134
|
|
142
135
|
def bibdata_validate(doc)
|
143
136
|
doctype_validate(doc)
|
144
|
-
script_validate(doc)
|
145
137
|
iteration_validate(doc)
|
146
138
|
end
|
147
139
|
|
@@ -6,10 +6,10 @@ module Metanorma
|
|
6
6
|
module ISO
|
7
7
|
class Converter < Standoc::Converter
|
8
8
|
def extract_text(node)
|
9
|
-
return ""
|
10
|
-
|
9
|
+
node.nil? and return ""
|
11
10
|
node1 = Nokogiri::XML.fragment(node.to_s)
|
12
|
-
node1.xpath("
|
11
|
+
node1.xpath(".//link | .//locality | .//localityStack | .//stem")
|
12
|
+
.each(&:remove)
|
13
13
|
ret = ""
|
14
14
|
node1.traverse { |x| ret += x.text if x.text? }
|
15
15
|
HTMLEntities.new.decode(ret)
|
@@ -17,30 +17,26 @@ module Metanorma
|
|
17
17
|
|
18
18
|
# ISO/IEC DIR 2, 12.2
|
19
19
|
def foreword_style(node)
|
20
|
-
|
21
|
-
|
20
|
+
@novalid and return
|
22
21
|
style_no_guidance(node, extract_text(node), "Foreword")
|
23
22
|
end
|
24
23
|
|
25
24
|
# ISO/IEC DIR 2, 14.2
|
26
25
|
def scope_style(node)
|
27
|
-
|
28
|
-
|
26
|
+
@novalid and return
|
29
27
|
style_no_guidance(node, extract_text(node), "Scope")
|
30
28
|
end
|
31
29
|
|
32
30
|
# ISO/IEC DIR 2, 13.2
|
33
31
|
def introduction_style(node)
|
34
|
-
|
35
|
-
|
32
|
+
@novalid and return
|
36
33
|
r = requirement_check(extract_text(node))
|
37
34
|
style_warning(node, "Introduction may contain requirement", r) if r
|
38
35
|
end
|
39
36
|
|
40
37
|
# ISO/IEC DIR 2, 16.5.6
|
41
38
|
def definition_style(node)
|
42
|
-
|
43
|
-
|
39
|
+
@novalid and return
|
44
40
|
r = requirement_check(extract_text(node))
|
45
41
|
style_warning(node, "Definition may contain requirement", r) if r
|
46
42
|
end
|
@@ -48,24 +44,21 @@ module Metanorma
|
|
48
44
|
# ISO/IEC DIR 2, 16.5.7
|
49
45
|
# ISO/IEC DIR 2, 25.5
|
50
46
|
def example_style(node)
|
51
|
-
|
52
|
-
|
47
|
+
@novalid and return
|
53
48
|
style_no_guidance(node, extract_text(node), "Example")
|
54
49
|
style(node, extract_text(node))
|
55
50
|
end
|
56
51
|
|
57
52
|
# ISO/IEC DIR 2, 24.5
|
58
53
|
def note_style(node)
|
59
|
-
|
60
|
-
|
54
|
+
@novalid and return
|
61
55
|
style_no_guidance(node, extract_text(node), "Note")
|
62
56
|
style(node, extract_text(node))
|
63
57
|
end
|
64
58
|
|
65
59
|
# ISO/IEC DIR 2, 26.5
|
66
60
|
def footnote_style(node)
|
67
|
-
|
68
|
-
|
61
|
+
@novalid and return
|
69
62
|
style_no_guidance(node, extract_text(node), "Footnote")
|
70
63
|
style(node, extract_text(node))
|
71
64
|
end
|
@@ -91,7 +84,7 @@ module Metanorma
|
|
91
84
|
|
92
85
|
def style(node, text)
|
93
86
|
@novalid and return
|
94
|
-
style_number(node, text)
|
87
|
+
@novalid_number or style_number(node, text)
|
95
88
|
style_percent(node, text)
|
96
89
|
style_abbrev(node, text)
|
97
90
|
style_units(node, text)
|
@@ -116,6 +109,8 @@ module Metanorma
|
|
116
109
|
def style_ambig_words(node, text)
|
117
110
|
r = ambig_words_check(text) and
|
118
111
|
style_warning(node, "may contain ambiguous provision", r)
|
112
|
+
@lang == "en" and style_regex(/\b(?<num>billions?)\b/i,
|
113
|
+
"ambiguous number", node, text)
|
119
114
|
end
|
120
115
|
|
121
116
|
# ISO/IEC DIR 2, 9.1
|
@@ -124,11 +119,12 @@ module Metanorma
|
|
124
119
|
def style_number(node, text)
|
125
120
|
style_number_grouping(node, text)
|
126
121
|
style_regex(/(?:^|\p{Zs})(?<num>[0-9]+\.[0-9]+)(?!\.[0-9])/i,
|
127
|
-
"possible decimal point", node, text)
|
122
|
+
"possible decimal point: mark up numbers with stem:[]", node, text)
|
128
123
|
@lang == "en" and style_regex(/\b(?<num>billions?)\b/i,
|
129
124
|
"ambiguous number", node, text)
|
130
125
|
style_regex(/(?:^|\p{Zs})(?<num>-[0-9][0-9,.]*)/i,
|
131
126
|
"hyphen instead of minus sign U+2212", node, text)
|
127
|
+
@novalid_number = true
|
132
128
|
end
|
133
129
|
|
134
130
|
def style_number_grouping(node, text)
|
@@ -136,13 +132,13 @@ module Metanorma
|
|
136
132
|
style_two_regex_not_prev(
|
137
133
|
node, text, /^(?<num>-?[0-9]{4,}[,0-9]*)\Z/,
|
138
134
|
%r{\b(ISO|IEC|IEEE|(in|January|February|March|April|May|June|August|September|October|November|December)\b)\Z},
|
139
|
-
"number not broken up in threes"
|
135
|
+
"number not broken up in threes: mark up numbers with stem:[]"
|
140
136
|
)
|
141
137
|
else
|
142
138
|
style_two_regex_not_prev(
|
143
139
|
node, text, /^(?<num>-?(?:[0-9]{5,}[,0-9]*|[03-9]\d\d\d|1[0-8]\d\d|2[1-9]\d\d|20[5-9]\d))\Z/,
|
144
140
|
%r{\b(ISO|IEC|IEEE|\b)\Z},
|
145
|
-
"number not broken up in threes"
|
141
|
+
"number not broken up in threes: mark up numbers with stem:[]"
|
146
142
|
)
|
147
143
|
end
|
148
144
|
end
|
data/metanorma-iso.gemspec
CHANGED
@@ -34,9 +34,7 @@ Gem::Specification.new do |spec|
|
|
34
34
|
|
35
35
|
spec.add_dependency "metanorma-standoc", "~> 2.8.4"
|
36
36
|
spec.add_dependency "mnconvert", "~> 1.14"
|
37
|
-
spec.add_dependency "pubid
|
38
|
-
spec.add_dependency "pubid-iec"
|
39
|
-
spec.add_dependency "pubid-iso"
|
37
|
+
spec.add_dependency "pubid"
|
40
38
|
spec.add_dependency "tokenizer", "~> 0.3.0"
|
41
39
|
|
42
40
|
spec.add_development_dependency "debug"
|
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.7.
|
4
|
+
version: 2.7.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: metanorma-standoc
|
@@ -39,35 +39,7 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.14'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name: pubid
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: pubid-iec
|
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-iso
|
42
|
+
name: pubid
|
71
43
|
requirement: !ruby/object:Gem::Requirement
|
72
44
|
requirements:
|
73
45
|
- - ">="
|