metanorma-standoc 1.4.4 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/macos.yml +4 -9
- data/.github/workflows/ubuntu.yml +1 -5
- data/.github/workflows/windows.yml +2 -12
- data/.rubocop.yml +1 -1
- data/lib/asciidoctor/standoc/base.rb +11 -5
- data/lib/asciidoctor/standoc/base_structured_text_preprocessor.rb +123 -0
- data/lib/asciidoctor/standoc/basicdoc.rng +23 -0
- data/lib/asciidoctor/standoc/cleanup.rb +32 -12
- data/lib/asciidoctor/standoc/cleanup_amend.rb +54 -0
- data/lib/asciidoctor/standoc/cleanup_block.rb +0 -2
- data/lib/asciidoctor/standoc/cleanup_boilerplate.rb +11 -24
- data/lib/asciidoctor/standoc/cleanup_footnotes.rb +0 -3
- data/lib/asciidoctor/standoc/cleanup_inline.rb +62 -1
- data/lib/asciidoctor/standoc/cleanup_ref.rb +10 -7
- data/lib/asciidoctor/standoc/cleanup_section.rb +91 -8
- data/lib/asciidoctor/standoc/cleanup_terms.rb +12 -2
- data/lib/asciidoctor/standoc/converter.rb +3 -3
- data/lib/asciidoctor/standoc/front.rb +0 -12
- data/lib/asciidoctor/standoc/front_contributor.rb +51 -10
- data/lib/asciidoctor/standoc/inline.rb +21 -31
- data/lib/asciidoctor/standoc/isodoc.rng +137 -21
- data/lib/asciidoctor/standoc/json2_text_preprocessor.rb +44 -0
- data/lib/asciidoctor/standoc/log.rb +10 -1
- data/lib/asciidoctor/standoc/macros.rb +45 -33
- data/lib/asciidoctor/standoc/ref.rb +45 -45
- data/lib/asciidoctor/standoc/section.rb +39 -30
- data/lib/asciidoctor/standoc/table.rb +3 -2
- data/lib/asciidoctor/standoc/utils.rb +18 -1
- data/lib/asciidoctor/standoc/validate.rb +30 -18
- data/lib/asciidoctor/standoc/validate_section.rb +1 -1
- data/lib/asciidoctor/standoc/views/datamodel/model_representation.adoc.erb +10 -10
- data/lib/asciidoctor/standoc/yaml2_text_preprocessor.rb +46 -0
- data/lib/liquid/custom_blocks/key_iterator.rb +21 -0
- data/lib/liquid/custom_filters/values.rb +7 -0
- data/lib/metanorma/standoc.rb +0 -5
- data/lib/metanorma/standoc/version.rb +20 -1
- data/metanorma-standoc.gemspec +4 -5
- data/spec/asciidoctor-standoc/base_spec.rb +140 -7
- data/spec/asciidoctor-standoc/blocks_spec.rb +275 -149
- data/spec/asciidoctor-standoc/cleanup_spec.rb +1372 -56
- data/spec/asciidoctor-standoc/inline_spec.rb +133 -6
- data/spec/asciidoctor-standoc/isobib_cache_spec.rb +9 -7
- data/spec/asciidoctor-standoc/macros_json2text_spec.rb +10 -0
- data/spec/asciidoctor-standoc/macros_spec.rb +43 -23
- data/spec/asciidoctor-standoc/macros_yaml2text_spec.rb +5 -560
- data/spec/asciidoctor-standoc/refs_dl_spec.rb +9 -7
- data/spec/asciidoctor-standoc/refs_spec.rb +43 -34
- data/spec/asciidoctor-standoc/section_spec.rb +42 -39
- data/spec/asciidoctor-standoc/table_spec.rb +119 -113
- data/spec/asciidoctor-standoc/validate_spec.rb +45 -1
- data/spec/assets/i18n.yaml +17 -2
- data/spec/examples/codes_table.html +1365 -1365
- data/spec/fixtures/macros_datamodel/address_class_profile.xml +46 -46
- data/spec/fixtures/macros_datamodel/address_component_profile.xml +21 -21
- data/spec/fixtures/macros_datamodel/blank_definition_profile.xml +21 -21
- data/spec/metanorma/processor_spec.rb +1 -2
- data/spec/spec_helper.rb +110 -109
- data/spec/support/shared_examples/structured_data_2_text_preprocessor.rb +629 -0
- data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +71 -71
- data/spec/vcr_cassettes/isobib_get_123.yml +16 -16
- data/spec/vcr_cassettes/isobib_get_123_1.yml +36 -36
- data/spec/vcr_cassettes/isobib_get_123_2001.yml +16 -16
- data/spec/vcr_cassettes/isobib_get_124.yml +17 -17
- data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +8 -8
- data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +39 -37
- metadata +29 -14
- data/lib/asciidoctor-yaml/i18n-en.yaml +0 -20
- data/lib/asciidoctor-yaml/i18n-fr.yaml +0 -13
- data/lib/asciidoctor-yaml/i18n-zh-Hans.yaml +0 -15
- data/lib/asciidoctor/standoc/i18n.rb +0 -39
- data/lib/asciidoctor/standoc/macros_yaml2text.rb +0 -165
- data/lib/metanorma/standoc/latexml_requirement.rb +0 -62
- data/lib/metanorma/standoc/requirement.rb +0 -13
@@ -2,29 +2,29 @@
|
|
2
2
|
[yaml2text,<%= model_path %>,definition]
|
3
3
|
----
|
4
4
|
|
5
|
-
=== {definition.name
|
5
|
+
=== {definition.name | default: "<%= file_name %>"}
|
6
6
|
{definition.definition}
|
7
7
|
|
8
|
-
{if definition.attributes}
|
9
|
-
.{definition.name
|
8
|
+
{% if definition.attributes %}
|
9
|
+
.{definition.name | default: "<%= file_name %>"} attributes
|
10
10
|
|===
|
11
11
|
|Name |Definition |Mandatory/ Optional/ Conditional |Max Occur |Data Type
|
12
12
|
|
13
|
-
{definition.attributes
|
14
|
-
|{key} |{definition.attributes[key].definition
|
13
|
+
{definition.attributes.*,key,EOK}
|
14
|
+
|{key} |{% if definition.attributes[key].definition %}{{ definition.attributes[key].definition }}{% else %}TODO: enum {{ key }}'s definition{% endif %} |{% if definition.attributes[key].cardinality.min == 0 %}O{% else %}M{% endif %} |{% if definition.attributes[key].cardinality.max == "*" %}N{% else %}1{% endif %} |{% if definition.attributes[key].origin %}<<{{ definition.attributes[key].origin }}>>{% endif %} `{definition.attributes[key].type}`
|
15
15
|
{EOK}
|
16
16
|
|===
|
17
|
-
{
|
17
|
+
{% endif %}
|
18
18
|
|
19
|
-
{if definition['values']}
|
20
|
-
.{definition.name
|
19
|
+
{% if definition['values'] %}
|
20
|
+
.{definition.name | default: "<%= file_name %>"} values
|
21
21
|
|===
|
22
22
|
|Name |Definition
|
23
23
|
|
24
|
-
{definition['values']
|
24
|
+
{definition['values'].*,key,EOK}
|
25
25
|
|{key} |{definition['values'][key].definition}
|
26
26
|
{EOK}
|
27
27
|
|===
|
28
|
-
{
|
28
|
+
{% endif %}
|
29
29
|
|
30
30
|
----
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "asciidoctor/standoc/base_structured_text_preprocessor"
|
4
|
+
|
5
|
+
module Asciidoctor
|
6
|
+
module Standoc
|
7
|
+
class Yaml2TextPreprocessor < BaseStructuredTextPreprocessor
|
8
|
+
# search document for block `yaml2text`
|
9
|
+
# after that take template from block and read file into this template
|
10
|
+
# example:
|
11
|
+
# [yaml2text,foobar.yaml]
|
12
|
+
# ----
|
13
|
+
# === {item.name}
|
14
|
+
# {item.desc}
|
15
|
+
#
|
16
|
+
# {item.symbol}:: {item.symbol_def}
|
17
|
+
# ----
|
18
|
+
#
|
19
|
+
# with content of `foobar.yaml` file equal to:
|
20
|
+
# - name: spaghetti
|
21
|
+
# desc: wheat noodles of 9mm diameter
|
22
|
+
# symbol: SPAG
|
23
|
+
# symbol_def: the situation is message like spaghetti at a kid's
|
24
|
+
#
|
25
|
+
# will produce:
|
26
|
+
# === spaghetti
|
27
|
+
# wheat noodles of 9mm diameter
|
28
|
+
#
|
29
|
+
# SPAG:: the situation is message like spaghetti at a kid's meal
|
30
|
+
|
31
|
+
def initialize(config = {})
|
32
|
+
super
|
33
|
+
@config[:block_name] = "yaml2text"
|
34
|
+
end
|
35
|
+
|
36
|
+
protected
|
37
|
+
|
38
|
+
def content_from_file(document, file_path)
|
39
|
+
YAML.safe_load(
|
40
|
+
File.read(relative_file_path(document, file_path),
|
41
|
+
encoding: "UTF-8"),
|
42
|
+
[Date, Time])
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Liquid
|
2
|
+
module CustomBlocks
|
3
|
+
class KeyIterator < Block
|
4
|
+
def initialize(tag_name, markup, tokens)
|
5
|
+
super
|
6
|
+
@context_name, @var_name = markup.split(',').map(&:strip)
|
7
|
+
end
|
8
|
+
|
9
|
+
def render(context)
|
10
|
+
res = ''
|
11
|
+
iterator = context[@context_name].is_a?(Hash) ? context[@context_name].keys : context[@context_name]
|
12
|
+
iterator.each.with_index do |key, index|
|
13
|
+
context['index'] = index
|
14
|
+
context[@var_name] = key
|
15
|
+
res += super
|
16
|
+
end
|
17
|
+
res
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/lib/metanorma/standoc.rb
CHANGED
@@ -1,5 +1,24 @@
|
|
1
1
|
module Metanorma
|
2
|
+
class << self
|
3
|
+
# https://stackoverflow.com/a/53399471
|
4
|
+
def parent_of(mod)
|
5
|
+
parent_name = mod.name =~ /::[^:]+\Z/ ? $`.freeze : nil
|
6
|
+
Object.const_get(parent_name) if parent_name
|
7
|
+
end
|
8
|
+
|
9
|
+
def all_modules(mod)
|
10
|
+
[mod] + mod.constants.map { |c| mod.const_get(c) }
|
11
|
+
.select {|c| c.is_a?(Module) && parent_of(c) == mod }
|
12
|
+
.flat_map {|m| all_modules(m) }
|
13
|
+
end
|
14
|
+
|
15
|
+
def versioned(mod, flavour)
|
16
|
+
all_modules(mod).select {|c| defined? c::VERSION}.
|
17
|
+
select {|c| c.name =~ /::#{flavour}$/ }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
2
21
|
module Standoc
|
3
|
-
|
22
|
+
VERSION = "1.6.0".freeze
|
4
23
|
end
|
5
24
|
end
|
data/metanorma-standoc.gemspec
CHANGED
@@ -28,15 +28,17 @@ Gem::Specification.new do |spec|
|
|
28
28
|
|
29
29
|
spec.add_dependency "asciidoctor", "~> 2.0.0"
|
30
30
|
spec.add_dependency "ruby-jing"
|
31
|
-
spec.add_dependency "isodoc", "~> 1.
|
31
|
+
spec.add_dependency "isodoc", "~> 1.2.0"
|
32
32
|
spec.add_dependency "iev", "~> 0.2.1"
|
33
|
-
|
33
|
+
# relaton-cli not just relaton, to avoid circular reference in metanorma
|
34
|
+
spec.add_dependency "relaton-cli", "~> 1.4.0"
|
34
35
|
spec.add_dependency "relaton-iev", "~> 1.0.0"
|
35
36
|
spec.add_dependency "sterile", "~> 1.0.14"
|
36
37
|
spec.add_dependency "concurrent-ruby"
|
37
38
|
spec.add_dependency "unicode2latex", "~> 0.0.1"
|
38
39
|
spec.add_dependency "mimemagic"
|
39
40
|
spec.add_dependency "mathml2asciimath"
|
41
|
+
spec.add_dependency "latexmath"
|
40
42
|
|
41
43
|
spec.add_development_dependency "byebug"
|
42
44
|
spec.add_development_dependency "sassc", "2.4.0"
|
@@ -50,7 +52,4 @@ Gem::Specification.new do |spec|
|
|
50
52
|
spec.add_development_dependency "timecop", "~> 0.9"
|
51
53
|
spec.add_development_dependency "vcr", "~> 5.0.0"
|
52
54
|
spec.add_development_dependency "webmock"
|
53
|
-
#spec.add_development_dependency "relaton-iec"
|
54
|
-
#spec.add_development_dependency "relaton-iso"
|
55
|
-
#spec.add_development_dependency "relaton-ietf"
|
56
55
|
end
|
@@ -32,8 +32,101 @@ RSpec.describe Asciidoctor::Standoc do
|
|
32
32
|
expect(File.exist?("htmlstyle.css")).to be false
|
33
33
|
end
|
34
34
|
|
35
|
-
|
35
|
+
it "processes publisher abbreviations" do
|
36
|
+
mock_org_abbrevs
|
36
37
|
expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to xmlpp(<<~'OUTPUT')
|
38
|
+
= Document title
|
39
|
+
Author
|
40
|
+
:docfile: test.adoc
|
41
|
+
:nodoc:
|
42
|
+
:novalid:
|
43
|
+
:publisher: International Electrotechnical Commission,IETF,ISO
|
44
|
+
INPUT
|
45
|
+
<standard-document xmlns='https://www.metanorma.org/ns/standoc' type='semantic' version='1.5.3'>
|
46
|
+
<bibdata type='standard'>
|
47
|
+
<title language='en' format='text/plain'>Document title</title>
|
48
|
+
<contributor>
|
49
|
+
<role type='author'/>
|
50
|
+
<organization>
|
51
|
+
<name>International Electrotechnical Commission</name>
|
52
|
+
<abbreviation>IEC</abbreviation>
|
53
|
+
</organization>
|
54
|
+
</contributor>
|
55
|
+
<contributor>
|
56
|
+
<role type='author'/>
|
57
|
+
<organization>
|
58
|
+
<name>IETF</name>
|
59
|
+
</organization>
|
60
|
+
</contributor>
|
61
|
+
<contributor>
|
62
|
+
<role type='author'/>
|
63
|
+
<organization>
|
64
|
+
<name>International Standards Organization</name>
|
65
|
+
<abbreviation>ISO</abbreviation>
|
66
|
+
</organization>
|
67
|
+
</contributor>
|
68
|
+
<contributor>
|
69
|
+
<role type='publisher'/>
|
70
|
+
<organization>
|
71
|
+
<name>International Electrotechnical Commission</name>
|
72
|
+
<abbreviation>IEC</abbreviation>
|
73
|
+
</organization>
|
74
|
+
</contributor>
|
75
|
+
<contributor>
|
76
|
+
<role type='publisher'/>
|
77
|
+
<organization>
|
78
|
+
<name>IETF</name>
|
79
|
+
</organization>
|
80
|
+
</contributor>
|
81
|
+
<contributor>
|
82
|
+
<role type='publisher'/>
|
83
|
+
<organization>
|
84
|
+
<name>International Standards Organization</name>
|
85
|
+
<abbreviation>ISO</abbreviation>
|
86
|
+
</organization>
|
87
|
+
</contributor>
|
88
|
+
<language>en</language>
|
89
|
+
<script>Latn</script>
|
90
|
+
<status>
|
91
|
+
<stage>published</stage>
|
92
|
+
</status>
|
93
|
+
<copyright>
|
94
|
+
<from>2020</from>
|
95
|
+
<owner>
|
96
|
+
<organization>
|
97
|
+
<name>International Electrotechnical Commission</name>
|
98
|
+
<abbreviation>IEC</abbreviation>
|
99
|
+
</organization>
|
100
|
+
</owner>
|
101
|
+
</copyright>
|
102
|
+
<copyright>
|
103
|
+
<from>2020</from>
|
104
|
+
<owner>
|
105
|
+
<organization>
|
106
|
+
<name>IETF</name>
|
107
|
+
</organization>
|
108
|
+
</owner>
|
109
|
+
</copyright>
|
110
|
+
<copyright>
|
111
|
+
<from>2020</from>
|
112
|
+
<owner>
|
113
|
+
<organization>
|
114
|
+
<name>International Standards Organization</name>
|
115
|
+
<abbreviation>ISO</abbreviation>
|
116
|
+
</organization>
|
117
|
+
</owner>
|
118
|
+
</copyright>
|
119
|
+
<ext>
|
120
|
+
<doctype>article</doctype>
|
121
|
+
</ext>
|
122
|
+
</bibdata>
|
123
|
+
<sections> </sections>
|
124
|
+
</standard-document>
|
125
|
+
OUTPUT
|
126
|
+
end
|
127
|
+
|
128
|
+
it "processes default metadata" do
|
129
|
+
expect(xmlpp(Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true))).to be_equivalent_to xmlpp(<<~"OUTPUT")
|
37
130
|
= Document title
|
38
131
|
Author
|
39
132
|
:docfile: test.adoc
|
@@ -102,13 +195,14 @@ RSpec.describe Asciidoctor::Standoc do
|
|
102
195
|
:email_2: barney@rockhead.example.com
|
103
196
|
:phone_2: 789
|
104
197
|
:fax_2: 012
|
105
|
-
:publisher: Hanna Barbera, Cartoon Network
|
198
|
+
:publisher: "Hanna Barbera", "Cartoon Network", "Ribose, Inc."
|
199
|
+
:copyright-holder: "Ribose, Inc.", Hanna Barbera
|
106
200
|
:part-of: ABC
|
107
201
|
:translated-from: DEF,GHI;JKL MNO,PQR
|
108
202
|
:keywords: a, b, c
|
109
203
|
INPUT
|
110
204
|
<?xml version="1.0" encoding="UTF-8"?>
|
111
|
-
<standard-document xmlns="https://www.metanorma.org/ns/standoc">
|
205
|
+
<standard-document xmlns="https://www.metanorma.org/ns/standoc" type="semantic" version="#{Metanorma::Standoc::VERSION}">
|
112
206
|
<bibdata type="standard">
|
113
207
|
<title language="en" format="text/plain">Main Title — Title</title>
|
114
208
|
<docidentifier>1000-1</docidentifier>
|
@@ -155,6 +249,12 @@ RSpec.describe Asciidoctor::Standoc do
|
|
155
249
|
<date type="Jack">
|
156
250
|
<on>1010-01-01</on>
|
157
251
|
</date>
|
252
|
+
<contributor>
|
253
|
+
<role type="author"/>
|
254
|
+
<organization>
|
255
|
+
<name>Ribose, Inc.</name>
|
256
|
+
</organization>
|
257
|
+
</contributor>
|
158
258
|
<contributor>
|
159
259
|
<role type="author"/>
|
160
260
|
<organization>
|
@@ -221,6 +321,12 @@ RSpec.describe Asciidoctor::Standoc do
|
|
221
321
|
<name>Cartoon Network</name>
|
222
322
|
</organization>
|
223
323
|
</contributor>
|
324
|
+
<contributor>
|
325
|
+
<role type="publisher"/>
|
326
|
+
<organization>
|
327
|
+
<name>Ribose, Inc.</name>
|
328
|
+
</organization>
|
329
|
+
</contributor>
|
224
330
|
<edition>2</edition>
|
225
331
|
<version>
|
226
332
|
<revision-date>2000-01-01</revision-date>
|
@@ -237,7 +343,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
237
343
|
<from>2001</from>
|
238
344
|
<owner>
|
239
345
|
<organization>
|
240
|
-
<name>
|
346
|
+
<name>Ribose, Inc.</name>
|
241
347
|
</organization>
|
242
348
|
</owner>
|
243
349
|
</copyright>
|
@@ -245,7 +351,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
245
351
|
<from>2001</from>
|
246
352
|
<owner>
|
247
353
|
<organization>
|
248
|
-
<name>
|
354
|
+
<name>Hanna Barbera</name>
|
249
355
|
</organization>
|
250
356
|
</owner>
|
251
357
|
</copyright>
|
@@ -314,6 +420,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
314
420
|
:doc-uri: E
|
315
421
|
:relaton-uri: F
|
316
422
|
:title-eo: Dokumenttitolo
|
423
|
+
:doctype: This is a DocType
|
317
424
|
|
318
425
|
[abstract]
|
319
426
|
== Abstract
|
@@ -325,7 +432,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
325
432
|
== Clause 1
|
326
433
|
INPUT
|
327
434
|
<?xml version="1.0" encoding="UTF-8"?>
|
328
|
-
<standard-document xmlns="https://www.metanorma.org/ns/standoc">
|
435
|
+
<standard-document xmlns="https://www.metanorma.org/ns/standoc" type="semantic" version="#{Metanorma::Standoc::VERSION}">
|
329
436
|
<bibdata type="standard">
|
330
437
|
<title language="en" format="text/plain">Document title</title>
|
331
438
|
<title language="eo" format="text/plain">Dokumenttitolo</title>
|
@@ -409,11 +516,12 @@ RSpec.describe Asciidoctor::Standoc do
|
|
409
516
|
</owner>
|
410
517
|
</copyright>
|
411
518
|
<ext>
|
412
|
-
<doctype>
|
519
|
+
<doctype>this-is-a-doctype</doctype>
|
413
520
|
</ext>
|
414
521
|
</bibdata>
|
415
522
|
<preface>
|
416
523
|
<abstract id='_'>
|
524
|
+
<title>Abstract</title>
|
417
525
|
<p id='_'>This is the abstract of the document</p>
|
418
526
|
<p id='_'>This is the second paragraph of the abstract of the document.</p>
|
419
527
|
</abstract>
|
@@ -511,6 +619,31 @@ QU1FOiB0ZXN0Cgo=
|
|
511
619
|
])
|
512
620
|
end
|
513
621
|
|
622
|
+
it "test submitting-organizations with delimiter in end" do
|
623
|
+
FileUtils.rm_f "test.doc"
|
624
|
+
Asciidoctor.convert(<<~"INPUT", backend: :standoc, header_footer: true)
|
625
|
+
= Document title
|
626
|
+
Author
|
627
|
+
:docfile: test.adoc
|
628
|
+
:doctype: standard
|
629
|
+
:encoding: utf-8
|
630
|
+
:lang: en
|
631
|
+
:submitting-organizations: Organization One; Organization Two;
|
632
|
+
:publisher: "Hanna Barbera", "Cartoon Network", "Ribose, Inc.",
|
633
|
+
INPUT
|
634
|
+
expect(File.exist?("test.doc")).to be true
|
635
|
+
end
|
636
|
+
|
637
|
+
private
|
638
|
+
|
639
|
+
def mock_org_abbrevs
|
640
|
+
allow_any_instance_of(::Asciidoctor::Standoc::Front).to receive(:org_abbrev).and_return(
|
641
|
+
{ "International Standards Organization" => "ISO",
|
642
|
+
"International Electrotechnical Commission" => "IEC" }
|
643
|
+
)
|
644
|
+
end
|
645
|
+
|
646
|
+
|
514
647
|
|
515
648
|
end
|
516
649
|
|
@@ -86,172 +86,149 @@ RSpec.describe Asciidoctor::Standoc do
|
|
86
86
|
|
87
87
|
INPUT
|
88
88
|
#{BLANK_HDR}
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
<
|
106
|
-
<
|
107
|
-
<
|
89
|
+
<sections>
|
90
|
+
<formula id='ABC' number='3' keep-with-next='true' keep-lines-together='true' inequality='true'>
|
91
|
+
<stem type='MathML'>
|
92
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
93
|
+
<mi>r</mi>
|
94
|
+
<mo>=</mo>
|
95
|
+
<mn>1</mn>
|
96
|
+
<mi>%</mi>
|
97
|
+
<mi>r</mi>
|
98
|
+
<mo>=</mo>
|
99
|
+
<mn>1</mn>
|
100
|
+
<mi>%</mi>
|
101
|
+
</math>
|
102
|
+
</stem>
|
103
|
+
</formula>
|
104
|
+
<formula id='_' unnumbered='true'>
|
105
|
+
<stem type='MathML'>
|
106
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
107
|
+
<msub>
|
108
108
|
<mrow>
|
109
|
-
<mo>-</mo>
|
110
109
|
<mrow>
|
111
|
-
<mi>
|
112
|
-
<mo></mo>
|
113
|
-
<msub>
|
114
|
-
<mi>λ</mi>
|
115
|
-
<mn>0</mn>
|
116
|
-
</msub>
|
110
|
+
<mi mathvariant='bold-italic'>F</mi>
|
117
111
|
</mrow>
|
118
112
|
</mrow>
|
119
|
-
</mtd>
|
120
|
-
<mtd columnalign="center">
|
121
113
|
<mrow>
|
122
|
-
<mi>cos</mi>
|
123
|
-
<mo></mo>
|
124
|
-
<msub>
|
125
|
-
<mi>λ</mi>
|
126
|
-
<mn>0</mn>
|
127
|
-
</msub>
|
128
|
-
</mrow>
|
129
|
-
</mtd>
|
130
|
-
<mtd columnalign="center">
|
131
|
-
<mn>0</mn>
|
132
|
-
</mtd>
|
133
|
-
</mtr>
|
134
|
-
<mtr>
|
135
|
-
<mtd columnalign="center">
|
136
|
-
<mrow>
|
137
|
-
<mo>-</mo>
|
138
114
|
<mrow>
|
139
|
-
<
|
140
|
-
|
141
|
-
|
115
|
+
<mi mathvariant='bold-italic'>Α</mi>
|
116
|
+
</mrow>
|
117
|
+
</mrow>
|
118
|
+
</msub>
|
119
|
+
</math>
|
120
|
+
</stem>
|
121
|
+
</formula>
|
122
|
+
<formula id='_' subsequence='A'>
|
123
|
+
<stem type='MathML'>
|
124
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
125
|
+
<mrow>
|
126
|
+
<mi>M</mi>
|
127
|
+
<mo>=</mo>
|
128
|
+
<mo>[</mo>
|
129
|
+
<mtable>
|
130
|
+
<mtr>
|
131
|
+
<mtd>
|
132
|
+
<mrow>
|
133
|
+
<mo>−</mo>
|
134
|
+
<mi>sin</mi>
|
135
|
+
</mrow>
|
136
|
+
<msub>
|
137
|
+
<mi>λ</mi>
|
138
|
+
<mn>0</mn>
|
139
|
+
</msub>
|
140
|
+
</mtd>
|
141
|
+
<mtd>
|
142
|
+
<mi>cos</mi>
|
143
|
+
<msub>
|
144
|
+
<mi>λ</mi>
|
145
|
+
<mn>0</mn>
|
146
|
+
</msub>
|
147
|
+
</mtd>
|
148
|
+
<mtd>
|
149
|
+
<mn>0</mn>
|
150
|
+
</mtd>
|
151
|
+
</mtr>
|
152
|
+
<mtr>
|
153
|
+
<mtd>
|
154
|
+
<mrow>
|
155
|
+
<mo>−</mo>
|
156
|
+
<mi>sin</mi>
|
157
|
+
</mrow>
|
142
158
|
<msub>
|
143
159
|
<mi>φ</mi>
|
144
160
|
<mn>0</mn>
|
145
161
|
</msub>
|
146
|
-
</mrow>
|
147
|
-
<mo></mo>
|
148
|
-
<mrow>
|
149
162
|
<mi>cos</mi>
|
150
|
-
<mo></mo>
|
151
163
|
<msub>
|
152
164
|
<mi>λ</mi>
|
153
165
|
<mn>0</mn>
|
154
166
|
</msub>
|
155
|
-
</
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
167
|
+
</mtd>
|
168
|
+
<mtd>
|
169
|
+
<mrow>
|
170
|
+
<mo>−</mo>
|
171
|
+
<mi>sin</mi>
|
172
|
+
</mrow>
|
173
|
+
<msub>
|
174
|
+
<mi>φ</mi>
|
175
|
+
<mn>0</mn>
|
176
|
+
</msub>
|
164
177
|
<mi>sin</mi>
|
165
|
-
<
|
178
|
+
<msub>
|
179
|
+
<mi>λ</mi>
|
180
|
+
<mn>0</mn>
|
181
|
+
</msub>
|
182
|
+
</mtd>
|
183
|
+
<mtd>
|
184
|
+
<mi>cos</mi>
|
185
|
+
<msub>
|
186
|
+
<mi>φ</mi>
|
187
|
+
<mn>0</mn>
|
188
|
+
</msub>
|
189
|
+
</mtd>
|
190
|
+
</mtr>
|
191
|
+
<mtr>
|
192
|
+
<mtd>
|
193
|
+
<mi>cos</mi>
|
194
|
+
<msub>
|
195
|
+
<mi>φ</mi>
|
196
|
+
<mn>0</mn>
|
197
|
+
</msub>
|
198
|
+
<mi>cos</mi>
|
199
|
+
<msub>
|
200
|
+
<mi>λ</mi>
|
201
|
+
<mn>0</mn>
|
202
|
+
</msub>
|
203
|
+
</mtd>
|
204
|
+
<mtd>
|
205
|
+
<mi>cos</mi>
|
166
206
|
<msub>
|
167
207
|
<mi>φ</mi>
|
168
208
|
<mn>0</mn>
|
169
209
|
</msub>
|
170
|
-
</mrow>
|
171
|
-
<mo></mo>
|
172
|
-
<mrow>
|
173
210
|
<mi>sin</mi>
|
174
|
-
<mo></mo>
|
175
211
|
<msub>
|
176
212
|
<mi>λ</mi>
|
177
213
|
<mn>0</mn>
|
178
214
|
</msub>
|
179
|
-
</
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
<mrow>
|
197
|
-
<mrow>
|
198
|
-
<mi>cos</mi>
|
199
|
-
<mo></mo>
|
200
|
-
<msub>
|
201
|
-
<mi>φ</mi>
|
202
|
-
<mn>0</mn>
|
203
|
-
</msub>
|
204
|
-
</mrow>
|
205
|
-
<mo></mo>
|
206
|
-
<mrow>
|
207
|
-
<mi>cos</mi>
|
208
|
-
<mo></mo>
|
209
|
-
<msub>
|
210
|
-
<mi>λ</mi>
|
211
|
-
<mn>0</mn>
|
212
|
-
</msub>
|
213
|
-
</mrow>
|
214
|
-
</mrow>
|
215
|
-
</mtd>
|
216
|
-
<mtd columnalign="center">
|
217
|
-
<mrow>
|
218
|
-
<mrow>
|
219
|
-
<mi>cos</mi>
|
220
|
-
<mo></mo>
|
221
|
-
<msub>
|
222
|
-
<mi>φ</mi>
|
223
|
-
<mn>0</mn>
|
224
|
-
</msub>
|
225
|
-
</mrow>
|
226
|
-
<mo></mo>
|
227
|
-
<mrow>
|
228
|
-
<mi>sin</mi>
|
229
|
-
<mo></mo>
|
230
|
-
<msub>
|
231
|
-
<mi>λ</mi>
|
232
|
-
<mn>0</mn>
|
233
|
-
</msub>
|
234
|
-
</mrow>
|
235
|
-
</mrow>
|
236
|
-
</mtd>
|
237
|
-
<mtd columnalign="center">
|
238
|
-
<mrow>
|
239
|
-
<mi>sin</mi>
|
240
|
-
<mo></mo>
|
241
|
-
<msub>
|
242
|
-
<mi>φ</mi>
|
243
|
-
<mn>0</mn>
|
244
|
-
</msub>
|
245
|
-
</mrow>
|
246
|
-
</mtd>
|
247
|
-
</mtr>
|
248
|
-
</mtable>
|
249
|
-
<mo>]</mo>
|
250
|
-
</mrow>
|
251
|
-
</mrow>
|
252
|
-
</math></stem>
|
253
|
-
</formula>
|
254
|
-
</sections></standard-document>
|
215
|
+
</mtd>
|
216
|
+
<mtd>
|
217
|
+
<mi>sin</mi>
|
218
|
+
<msub>
|
219
|
+
<mi>φ</mi>
|
220
|
+
<mn>0</mn>
|
221
|
+
</msub>
|
222
|
+
</mtd>
|
223
|
+
</mtr>
|
224
|
+
</mtable>
|
225
|
+
<mo>]</mo>
|
226
|
+
</mrow>
|
227
|
+
</math>
|
228
|
+
</stem>
|
229
|
+
</formula>
|
230
|
+
</sections>
|
231
|
+
</standard-document>
|
255
232
|
OUTPUT
|
256
233
|
end
|
257
234
|
|
@@ -296,7 +273,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
296
273
|
For further information on the Foreword, see *ISO/IEC Directives, Part 2, 2016, Clause 12.*
|
297
274
|
****
|
298
275
|
INPUT
|
299
|
-
<standard-document xmlns="https://www.metanorma.org/ns/standoc">
|
276
|
+
<standard-document xmlns="https://www.metanorma.org/ns/standoc" type="semantic" version="#{Metanorma::Standoc::VERSION}">
|
300
277
|
<bibdata type="standard">
|
301
278
|
<title language="en" format="text/plain">Document title</title>
|
302
279
|
|
@@ -361,6 +338,10 @@ RSpec.describe Asciidoctor::Standoc do
|
|
361
338
|
#{ASCIIDOC_BLANK_HDR}
|
362
339
|
== Terms and Definitions
|
363
340
|
|
341
|
+
NOTE: This is not a termnote
|
342
|
+
|
343
|
+
EXAMPLE: This is not a termexample
|
344
|
+
|
364
345
|
[.nonterm]
|
365
346
|
=== Term1
|
366
347
|
|
@@ -371,6 +352,9 @@ RSpec.describe Asciidoctor::Standoc do
|
|
371
352
|
<terms id="_" obligation="normative">
|
372
353
|
<title>Terms and definitions</title>
|
373
354
|
<p id="_">No terms and definitions are listed in this document.</p>
|
355
|
+
<note id='_'>
|
356
|
+
<p id='_'>This is not a termnote</p>
|
357
|
+
</note>
|
374
358
|
<clause id="_" inline-header="false" obligation="normative">
|
375
359
|
<title>Term1</title>
|
376
360
|
<note id="_">
|
@@ -397,12 +381,12 @@ RSpec.describe Asciidoctor::Standoc do
|
|
397
381
|
INPUT
|
398
382
|
#{BLANK_HDR}
|
399
383
|
<sections>
|
400
|
-
<terms id="_" obligation="normative"><title>Terms, definitions
|
384
|
+
<terms id="_" obligation="normative"><title>Terms, definitions and symbols</title>
|
401
385
|
<p id="_">For the purposes of this document, the following terms and definitions apply.</p>
|
402
386
|
<term id="_">
|
403
387
|
<preferred>Term1</preferred>
|
404
388
|
</term>
|
405
|
-
<definitions id="_">
|
389
|
+
<definitions id="_" obligation="normative" type="symbols">
|
406
390
|
<title>Symbols</title>
|
407
391
|
<note id="_">
|
408
392
|
<p id="_">This is a note</p>
|
@@ -598,11 +582,11 @@ RSpec.describe Asciidoctor::Standoc do
|
|
598
582
|
INPUT
|
599
583
|
#{BLANK_HDR}
|
600
584
|
<sections>
|
601
|
-
<terms id="_" obligation="normative"><title>Terms, definitions
|
585
|
+
<terms id="_" obligation="normative"><title>Terms, definitions and symbols</title>
|
602
586
|
<p id="_">For the purposes of this document, the following terms and definitions apply.</p><term id="_">
|
603
587
|
<preferred>Term1</preferred>
|
604
588
|
</term>
|
605
|
-
<definitions id="_">
|
589
|
+
<definitions id="_" obligation="normative" type="symbols">
|
606
590
|
<title>Symbols</title>
|
607
591
|
<example id="_">
|
608
592
|
<p id="_">This is an example</p>
|
@@ -679,7 +663,7 @@ RSpec.describe Asciidoctor::Standoc do
|
|
679
663
|
INPUT
|
680
664
|
#{BLANK_HDR}
|
681
665
|
<preface><foreword id="_" obligation="informative">
|
682
|
-
<title>
|
666
|
+
<title>Foreword</title>
|
683
667
|
<p id="_">This is a preamble</p>
|
684
668
|
</foreword></preface><sections>
|
685
669
|
<clause id="_" inline-header="false" obligation="normative">
|
@@ -1246,9 +1230,16 @@ RSpec.describe Asciidoctor::Standoc do
|
|
1246
1230
|
<recommendation id="ABC" obligation="permission,recommendation" filename="reqt1.rq"><label>/ogc/recommendation/wfs/2</label><subject>user</subject>
|
1247
1231
|
<classification><tag>control-class</tag><value>Technical</value></classification><classification><tag>priority</tag><value>P0</value></classification><classification><tag>family</tag><value>System & Communications Protection</value></classification><classification><tag>family</tag><value>System and Communications Protocols</value></classification>
|
1248
1232
|
<description><p id="_">I recommend <em>this</em>.</p>
|
1249
|
-
</description><specification exclude="false" type="tabular" keep-with-next="true" keep-lines-together="true"><p id="_">This is the object of the recommendation:</p><table id="_"> <tbody> <tr> <td align="left">Object</td> <td align="left">Value</td> </tr> <tr> <td align="left">Mission</td> <td align="left">Accomplished</td> </tr> </tbody></table></specification><description>
|
1233
|
+
</description><specification exclude="false" type="tabular" keep-with-next="true" keep-lines-together="true"><p id="_">This is the object of the recommendation:</p><table id="_"> <tbody> <tr> <td valign="top" align="left">Object</td> <td valign="top" align="left">Value</td> </tr> <tr> <td valign="top" align="left">Mission</td> <td valign="top" align="left">Accomplished</td> </tr> </tbody></table></specification><description>
|
1250
1234
|
<p id="_">As for the measurement targets,</p>
|
1251
|
-
</description><measurement-target exclude="false"><p id="_">The measurement target shall be measured as:</p><formula id="_"> <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mfrac
|
1235
|
+
</description><measurement-target exclude="false"><p id="_">The measurement target shall be measured as:</p><formula id="_"> <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><mfrac>
|
1236
|
+
<mrow>
|
1237
|
+
<mi>r</mi>
|
1238
|
+
</mrow>
|
1239
|
+
<mrow>
|
1240
|
+
<mn>1</mn>
|
1241
|
+
</mrow>
|
1242
|
+
</mfrac><mo>=</mo><mn>0</mn></math></stem></formula></measurement-target>
|
1252
1243
|
<verification exclude="false"><p id="_">The following code will be run for verification:</p><sourcecode lang="CoreRoot" id="_">CoreRoot(success): HttpResponse
|
1253
1244
|
if (success)
|
1254
1245
|
recommendation(label: success-response)
|
@@ -1261,4 +1252,139 @@ end</sourcecode></verification>
|
|
1261
1252
|
expect(xmlpp(strip_guid(Asciidoctor.convert(input, backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(output)
|
1262
1253
|
end
|
1263
1254
|
|
1255
|
+
it "processes delete change clauses" do
|
1256
|
+
input = <<~"INPUT"
|
1257
|
+
#{ASCIIDOC_BLANK_HDR}
|
1258
|
+
[change="modify",locality="page=27",path="//table[2]",path_end="//table[2]/following-sibling:example[1]",title="Change"]
|
1259
|
+
==== Change Clause
|
1260
|
+
_This table contains information on polygon cells which are not included in ISO 10303-52. Remove table 2 completely and replace with:_
|
1261
|
+
INPUT
|
1262
|
+
output = <<~"OUTPUT"
|
1263
|
+
#{BLANK_HDR}
|
1264
|
+
<sections>
|
1265
|
+
<clause id='_' inline-header='false' obligation='normative'>
|
1266
|
+
<title>Change Clause</title>
|
1267
|
+
<amend id='_' change='modify' path='//table[2]' path_end='//table[2]/following-sibling:example[1]' title='Change'>
|
1268
|
+
<description>
|
1269
|
+
<p id='_'>
|
1270
|
+
<em>
|
1271
|
+
This table contains information on polygon cells which are not
|
1272
|
+
included in ISO 10303-52. Remove table 2 completely and replace
|
1273
|
+
with:
|
1274
|
+
</em>
|
1275
|
+
</p>
|
1276
|
+
</description>
|
1277
|
+
</amend>
|
1278
|
+
</clause>
|
1279
|
+
</sections>
|
1280
|
+
</standard-document>
|
1281
|
+
OUTPUT
|
1282
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(output)
|
1283
|
+
|
1284
|
+
end
|
1285
|
+
|
1286
|
+
it "processes modify change clauses" do
|
1287
|
+
input = <<~"INPUT"
|
1288
|
+
#{ASCIIDOC_BLANK_HDR}
|
1289
|
+
[change="modify",locality="page=27",path="//table[2]",path_end="//table[2]/following-sibling:example[1]",title="Change"]
|
1290
|
+
==== Change Clause
|
1291
|
+
|
1292
|
+
autonumber:table[2]
|
1293
|
+
autonumber:note[7]
|
1294
|
+
|
1295
|
+
_This table contains information on polygon cells which are not included in ISO 10303-52. Remove table 2 completely and replace with:_
|
1296
|
+
|
1297
|
+
____
|
1298
|
+
.Edges of triangle and quadrilateral cells
|
1299
|
+
|===
|
1300
|
+
2+^.^h| triangle 2+^.^h| quadrilateral
|
1301
|
+
^.^| edge ^.^| vertices ^.^| edge ^.^| vertices
|
1302
|
+
^.^| 1 ^.^| 1, 2 ^.^| 1 ^.^| 1, 2
|
1303
|
+
^.^| 2 ^.^| 2, 3 ^.^| 2 ^.^| 2, 3
|
1304
|
+
^.^| 3 ^.^| 3, 1 ^.^| 3 ^.^| 3, 4
|
1305
|
+
| | ^.^| 4 ^.^| 4, 1
|
1306
|
+
|===
|
1307
|
+
|
1308
|
+
====
|
1309
|
+
This is not generalised further.
|
1310
|
+
====
|
1311
|
+
|
1312
|
+
____
|
1313
|
+
|
1314
|
+
Any further exceptions can be ignored.
|
1315
|
+
INPUT
|
1316
|
+
|
1317
|
+
output = <<~"OUTPUT"
|
1318
|
+
#{BLANK_HDR}
|
1319
|
+
<sections>
|
1320
|
+
<clause id='_' inline-header='false' obligation='normative'>
|
1321
|
+
<title>Change Clause</title>
|
1322
|
+
<amend id='_' change='modify' path='//table[2]' path_end='//table[2]/following-sibling:example[1]' title='Change'>
|
1323
|
+
<autonumber type='table'>2</autonumber>
|
1324
|
+
<autonumber type='note'>7</autonumber>
|
1325
|
+
<description>
|
1326
|
+
<p id='_'>
|
1327
|
+
<em>
|
1328
|
+
This table contains information on polygon cells which are not
|
1329
|
+
included in ISO 10303-52. Remove table 2 completely and replace
|
1330
|
+
with:
|
1331
|
+
</em>
|
1332
|
+
</p>
|
1333
|
+
</description>
|
1334
|
+
<newcontent id='_'>
|
1335
|
+
<table id='_'>
|
1336
|
+
<name>Edges of triangle and quadrilateral cells</name>
|
1337
|
+
<tbody>
|
1338
|
+
<tr>
|
1339
|
+
<th colspan='2' valign='middle' align='center'>triangle</th>
|
1340
|
+
<th colspan='2' valign='middle' align='center'>quadrilateral</th>
|
1341
|
+
</tr>
|
1342
|
+
<tr>
|
1343
|
+
<td valign='middle' align='center'>edge</td>
|
1344
|
+
<td valign='middle' align='center'>vertices</td>
|
1345
|
+
<td valign='middle' align='center'>edge</td>
|
1346
|
+
<td valign='middle' align='center'>vertices</td>
|
1347
|
+
</tr>
|
1348
|
+
<tr>
|
1349
|
+
<td valign='middle' align='center'>1</td>
|
1350
|
+
<td valign='middle' align='center'>1, 2</td>
|
1351
|
+
<td valign='middle' align='center'>1</td>
|
1352
|
+
<td valign='middle' align='center'>1, 2</td>
|
1353
|
+
</tr>
|
1354
|
+
<tr>
|
1355
|
+
<td valign='middle' align='center'>2</td>
|
1356
|
+
<td valign='middle' align='center'>2, 3</td>
|
1357
|
+
<td valign='middle' align='center'>2</td>
|
1358
|
+
<td valign='middle' align='center'>2, 3</td>
|
1359
|
+
</tr>
|
1360
|
+
<tr>
|
1361
|
+
<td valign='middle' align='center'>3</td>
|
1362
|
+
<td valign='middle' align='center'>3, 1</td>
|
1363
|
+
<td valign='middle' align='center'>3</td>
|
1364
|
+
<td valign='middle' align='center'>3, 4</td>
|
1365
|
+
</tr>
|
1366
|
+
<tr>
|
1367
|
+
<td valign='top' align='left'/>
|
1368
|
+
<td valign='top' align='left'/>
|
1369
|
+
<td valign='middle' align='center'>4</td>
|
1370
|
+
<td valign='middle' align='center'>4, 1</td>
|
1371
|
+
</tr>
|
1372
|
+
</tbody>
|
1373
|
+
</table>
|
1374
|
+
<example id='_'>
|
1375
|
+
<p id='_'>This is not generalised further.</p>
|
1376
|
+
</example>
|
1377
|
+
</newcontent>
|
1378
|
+
<description>
|
1379
|
+
<p id='_'>Any further exceptions can be ignored.</p>
|
1380
|
+
</description>
|
1381
|
+
</amend>
|
1382
|
+
</clause>
|
1383
|
+
</sections>
|
1384
|
+
</standard-document>
|
1385
|
+
OUTPUT
|
1386
|
+
expect(xmlpp(strip_guid(Asciidoctor.convert(input, backend: :standoc, header_footer: true)))).to be_equivalent_to xmlpp(output)
|
1387
|
+
end
|
1388
|
+
|
1389
|
+
|
1264
1390
|
end
|