asciidoctor-iso 0.7.3 → 0.7.4

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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.tb.yml +20 -10
  3. data/.travis.yml +3 -1
  4. data/Gemfile.lock +11 -11
  5. data/README.adoc +13 -8
  6. data/lib/asciidoctor/iso/base.rb +3 -0
  7. data/lib/asciidoctor/iso/biblio.rng +43 -25
  8. data/lib/asciidoctor/iso/blocks.rb +2 -2
  9. data/lib/asciidoctor/iso/cleanup.rb +4 -4
  10. data/lib/asciidoctor/iso/cleanup_block.rb +20 -6
  11. data/lib/asciidoctor/iso/cleanup_ref.rb +5 -4
  12. data/lib/asciidoctor/iso/front.rb +10 -3
  13. data/lib/asciidoctor/iso/html/isodoc.scss +15 -1
  14. data/lib/asciidoctor/iso/html/word_iso_titlepage.html +1 -1
  15. data/lib/asciidoctor/iso/html/wordstyle.scss +7 -0
  16. data/lib/asciidoctor/iso/isodoc.rng +19 -30
  17. data/lib/asciidoctor/iso/isostandard.rng +52 -14
  18. data/lib/asciidoctor/iso/section.rb +12 -1
  19. data/lib/asciidoctor/iso/utils.rb +3 -0
  20. data/lib/asciidoctor/iso/validate.rb +6 -6
  21. data/lib/asciidoctor/iso/validate_section.rb +6 -6
  22. data/lib/asciidoctor/iso/validate_style.rb +1 -1
  23. data/lib/asciidoctor/iso/version.rb +1 -1
  24. data/spec/asciidoctor-iso/base_spec.rb +3 -2
  25. data/spec/asciidoctor-iso/blocks_spec.rb +3 -3
  26. data/spec/asciidoctor-iso/cleanup_spec.rb +18 -12
  27. data/spec/asciidoctor-iso/inline_spec.rb +2 -1
  28. data/spec/asciidoctor-iso/refs_spec.rb +14 -7
  29. data/spec/asciidoctor-iso/section_spec.rb +57 -30
  30. data/spec/asciidoctor-iso/validate_spec.rb +8 -8
  31. data/spec/examples/rice.adoc +4 -1
  32. data/spec/examples/rice.preview.html +10 -3
  33. metadata +2 -5
  34. data/spec/examples/rice.doc +0 -18053
  35. data/spec/examples/rice.html +0 -1112
  36. data/spec/examples/rice.xml +0 -965
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 58f094fee040fe809c10907c121a5f57a49eb298
4
- data.tar.gz: ab697dc58b43802eaa4a8b7ed684a7230c7dac75
3
+ metadata.gz: f7daddca4e53f6799078868555fe51888f8ad0dd
4
+ data.tar.gz: 6d069238f149cc8fdb5e6caa49fc2ca92b35c2ac
5
5
  SHA512:
6
- metadata.gz: 62485082baccb11b5a2c494f2326972c526ae62a75487e8392a8f79fd1df08392ec61aae09fe37c5830dfc65f1e82d9b382ca572489d2136cea10595be36b17b
7
- data.tar.gz: 7d6f0b924bdc4cd14b97e21c73ebb917e3d33485809afee917a09c9d21b331e3848b40e3257f7815140ce360e9ac854050f20609b01ac6fe219e6d59d32e5827
6
+ metadata.gz: 06dc788c44fbf112301e8fbb91159efaf44e6c87ac7dd7d108c25e5db7e472911d15099a09f30ed37cd02812c10f054fc1ae23b6fdd619500806c706ec29dff0
7
+ data.tar.gz: 98b8dac9dff88dcb2da02fde81481144729d525f2bc0745a07d0b2cbafe48c7400049af385c8f9584c777e6db3d9c4b9e52e14f612b4728981e08ae07a5e7b67
@@ -352,8 +352,18 @@ Style/TrailingCommaInArguments:
352
352
  - no_comma
353
353
  Enabled: true
354
354
 
355
- Style/TrailingCommaInLiteral:
356
- Description: 'Checks for trailing comma in array and hash literals.'
355
+ Style/TrailingCommaInArrayLiteral:
356
+ Description: 'Checks for trailing comma in array literals.'
357
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
358
+ EnforcedStyleForMultiline: comma
359
+ SupportedStylesForMultiline:
360
+ - comma
361
+ - consistent_comma
362
+ - no_comma
363
+ Enabled: true
364
+
365
+ Style/TrailingCommaInHashLiteral:
366
+ Description: 'Checks for trailing comma in hash literals.'
357
367
  StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
358
368
  EnforcedStyleForMultiline: comma
359
369
  SupportedStylesForMultiline:
@@ -398,6 +408,13 @@ Layout/AlignParameters:
398
408
  StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-double-indent'
399
409
  Enabled: false
400
410
 
411
+ Layout/ConditionPosition:
412
+ Description: >-
413
+ Checks for condition placed in a confusing position relative to
414
+ the keyword.
415
+ StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#same-line-condition'
416
+ Enabled: false
417
+
401
418
  Layout/DotPosition:
402
419
  Description: 'Checks the position of the dot in multi-line method calls.'
403
420
  StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains'
@@ -450,13 +467,6 @@ Lint/CircularArgumentReference:
450
467
  Description: "Don't refer to the keyword argument in the default value."
451
468
  Enabled: false
452
469
 
453
- Lint/ConditionPosition:
454
- Description: >-
455
- Checks for condition placed in a confusing position relative to
456
- the keyword.
457
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#same-line-condition'
458
- Enabled: false
459
-
460
470
  Lint/DeprecatedClassMethods:
461
471
  Description: 'Check for deprecated class method calls.'
462
472
  Enabled: false
@@ -523,7 +533,7 @@ Lint/UnderscorePrefixedVariableName:
523
533
  Description: 'Do not use prefix `_` for a variable that is used.'
524
534
  Enabled: false
525
535
 
526
- Lint/UnneededDisable:
536
+ Lint/UnneededCopDisableDirective:
527
537
  Description: >-
528
538
  Checks for rubocop:disable comments that can be removed.
529
539
  Note: this cop is not disabled when disabling all cops.
@@ -2,4 +2,6 @@ sudo: false
2
2
  language: ruby
3
3
  rvm:
4
4
  - 2.4.3
5
- before_install: gem install bundler -v 1.16.1
5
+ before_install:
6
+ - gem install bundler -v 1.16.1
7
+ - unset _JAVA_OPTIONS
@@ -1,8 +1,8 @@
1
1
  GIT
2
2
  remote: https://github.com/riboseinc/html2doc.git
3
- revision: 3b42789ece0ac0bb3de2c208062aca0feca4f797
3
+ revision: 06a521ffd8fad90149699ae768040d25bba50cee
4
4
  specs:
5
- html2doc (0.6.9)
5
+ html2doc (0.7.0)
6
6
  asciimath
7
7
  htmlentities (~> 4.3.4)
8
8
  image_size
@@ -14,9 +14,9 @@ GIT
14
14
 
15
15
  GIT
16
16
  remote: https://github.com/riboseinc/isodoc.git
17
- revision: e84b3385acf7d6eb025d80756080a1610efc43da
17
+ revision: 951d28f6904f506208af360b2b0e42f7dc0d5d18
18
18
  specs:
19
- isodoc (0.5.7)
19
+ isodoc (0.5.8)
20
20
  asciimath
21
21
  html2doc
22
22
  htmlentities (~> 4.3.4)
@@ -46,7 +46,7 @@ PATH
46
46
  GEM
47
47
  remote: https://rubygems.org/
48
48
  specs:
49
- asciidoctor (1.5.6.2)
49
+ asciidoctor (1.5.7)
50
50
  asciimath (1.0.4)
51
51
  ast (2.4.0)
52
52
  byebug (9.1.0)
@@ -72,14 +72,14 @@ GEM
72
72
  guard-compat (~> 1.1)
73
73
  rspec (>= 2.99.0, < 4.0)
74
74
  htmlentities (4.3.4)
75
- image_size (1.5.0)
75
+ image_size (2.0.0)
76
76
  json (2.1.0)
77
77
  liquid (4.0.0)
78
78
  listen (3.1.5)
79
79
  rb-fsevent (~> 0.9, >= 0.9.4)
80
80
  rb-inotify (~> 0.9, >= 0.9.7)
81
81
  ruby_dep (~> 1.2)
82
- lumberjack (1.0.12)
82
+ lumberjack (1.0.13)
83
83
  method_source (0.9.0)
84
84
  mime-types (3.1)
85
85
  mime-types-data (~> 3.2015)
@@ -93,14 +93,14 @@ GEM
93
93
  shellany (~> 0.0)
94
94
  optout (0.0.2)
95
95
  parallel (1.12.1)
96
- parser (2.5.0.4)
96
+ parser (2.5.1.0)
97
97
  ast (~> 2.4.0)
98
98
  powerpack (0.1.1)
99
99
  pry (0.11.3)
100
100
  coderay (~> 1.1.0)
101
101
  method_source (~> 0.9.0)
102
102
  rainbow (3.0.0)
103
- rake (12.3.0)
103
+ rake (12.3.1)
104
104
  rb-fsevent (0.10.3)
105
105
  rb-inotify (0.9.10)
106
106
  ffi (>= 0.5.0, < 2)
@@ -118,7 +118,7 @@ GEM
118
118
  diff-lcs (>= 1.2.0, < 2.0)
119
119
  rspec-support (~> 3.7.0)
120
120
  rspec-support (3.7.1)
121
- rubocop (0.53.0)
121
+ rubocop (0.55.0)
122
122
  parallel (~> 1.10)
123
123
  parser (>= 2.5)
124
124
  powerpack (~> 0.1)
@@ -144,7 +144,7 @@ GEM
144
144
  thor (0.20.0)
145
145
  thread_safe (0.3.6)
146
146
  timecop (0.9.1)
147
- unicode-display_width (1.3.0)
147
+ unicode-display_width (1.3.2)
148
148
  uuidtools (2.1.5)
149
149
 
150
150
  PLATFORMS
@@ -345,6 +345,16 @@ example:
345
345
  The references cannot contain spaces. Any text following the sequence of localities
346
346
  will be displayed instead of the localities.
347
347
 
348
+ A custom locality can be entered by prefixing it with `locality:`:
349
+
350
+ [source,asciidoctor]
351
+ --
352
+ <<ISO712,locality:frontispiece 5, page 8-10>> # renders as: ISO 712, Frontispiece 5, Page 8-10
353
+ --
354
+
355
+ Custom localities may not contain commas, colons, or space. Localities with the `locality:`
356
+ prefix are recognised in internationalisation configuration files.
357
+
348
358
  === Additional warning types
349
359
 
350
360
  Asciidoctor natively supports the ISO admonitions "Caution", "Warning", and "Important"
@@ -644,13 +654,8 @@ used for validation from the generic IsoDoc grammar
644
654
 
645
655
  The gem has been tested to date against the
646
656
  https://www.iso.org/publication/PUB100407.html["Rice document"], the ISO's
647
- model document of an international standard. This repository includes:
648
-
649
- * the link:spec/examples/rice.adoc[AsciiISO version of the Rice document].
650
- * the link:spec/examples/rice.preview.html[AsciiISO rendering of the Rice document as an HTML preview]
651
- (native Asciidoc rendering)
652
- * the link:spec/examples/rice.xml[ISO XML rendering of the Rice document].
653
- * the link:spec/examples/rice.doc[Word .doc rendering of the Rice document].
654
- * the link:spec/examples/rice.html[HTML rendering of the Rice document].
657
+ model document of an international standard. Sample representation of the Rice document
658
+ in Asciidoctor, and output formats, are included in the https://github.com/riboseinc/isodoc-rice
659
+ repository.
655
660
 
656
661
  See also `link:spec/asciidoctor-iso[]` for individual features.
@@ -38,6 +38,7 @@ module Asciidoctor
38
38
  engine = Sass::Engine.new(@fontheader + stylesheet, syntax: :scss)
39
39
  outname = File.basename(filename, ".*") + ".css"
40
40
  File.open(outname, "w") { |f| f.write(engine.render) }
41
+ @files_to_delete << outname
41
42
  outname
42
43
  end
43
44
 
@@ -72,6 +73,7 @@ module Asciidoctor
72
73
  @draft = node.attributes.has_key?("draft")
73
74
  @novalid = node.attr("novalid")
74
75
  @fontheader = default_fonts(node)
76
+ @files_to_delete = []
75
77
  end
76
78
 
77
79
  def default_fonts(node)
@@ -94,6 +96,7 @@ module Asciidoctor
94
96
  File.open(filename, "w") { |f| f.write(ret) }
95
97
  html_converter(node).convert filename unless node.attr("nodoc")
96
98
  doc_converter(node).convert filename unless node.attr("nodoc")
99
+ @files_to_delete.each { |f| system "rm #{f}" }
97
100
  ret
98
101
  end
99
102
 
@@ -20,7 +20,7 @@
20
20
  <grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
21
21
  <define name="status">
22
22
  <element name="status">
23
- <ref name="FormattedString"/>
23
+ <ref name="LocalizedString"/>
24
24
  </element>
25
25
  </define>
26
26
  <define name="language">
@@ -346,21 +346,9 @@
346
346
  </define>
347
347
  <define name="locality">
348
348
  <element name="locality">
349
+ <!-- attribute type { ( "section" | "clause" | "part" | "paragraph" | "chapter" | "page" | "whole" | "table" | "annex" | "figure" | "note" | "example" | ("locality:", text) ) }, -->
349
350
  <attribute name="type">
350
- <choice>
351
- <value>section</value>
352
- <value>clause</value>
353
- <value>part</value>
354
- <value>paragraph</value>
355
- <value>chapter</value>
356
- <value>page</value>
357
- <value>whole</value>
358
- <value>table</value>
359
- <value>annex</value>
360
- <value>figure</value>
361
- <value>note</value>
362
- <value>example</value>
363
- </choice>
351
+ <ref name="LocalityType"/>
364
352
  </attribute>
365
353
  <ref name="referenceFrom"/>
366
354
  <optional>
@@ -368,6 +356,11 @@
368
356
  </optional>
369
357
  </element>
370
358
  </define>
359
+ <define name="LocalityType">
360
+ <data type="string">
361
+ <param name="pattern">section|clause|part|paragraph|chapter|page|whole|table|annex|figure|note|example|locality:[a-zA-Z0-9_]+</param>
362
+ </data>
363
+ </define>
371
364
  <define name="referenceFrom">
372
365
  <element name="referenceFrom">
373
366
  <text/>
@@ -420,7 +413,7 @@
420
413
  <ref name="formattedref"/>
421
414
  </choice>
422
415
  <zeroOrMore>
423
- <ref name="source"/>
416
+ <ref name="bsource"/>
424
417
  </zeroOrMore>
425
418
  <zeroOrMore>
426
419
  <ref name="docidentifier"/>
@@ -437,9 +430,6 @@
437
430
  <zeroOrMore>
438
431
  <ref name="biblionote"/>
439
432
  </zeroOrMore>
440
- <zeroOrMore>
441
- <ref name="partof"/>
442
- </zeroOrMore>
443
433
  <zeroOrMore>
444
434
  <ref name="language"/>
445
435
  </zeroOrMore>
@@ -464,6 +454,11 @@
464
454
  <ref name="FormattedString"/>
465
455
  </element>
466
456
  </define>
457
+ <define name="bsource">
458
+ <element name="source">
459
+ <ref name="TypedUri"/>
460
+ </element>
461
+ </define>
467
462
  <define name="formattedref">
468
463
  <element name="formattedref">
469
464
  <ref name="FormattedString"/>
@@ -487,8 +482,11 @@
487
482
  <value>published</value>
488
483
  <value>accessed</value>
489
484
  <value>created</value>
490
- <value>activated</value>
485
+ <value>implemented</value>
491
486
  <value>obsoleted</value>
487
+ <value>confirmed</value>
488
+ <value>updated</value>
489
+ <value>issued</value>
492
490
  </choice>
493
491
  </attribute>
494
492
  <ref name="bfrom"/>
@@ -531,11 +529,6 @@
531
529
  <ref name="FormattedString"/>
532
530
  </element>
533
531
  </define>
534
- <define name="partof">
535
- <element name="partof">
536
- <ref name="BibliographicItem"/>
537
- </element>
538
- </define>
539
532
  <define name="copyright">
540
533
  <element name="copyright">
541
534
  <ref name="from"/>
@@ -560,6 +553,31 @@
560
553
  <ref name="ContributorInfo"/>
561
554
  </element>
562
555
  </define>
556
+ <define name="docrelation">
557
+ <element name="relation">
558
+ <attribute name="type">
559
+ <choice>
560
+ <value>parent</value>
561
+ <value>child</value>
562
+ <value>obsoletes</value>
563
+ <value>updates</value>
564
+ <value>updatedBy</value>
565
+ <value>complements</value>
566
+ <value>derivedFrom</value>
567
+ <value>adoptedFrom</value>
568
+ <value>equivalent</value>
569
+ <value>identical</value>
570
+ <value>nonequivalent</value>
571
+ </choice>
572
+ </attribute>
573
+ <element name="bibitem">
574
+ <ref name="BibliographicItem"/>
575
+ </element>
576
+ <zeroOrMore>
577
+ <ref name="locality"/>
578
+ </zeroOrMore>
579
+ </element>
580
+ </define>
563
581
  <!--
564
582
  Anycontents = mixed {
565
583
  https://github.com/relaxng/jing-trang/issues/211
@@ -35,11 +35,11 @@ module Asciidoctor
35
35
 
36
36
  def sidebar_attrs(node)
37
37
  date = node.attr("date") || Date.today.iso8601.gsub(/\+.*$/, "")
38
- date += "T0000" unless /T/.match? date
38
+ date += "T00:00:00Z" unless /T/.match? date
39
39
  {
40
40
  reviewer: node.attr("reviewer") || node.attr("source") || "(Unknown)",
41
41
  id: Utils::anchor_or_uuid(node),
42
- date: date.gsub(/[:-]/, ""),
42
+ date: date,
43
43
  from: node.attr("from"),
44
44
  to: node.attr("to") || node.attr("from"),
45
45
  }
@@ -15,9 +15,9 @@ module Asciidoctor
15
15
  end
16
16
 
17
17
  def cleanup(xmldoc)
18
+ termdef_cleanup(xmldoc)
18
19
  sections_cleanup(xmldoc)
19
20
  obligations_cleanup(xmldoc)
20
- termdef_cleanup(xmldoc)
21
21
  table_cleanup(xmldoc)
22
22
  formula_cleanup(xmldoc)
23
23
  figure_cleanup(xmldoc)
@@ -128,14 +128,14 @@ module Asciidoctor
128
128
  xmldoc.xpath("//terms/p | //terms/ul").each(&:remove)
129
129
  end
130
130
 
131
- def termdef_subsection_cleanup(xmldoc)
131
+ def termdef_subclause_cleanup(xmldoc)
132
132
  xmldoc.xpath("//terms[terms]").each do |t|
133
133
  t.name = "clause"
134
134
  end
135
135
  end
136
136
 
137
137
  def termdocsource_cleanup(xmldoc)
138
- f = xmldoc.at("//foreword")
138
+ f = xmldoc.at("//preface | //sections")
139
139
  xmldoc.xpath("//terms/termdocsource").each do |s|
140
140
  f.previous = s.remove
141
141
  end
@@ -147,7 +147,7 @@ module Asciidoctor
147
147
  termdomain_cleanup(xmldoc)
148
148
  termdefinition_cleanup(xmldoc)
149
149
  termdef_boilerplate_cleanup(xmldoc)
150
- termdef_subsection_cleanup(xmldoc)
150
+ termdef_subclause_cleanup(xmldoc)
151
151
  termdocsource_cleanup(xmldoc)
152
152
  end
153
153
 
@@ -110,13 +110,27 @@ module Asciidoctor
110
110
  subfigure_cleanup(xmldoc)
111
111
  end
112
112
 
113
+ def make_preface(x, s)
114
+ if x.at("//foreword | //introduction")
115
+ preface = s.add_previous_sibling("<preface/>").first
116
+ foreword = x.at("//foreword")
117
+ preface.add_child foreword.remove if foreword
118
+ introduction = x.at("//introduction")
119
+ preface.add_child introduction.remove if introduction
120
+ end
121
+ end
122
+
123
+ def make_bibliography(x, s)
124
+ if x.at("//sections/references")
125
+ biblio = s.add_next_sibling("<bibliography/>").first
126
+ x.xpath("//sections/references").each { |r| biblio.add_child r.remove }
127
+ end
128
+ end
129
+
113
130
  def sections_cleanup(x)
114
131
  s = x.at("//sections")
115
- foreword = x.at("//foreword")
116
- s.previous = foreword.remove if foreword
117
- introduction = x.at("//introduction")
118
- s.previous = introduction.remove if introduction
119
- x.xpath("//sections/references").reverse_each { |r| s.next = r.remove }
132
+ make_preface(x, s)
133
+ make_bibliography(x, s)
120
134
  x.xpath("//sections/annex").reverse_each { |r| s.next = r.remove }
121
135
  end
122
136
 
@@ -144,7 +158,7 @@ module Asciidoctor
144
158
  x.xpath("//annex | //clause").each do |r|
145
159
  r["obligation"] = "normative" unless r["obligation"]
146
160
  end
147
- x.xpath("//subsection").each do |r|
161
+ x.xpath(Utils::SUBCLAUSE_XPATH).each do |r|
148
162
  r["obligation"] = r.at("./ancestor::*/@obligation").text
149
163
  end
150
164
  end
@@ -5,9 +5,10 @@ module Asciidoctor
5
5
  # extending localities to cover ISO referencing
6
6
  LOCALITY_REGEX_STR = <<~REGEXP.freeze
7
7
  ^((?<locality>section|clause|part|paragraph|chapter|page|
8
- table|annex|figure|example|note|formula)\\s+
8
+ table|annex|figure|example|note|formula|
9
+ locality:[^ \\t\\n\\r:,]+)\\s+
9
10
  (?<ref>[^ \\t\\n,:-]+)(-(?<to>[^ \\t\\n,:-]+))?|
10
- (?<locality>whole))[,:]?\\s*
11
+ (?<locality2>whole|locality:[^ \\t\\n\\r:,]+))[,:]?\\s*
11
12
  (?<text>.*)$
12
13
  REGEXP
13
14
  LOCALITY_RE = Regexp.new(LOCALITY_REGEX_STR.gsub(/\s/, ""),
@@ -18,8 +19,8 @@ module Asciidoctor
18
19
  while (m = LOCALITY_RE.match text)
19
20
  ref = m[:ref] ? "<referenceFrom>#{m[:ref]}</referenceFrom>" : ""
20
21
  refto = m[:to] ? "<referenceTo>#{m[:to]}</referenceTo>" : ""
21
- x.add_child("<locality type='#{m[:locality].downcase}'>"\
22
- "#{ref}#{refto}</locality>")
22
+ loc = m[:locality]&.downcase || m[:locality2]&.downcase
23
+ x.add_child("<locality type='#{loc}'>#{ref}#{refto}</locality>")
23
24
  text = m[:text]
24
25
  end
25
26
  x.add_child(text)