asciidoctor-iso 0.7.3 → 0.7.4

Sign up to get free protection for your applications and to get access to all the features.
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)