metanorma-standoc 1.10.8 → 1.11.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +1 -1
  3. data/lib/asciidoctor/standoc/base.rb +5 -4
  4. data/lib/asciidoctor/standoc/blocks.rb +1 -1
  5. data/lib/asciidoctor/standoc/cleanup.rb +20 -11
  6. data/lib/asciidoctor/standoc/cleanup_boilerplate.rb +28 -20
  7. data/lib/asciidoctor/standoc/cleanup_inline.rb +20 -7
  8. data/lib/asciidoctor/standoc/cleanup_maths.rb +5 -6
  9. data/lib/asciidoctor/standoc/cleanup_ref_dl.rb +25 -15
  10. data/lib/asciidoctor/standoc/cleanup_reqt.rb +2 -21
  11. data/lib/asciidoctor/standoc/cleanup_section_names.rb +2 -2
  12. data/lib/asciidoctor/standoc/cleanup_symbols.rb +48 -0
  13. data/lib/asciidoctor/standoc/cleanup_terms.rb +54 -79
  14. data/lib/asciidoctor/standoc/cleanup_terms_designations.rb +179 -0
  15. data/lib/asciidoctor/standoc/cleanup_text.rb +23 -0
  16. data/lib/asciidoctor/standoc/converter.rb +2 -0
  17. data/lib/asciidoctor/standoc/datamodel/attributes_table_preprocessor.rb +6 -6
  18. data/lib/asciidoctor/standoc/inline.rb +20 -16
  19. data/lib/asciidoctor/standoc/isodoc.rng +254 -27
  20. data/lib/asciidoctor/standoc/lists.rb +1 -3
  21. data/lib/asciidoctor/standoc/macros_plantuml.rb +29 -14
  22. data/lib/asciidoctor/standoc/macros_terms.rb +49 -5
  23. data/lib/asciidoctor/standoc/ref.rb +101 -75
  24. data/lib/asciidoctor/standoc/ref_date_id.rb +30 -1
  25. data/lib/asciidoctor/standoc/ref_sect.rb +42 -24
  26. data/lib/asciidoctor/standoc/reqt.rb +1 -1
  27. data/lib/asciidoctor/standoc/section.rb +14 -13
  28. data/lib/asciidoctor/standoc/term_lookup_cleanup.rb +50 -11
  29. data/lib/asciidoctor/standoc/terms.rb +12 -2
  30. data/lib/asciidoctor/standoc/utils.rb +36 -23
  31. data/lib/asciidoctor/standoc/validate.rb +25 -16
  32. data/lib/isodoc/html/htmlstyle.css +1 -1
  33. data/lib/isodoc/html/htmlstyle.scss +1 -1
  34. data/lib/metanorma/standoc/version.rb +1 -1
  35. data/metanorma-standoc.gemspec +3 -3
  36. data/spec/asciidoctor/base_spec.rb +4 -3
  37. data/spec/asciidoctor/blocks_spec.rb +202 -21
  38. data/spec/asciidoctor/cleanup_sections_spec.rb +7 -7
  39. data/spec/asciidoctor/cleanup_spec.rb +23 -197
  40. data/spec/asciidoctor/cleanup_terms_spec.rb +1205 -0
  41. data/spec/asciidoctor/datamodel/attributes_table_preprocessor_spec.rb +21 -21
  42. data/spec/asciidoctor/datamodel/diagram_preprocessor_spec.rb +16 -16
  43. data/spec/asciidoctor/inline_spec.rb +7 -7
  44. data/spec/asciidoctor/isobib_cache_spec.rb +4 -8
  45. data/spec/asciidoctor/macros_plantuml_spec.rb +36 -1
  46. data/spec/asciidoctor/macros_spec.rb +189 -112
  47. data/spec/asciidoctor/refs_dl_spec.rb +4 -4
  48. data/spec/asciidoctor/refs_spec.rb +860 -522
  49. data/spec/asciidoctor/section_spec.rb +18 -18
  50. data/spec/asciidoctor/validate_spec.rb +59 -2
  51. data/spec/spec_helper.rb +3 -2
  52. data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec.yml +180 -180
  53. data/spec/vcr_cassettes/dated_iso_ref_joint_iso_iec1.yml +12 -12
  54. data/spec/vcr_cassettes/isobib_get_123.yml +12 -12
  55. data/spec/vcr_cassettes/isobib_get_123_1.yml +27 -27
  56. data/spec/vcr_cassettes/isobib_get_123_1_fr.yml +35 -35
  57. data/spec/vcr_cassettes/isobib_get_123_2001.yml +13 -13
  58. data/spec/vcr_cassettes/isobib_get_124.yml +12 -12
  59. data/spec/vcr_cassettes/rfcbib_get_rfc8341.yml +14 -14
  60. data/spec/vcr_cassettes/separates_iev_citations_by_top_level_clause.yml +45 -65
  61. metadata +11 -8
@@ -1,20 +1,20 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  RSpec.describe Asciidoctor::Standoc::Datamodel::AttributesTablePreprocessor do
6
- describe '#process' do
7
- context 'when simple models without relations' do
6
+ describe "#process" do
7
+ context "when simple models without relations" do
8
8
  let(:datamodel_file) do
9
- examples_path('datamodel/address_class_profile.adoc')
9
+ examples_path("datamodel/address_class_profile.adoc")
10
10
  end
11
11
  let(:result_file) do
12
- examples_path('datamodel/address_class_profile.xml')
12
+ examples_path("datamodel/address_class_profile.xml")
13
13
  end
14
14
  let(:output) do
15
15
  [
16
16
  BLANK_HDR,
17
- File.read(fixtures_path('macros_datamodel/address_class_profile.xml'))
17
+ File.read(fixtures_path("macros_datamodel/address_class_profile.xml")),
18
18
  ]
19
19
  .join
20
20
  end
@@ -27,7 +27,7 @@ RSpec.describe Asciidoctor::Standoc::Datamodel::AttributesTablePreprocessor do
27
27
  end
28
28
  end
29
29
 
30
- it 'correctly renders input' do
30
+ it "correctly renders input" do
31
31
  Asciidoctor.convert_file(datamodel_file,
32
32
  backend: :standoc,
33
33
  safe: :safe,
@@ -37,18 +37,18 @@ RSpec.describe Asciidoctor::Standoc::Datamodel::AttributesTablePreprocessor do
37
37
  end
38
38
  end
39
39
 
40
- context 'when complex relations' do
40
+ context "when complex relations" do
41
41
  let(:datamodel_file) do
42
- examples_path('datamodel/address_component_profile.adoc')
42
+ examples_path("datamodel/address_component_profile.adoc")
43
43
  end
44
44
  let(:result_file) do
45
- examples_path('datamodel/address_component_profile.xml')
45
+ examples_path("datamodel/address_component_profile.xml")
46
46
  end
47
47
  let(:output) do
48
- path = fixtures_path('macros_datamodel/address_component_profile.xml')
48
+ path = fixtures_path("macros_datamodel/address_component_profile.xml")
49
49
  [
50
50
  BLANK_HDR,
51
- File.read(path)
51
+ File.read(path),
52
52
  ]
53
53
  .join("\n")
54
54
  end
@@ -56,14 +56,14 @@ RSpec.describe Asciidoctor::Standoc::Datamodel::AttributesTablePreprocessor do
56
56
  after do
57
57
  %w[doc html xml err].each do |extention|
58
58
  path = examples_path(
59
- "datamodel/address_component_profile.#{extention}"
59
+ "datamodel/address_component_profile.#{extention}",
60
60
  )
61
61
  FileUtils.rm_f(path)
62
62
  FileUtils.rm_f("address_component_profile.#{extention}")
63
63
  end
64
64
  end
65
65
 
66
- it 'correctly renders input' do
66
+ it "correctly renders input" do
67
67
  Asciidoctor.convert_file(datamodel_file,
68
68
  backend: :standoc,
69
69
  safe: :safe,
@@ -73,32 +73,32 @@ RSpec.describe Asciidoctor::Standoc::Datamodel::AttributesTablePreprocessor do
73
73
  end
74
74
  end
75
75
 
76
- context 'when missing definition' do
76
+ context "when missing definition" do
77
77
  let(:datamodel_file) do
78
- examples_path('datamodel/blank_definition_profile.adoc')
78
+ examples_path("datamodel/blank_definition_profile.adoc")
79
79
  end
80
80
  let(:result_file) do
81
- examples_path('datamodel/blank_definition_profile.xml')
81
+ examples_path("datamodel/blank_definition_profile.xml")
82
82
  end
83
83
  let(:output) do
84
- path = fixtures_path('macros_datamodel/blank_definition_profile.xml')
84
+ path = fixtures_path("macros_datamodel/blank_definition_profile.xml")
85
85
  [
86
86
  BLANK_HDR,
87
- File.read(path)
87
+ File.read(path),
88
88
  ].join("\n")
89
89
  end
90
90
 
91
91
  after do
92
92
  %w[doc html xml err].each do |extention|
93
93
  path = examples_path(
94
- "datamodel/blank_definition_profile.#{extention}"
94
+ "datamodel/blank_definition_profile.#{extention}",
95
95
  )
96
96
  FileUtils.rm_f(path)
97
97
  FileUtils.rm_f("blank_definition_profile.#{extention}")
98
98
  end
99
99
  end
100
100
 
101
- it 'correctly renders input' do
101
+ it "correctly renders input" do
102
102
  Asciidoctor.convert_file(datamodel_file,
103
103
  backend: :standoc,
104
104
  safe: :safe,
@@ -1,22 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  RSpec.describe Asciidoctor::Standoc::Datamodel::DiagramPreprocessor do
6
- describe '#process' do
7
- context 'when simple models without relations' do
6
+ describe "#process" do
7
+ context "when simple models without relations" do
8
8
  let(:datamodel_file) do
9
- examples_path('datamodel/common_models_diagram.adoc')
9
+ examples_path("datamodel/common_models_diagram.adoc")
10
10
  end
11
11
  let(:result_file) do
12
- examples_path('datamodel/common_models_diagram.xml')
12
+ examples_path("datamodel/common_models_diagram.xml")
13
13
  end
14
14
  let(:output) do
15
15
  [
16
16
  BLANK_HDR,
17
17
  File.read(
18
- fixtures_path('macros_datamodel/common_models_diagram.xml')
19
- )
18
+ fixtures_path("macros_datamodel/common_models_diagram.xml"),
19
+ ),
20
20
  ].join
21
21
  end
22
22
 
@@ -26,10 +26,10 @@ RSpec.describe Asciidoctor::Standoc::Datamodel::DiagramPreprocessor do
26
26
  FileUtils.rm_f(path)
27
27
  FileUtils.rm_f("common_models_diagram.#{extention}")
28
28
  end
29
- FileUtils.rm_rf('common_models_diagram_htmlimages')
29
+ FileUtils.rm_rf("common_models_diagram_htmlimages")
30
30
  end
31
31
 
32
- it 'correctly renders input' do
32
+ it "correctly renders input" do
33
33
  Asciidoctor.convert_file(datamodel_file,
34
34
  backend: :standoc,
35
35
  safe: :safe,
@@ -39,13 +39,13 @@ RSpec.describe Asciidoctor::Standoc::Datamodel::DiagramPreprocessor do
39
39
  end
40
40
  end
41
41
 
42
- context 'when complex relations' do
43
- let(:datamodel_file) { examples_path('datamodel/top_down_diagram.adoc') }
44
- let(:result_file) { examples_path('datamodel/top_down_diagram.xml') }
42
+ context "when complex relations" do
43
+ let(:datamodel_file) { examples_path("datamodel/top_down_diagram.adoc") }
44
+ let(:result_file) { examples_path("datamodel/top_down_diagram.xml") }
45
45
  let(:output) do
46
46
  [
47
47
  BLANK_HDR,
48
- File.read(fixtures_path('macros_datamodel/top_down_diagram.xml'))
48
+ File.read(fixtures_path("macros_datamodel/top_down_diagram.xml")),
49
49
  ].join("\n")
50
50
  end
51
51
 
@@ -55,11 +55,11 @@ RSpec.describe Asciidoctor::Standoc::Datamodel::DiagramPreprocessor do
55
55
  FileUtils.rm_f(path)
56
56
  FileUtils.rm_f("top_down_diagram.#{extention}")
57
57
  end
58
- FileUtils.rm_rf(examples_path('datamodel/plantuml'))
59
- FileUtils.rm_rf('top_down_diagram_htmlimages')
58
+ FileUtils.rm_rf(examples_path("datamodel/plantuml"))
59
+ FileUtils.rm_rf("top_down_diagram_htmlimages")
60
60
  end
61
61
 
62
- it 'correctly renders input' do
62
+ it "correctly renders input" do
63
63
  Asciidoctor.convert_file(datamodel_file,
64
64
  backend: :standoc,
65
65
  safe: :safe,
@@ -73,8 +73,8 @@ RSpec.describe Asciidoctor::Standoc do
73
73
  sub<sub><em>scr</em>ipt</sub>
74
74
  <stem type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML"><msub> <mrow> <mrow> <mi mathvariant="bold-italic">F</mi> </mrow> </mrow> <mrow> <mrow> <mi mathvariant="bold-italic">Α</mi> </mrow> </mrow> </msub> </math></stem>
75
75
  mark
76
- <admitted>alt</admitted>
77
- <deprecates>deprecated</deprecates>
76
+ <admitted><expression><name>alt</name></expression></admitted>
77
+ <deprecates><expression><name>deprecated</name></expression></deprecates>
78
78
  <domain>domain</domain>
79
79
  <strike>strike</strike>
80
80
  <underline>underline</underline>
@@ -294,9 +294,9 @@ RSpec.describe Asciidoctor::Standoc do
294
294
  http://example.com[Link]
295
295
  http://example.com[Link,title="tip"]
296
296
  link:++https://asciidoctor.org/now_this__link_works.html++[]
297
- http://example.com[Link,updatetype=true]
297
+ http://example.com[Link,update-type=true]
298
298
  link:../example[updatetype=true]
299
- link:../example[Link,updatetype=true]
299
+ link:../example[Link,update-type=true]
300
300
  INPUT
301
301
  output = <<~OUTPUT
302
302
  #{BLANK_HDR}
@@ -306,9 +306,9 @@ RSpec.describe Asciidoctor::Standoc do
306
306
  <link target="http://example.com">Link</link>
307
307
  <link target="http://example.com" alt="tip">Link</link>
308
308
  <link target='https://asciidoctor.org/now_this__link_works.html'/>
309
- <link target="http://example.com" updatetype="true">Link</link>
310
- <link target="../example" updatetype="true"/>
311
- <link target="../example" updatetype="true">Link</link></p>
309
+ <link target="http://example.com" update-type="true">Link</link>
310
+ <link target="../example" update-type="true"/>
311
+ <link target="../example" update-type="true">Link</link></p>
312
312
  </p>
313
313
  </sections>
314
314
  </standard-document>
@@ -716,29 +716,25 @@ RSpec.describe Asciidoctor::Standoc do
716
716
 
717
717
  def mock_isobib_get_123
718
718
  expect(RelatonIso::IsoBibliography).to receive(:get)
719
- .with("ISO 123", "2001",
720
- { lang: "en", title: "<em>Standard</em>", usrlbl: nil })
719
+ .with("ISO 123", "2001", anything)
721
720
  .and_return(RelatonIsoBib::XMLParser.from_xml(ISO_123_DATED))
722
721
  end
723
722
 
724
723
  def mock_isobib_get_123_undated
725
724
  expect(RelatonIso::IsoBibliography).to receive(:get)
726
- .with("ISO 123", nil,
727
- { lang: "en", title: "<em>Standard</em>", usrlbl: nil })
725
+ .with("ISO 123", nil, anything)
728
726
  .and_return(RelatonIsoBib::XMLParser.from_xml(ISO_123_UNDATED))
729
727
  end
730
728
 
731
729
  def mock_isobib_get_124
732
730
  expect(RelatonIso::IsoBibliography).to receive(:get)
733
- .with("ISO 124", "2014",
734
- { lang: "en", title: "<em>Standard</em>", usrlbl: nil })
731
+ .with("ISO 124", "2014", anything)
735
732
  .and_return(RelatonIsoBib::XMLParser.from_xml(ISO_124_DATED))
736
733
  end
737
734
 
738
735
  def mock_ietfbib_get_123
739
736
  expect(RelatonIetf::IetfBibliography).to receive(:get)
740
- .with("RFC 123", nil,
741
- { lang: "en", title: "<em>Standard</em>", usrlbl: nil })
737
+ .with("RFC 123", nil, anything)
742
738
  .and_return(RelatonIsoBib::XMLParser.from_xml(IETF_123_SHORT))
743
739
  end
744
740
  end
@@ -64,6 +64,7 @@ RSpec.describe Asciidoctor::Standoc do
64
64
  :novalid:
65
65
  :no-isobib:
66
66
  :imagesdir: spec/assets
67
+ :data-uri-image: false
67
68
 
68
69
  [plantuml]
69
70
  ....
@@ -100,6 +101,7 @@ RSpec.describe Asciidoctor::Standoc do
100
101
  :novalid:
101
102
  :no-isobib:
102
103
  :imagesdir: spec/assets
104
+ :data-uri-image: false
103
105
 
104
106
  [lutaml_diagram]
105
107
  ....
@@ -135,7 +137,7 @@ RSpec.describe Asciidoctor::Standoc do
135
137
  end
136
138
 
137
139
  context "when inline macro, path supplied as the second arg" do
138
- let(:example_file) { fixtures_path('diagram_definitions.lutaml') }
140
+ let(:example_file) { fixtures_path("diagram_definitions.lutaml") }
139
141
  let(:input) do
140
142
  <<~TEXT
141
143
  = Document title
@@ -145,6 +147,7 @@ RSpec.describe Asciidoctor::Standoc do
145
147
  :novalid:
146
148
  :no-isobib:
147
149
  :imagesdir: spec/assets
150
+ :data-uri-image: false
148
151
 
149
152
  lutaml_diagram::#{example_file}[]
150
153
 
@@ -345,6 +348,38 @@ RSpec.describe Asciidoctor::Standoc do
345
348
  .to be_equivalent_to xmlpp(output)
346
349
  end
347
350
 
351
+ it "processes the PlantUML macro with mismatched delimiters" do
352
+ input = <<~INPUT
353
+ #{ASCIIDOC_BLANK_HDR}
354
+
355
+ [plantuml]
356
+ ....
357
+ @startuml
358
+ Alice -> Bob: Authentication Request
359
+ Bob --> Alice: Authentication Response
360
+
361
+ Alice -> Bob: Another authentication Request
362
+ Alice <-- Bob: another authentication Response
363
+ ....
364
+ INPUT
365
+ expect { Asciidoctor.convert(input, *OPTIONS) }
366
+ .to output(%r{@startuml without matching @enduml in PlantUML!}).to_stderr
367
+ output = <<~OUTPUT
368
+ #{BLANK_HDR}
369
+ <sections>
370
+ <sourcecode id="_" lang="plantuml">@startuml
371
+ Alice -&gt; Bob: Authentication Request
372
+ Bob --&gt; Alice: Authentication Response
373
+
374
+ Alice -&gt; Bob: Another authentication Request
375
+ Alice &lt;-- Bob: another authentication Response</sourcecode>
376
+ </sections>
377
+ </standard-document>
378
+ OUTPUT
379
+ expect(xmlpp(strip_guid(Asciidoctor.convert(input, *OPTIONS))))
380
+ .to be_equivalent_to xmlpp(output)
381
+ end
382
+
348
383
  private
349
384
 
350
385
  def mock_plantuml_disabled