metanorma-standoc 2.3.4 → 2.3.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/metanorma/standoc/validate.rb +34 -20
- data/lib/metanorma/standoc/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7c637a8a2cab495ee675be427ab80dbfa3268f7630cc1161ca3f1b75c40688c
|
4
|
+
data.tar.gz: db253ce3dde5b476d87a404d6de2d99606410262ad091edacea453c18476910c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ba632dd7ca73b0c6314212c57d9a56ed2da84f52b4ab2cd32c46d53a1a994d096d2b6a43cdc4dd161f2ddfff19a2ac7d4c113e6181054631cb3494421ff02b0
|
7
|
+
data.tar.gz: bc6cf925cc3bd5aa0777044a2568368600adcffe486e164d1ca7d0dd31370c729e45eafc62e0d3dd64d0238d618efdf9a2fc4405dddfe5af25d982f93de69966
|
@@ -42,12 +42,11 @@ module Metanorma
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def content_validate(doc)
|
45
|
-
|
46
|
-
|
47
|
-
|
45
|
+
repeat_id_validate(doc.root) # feeds xref_validate
|
46
|
+
xref_validate(doc) # feeds nested_asset_validate
|
47
|
+
nested_asset_validate(doc)
|
48
48
|
section_validate(doc)
|
49
49
|
norm_ref_validate(doc)
|
50
|
-
repeat_id_validate(doc.root)
|
51
50
|
iev_validate(doc.root)
|
52
51
|
concept_validate(doc, "concept", "refterm")
|
53
52
|
concept_validate(doc, "related", "preferred//name")
|
@@ -58,6 +57,11 @@ module Metanorma
|
|
58
57
|
clean_abort(@fatalerror.join("\n"), doc)
|
59
58
|
end
|
60
59
|
|
60
|
+
def nested_asset_validate(doc)
|
61
|
+
nested_asset_validate_basic(doc)
|
62
|
+
nested_note_validate(doc)
|
63
|
+
end
|
64
|
+
|
61
65
|
def nested_asset_validate_basic(doc)
|
62
66
|
a = "//formula | //example | //figure | //termnote | //termexample | " \
|
63
67
|
"//table"
|
@@ -76,11 +80,21 @@ module Metanorma
|
|
76
80
|
end
|
77
81
|
end
|
78
82
|
|
79
|
-
def nested_asset_report(outer, inner,
|
83
|
+
def nested_asset_report(outer, inner, doc)
|
80
84
|
outer.name == "figure" && inner.name == "figure" and return
|
81
|
-
|
85
|
+
outer.name != "formula" && inner.name == "formula" and return
|
86
|
+
err =
|
87
|
+
"There is an instance of #{inner.name} nested within #{outer.name}"
|
82
88
|
@log.add("Syntax", inner, err)
|
83
|
-
|
89
|
+
nested_asset_xref_report(outer, inner, doc)
|
90
|
+
end
|
91
|
+
|
92
|
+
def nested_asset_xref_report(outer, inner, _doc)
|
93
|
+
i = @doc_xrefs[inner["id"]] or return
|
94
|
+
err2 = "There is a crossreference to an instance of #{inner.name} " \
|
95
|
+
"nested within #{outer.name}: #{i.to_xml}"
|
96
|
+
@log.add("Style", i, err2)
|
97
|
+
@fatalerror << err2
|
84
98
|
end
|
85
99
|
|
86
100
|
def norm_ref_validate(doc)
|
@@ -103,8 +117,8 @@ module Metanorma
|
|
103
117
|
@log.add("Anchors", x, concept_validate_msg(doc, tag, refterm, x))
|
104
118
|
found = true
|
105
119
|
end
|
106
|
-
found and
|
107
|
-
|
120
|
+
found and @fatalerror << "#{tag.capitalize} not cross-referencing " \
|
121
|
+
"term or symbol"
|
108
122
|
end
|
109
123
|
|
110
124
|
def concept_validate_ids(doc)
|
@@ -126,20 +140,19 @@ module Metanorma
|
|
126
140
|
ret
|
127
141
|
end
|
128
142
|
|
129
|
-
def repeat_id_validate1(
|
130
|
-
if
|
143
|
+
def repeat_id_validate1(elem)
|
144
|
+
if @doc_ids[elem["id"]]
|
131
145
|
@log.add("Anchors", elem, "Anchor #{elem['id']} has already been " \
|
132
|
-
"used at line #{
|
146
|
+
"used at line #{@doc_ids[elem['id']]}")
|
133
147
|
@fatalerror << "Multiple instances of same ID: #{elem['id']}"
|
134
|
-
else ids[elem["id"]] = elem.line
|
135
148
|
end
|
136
|
-
|
149
|
+
@doc_ids[elem["id"]] = elem.line
|
137
150
|
end
|
138
151
|
|
139
152
|
def repeat_id_validate(doc)
|
140
|
-
|
153
|
+
@doc_ids = {}
|
141
154
|
doc.xpath("//*[@id]").each do |x|
|
142
|
-
|
155
|
+
repeat_id_validate1(x)
|
143
156
|
end
|
144
157
|
end
|
145
158
|
|
@@ -188,11 +201,12 @@ module Metanorma
|
|
188
201
|
|
189
202
|
# manually check for xref/@target, xref/@to integrity
|
190
203
|
def xref_validate(doc)
|
191
|
-
|
192
|
-
|
193
|
-
|
204
|
+
@doc_xrefs = doc.xpath("//xref/@target | //xref/@to")
|
205
|
+
.each_with_object({}) do |x, m|
|
206
|
+
m[x.text] = x
|
207
|
+
@doc_ids[x] and next
|
194
208
|
@log.add("Anchors", x.parent,
|
195
|
-
"Crossreference target #{x
|
209
|
+
"Crossreference target #{x} is undefined")
|
196
210
|
end
|
197
211
|
end
|
198
212
|
|