coradoc 1.1.6 → 1.1.8

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 (120) hide show
  1. checksums.yaml +4 -4
  2. data/.envrc +1 -0
  3. data/.irbrc +1 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +5 -1
  6. data/.rubocop_todo.yml +179 -0
  7. data/README.adoc +5 -0
  8. data/coradoc.gemspec +5 -5
  9. data/exe/reverse_adoc +1 -1
  10. data/exe/w2a +1 -1
  11. data/flake.lock +114 -0
  12. data/flake.nix +135 -0
  13. data/lib/coradoc/cli.rb +1 -1
  14. data/lib/coradoc/converter.rb +4 -5
  15. data/lib/coradoc/element/attribute.rb +10 -1
  16. data/lib/coradoc/element/attribute_list.rb +4 -3
  17. data/lib/coradoc/element/audio.rb +1 -1
  18. data/lib/coradoc/element/author.rb +2 -2
  19. data/lib/coradoc/element/base.rb +14 -2
  20. data/lib/coradoc/element/bibliography.rb +1 -1
  21. data/lib/coradoc/element/bibliography_entry.rb +1 -1
  22. data/lib/coradoc/element/block/open.rb +1 -1
  23. data/lib/coradoc/element/block.rb +1 -1
  24. data/lib/coradoc/element/document_attributes.rb +8 -2
  25. data/lib/coradoc/element/image/block_image.rb +3 -2
  26. data/lib/coradoc/element/image/core.rb +5 -4
  27. data/lib/coradoc/element/inline/attribute_reference.rb +19 -0
  28. data/lib/coradoc/element/inline/cross_reference.rb +4 -3
  29. data/lib/coradoc/element/inline/footnote.rb +24 -0
  30. data/lib/coradoc/element/inline/small.rb +19 -0
  31. data/lib/coradoc/element/inline/span.rb +37 -0
  32. data/lib/coradoc/element/inline/underline.rb +19 -0
  33. data/lib/coradoc/element/inline.rb +5 -1
  34. data/lib/coradoc/element/list/core.rb +2 -2
  35. data/lib/coradoc/element/list/ordered.rb +1 -0
  36. data/lib/coradoc/element/list/unordered.rb +1 -0
  37. data/lib/coradoc/element/list_item.rb +19 -20
  38. data/lib/coradoc/element/table.rb +4 -2
  39. data/lib/coradoc/element/term.rb +1 -0
  40. data/lib/coradoc/element/text_element.rb +4 -1
  41. data/lib/coradoc/element/title.rb +1 -1
  42. data/lib/coradoc/element/video.rb +2 -2
  43. data/lib/coradoc/input/adoc.rb +20 -18
  44. data/lib/coradoc/input/docx.rb +53 -24
  45. data/lib/coradoc/input/html/README.adoc +1 -1
  46. data/lib/coradoc/input/html/cleaner.rb +121 -117
  47. data/lib/coradoc/input/html/config.rb +58 -56
  48. data/lib/coradoc/input/html/converters/a.rb +44 -39
  49. data/lib/coradoc/input/html/converters/aside.rb +12 -8
  50. data/lib/coradoc/input/html/converters/audio.rb +24 -20
  51. data/lib/coradoc/input/html/converters/base.rb +103 -99
  52. data/lib/coradoc/input/html/converters/blockquote.rb +18 -14
  53. data/lib/coradoc/input/html/converters/br.rb +11 -7
  54. data/lib/coradoc/input/html/converters/bypass.rb +77 -73
  55. data/lib/coradoc/input/html/converters/code.rb +18 -14
  56. data/lib/coradoc/input/html/converters/div.rb +15 -11
  57. data/lib/coradoc/input/html/converters/dl.rb +51 -44
  58. data/lib/coradoc/input/html/converters/drop.rb +21 -17
  59. data/lib/coradoc/input/html/converters/em.rb +16 -12
  60. data/lib/coradoc/input/html/converters/figure.rb +19 -15
  61. data/lib/coradoc/input/html/converters/h.rb +32 -30
  62. data/lib/coradoc/input/html/converters/head.rb +17 -13
  63. data/lib/coradoc/input/html/converters/hr.rb +11 -7
  64. data/lib/coradoc/input/html/converters/ignore.rb +15 -11
  65. data/lib/coradoc/input/html/converters/img.rb +98 -93
  66. data/lib/coradoc/input/html/converters/li.rb +13 -9
  67. data/lib/coradoc/input/html/converters/mark.rb +14 -10
  68. data/lib/coradoc/input/html/converters/markup.rb +22 -18
  69. data/lib/coradoc/input/html/converters/math.rb +24 -20
  70. data/lib/coradoc/input/html/converters/ol.rb +55 -50
  71. data/lib/coradoc/input/html/converters/p.rb +16 -12
  72. data/lib/coradoc/input/html/converters/pass_through.rb +12 -8
  73. data/lib/coradoc/input/html/converters/pre.rb +49 -45
  74. data/lib/coradoc/input/html/converters/q.rb +12 -8
  75. data/lib/coradoc/input/html/converters/strong.rb +15 -11
  76. data/lib/coradoc/input/html/converters/sub.rb +15 -11
  77. data/lib/coradoc/input/html/converters/sup.rb +15 -11
  78. data/lib/coradoc/input/html/converters/table.rb +21 -13
  79. data/lib/coradoc/input/html/converters/td.rb +64 -60
  80. data/lib/coradoc/input/html/converters/text.rb +24 -20
  81. data/lib/coradoc/input/html/converters/th.rb +13 -9
  82. data/lib/coradoc/input/html/converters/tr.rb +17 -13
  83. data/lib/coradoc/input/html/converters/video.rb +24 -20
  84. data/lib/coradoc/input/html/converters.rb +45 -43
  85. data/lib/coradoc/input/html/errors.rb +8 -6
  86. data/lib/coradoc/input/html/html_converter.rb +93 -90
  87. data/lib/coradoc/input/html/plugin.rb +104 -104
  88. data/lib/coradoc/input/html/plugins/plateau.rb +197 -190
  89. data/lib/coradoc/input/html/postprocessor.rb +188 -182
  90. data/lib/coradoc/input/html.rb +34 -32
  91. data/lib/coradoc/oscal.rb +18 -5
  92. data/lib/coradoc/output/adoc.rb +13 -11
  93. data/lib/coradoc/output/coradoc_tree_debug.rb +15 -13
  94. data/lib/coradoc/parser/asciidoc/admonition.rb +6 -6
  95. data/lib/coradoc/parser/asciidoc/attribute_list.rb +43 -27
  96. data/lib/coradoc/parser/asciidoc/base.rb +3 -6
  97. data/lib/coradoc/parser/asciidoc/bibliography.rb +5 -6
  98. data/lib/coradoc/parser/asciidoc/block.rb +30 -31
  99. data/lib/coradoc/parser/asciidoc/citation.rb +11 -29
  100. data/lib/coradoc/parser/asciidoc/content.rb +23 -33
  101. data/lib/coradoc/parser/asciidoc/document_attributes.rb +2 -3
  102. data/lib/coradoc/parser/asciidoc/header.rb +1 -2
  103. data/lib/coradoc/parser/asciidoc/inline.rb +165 -42
  104. data/lib/coradoc/parser/asciidoc/list.rb +27 -27
  105. data/lib/coradoc/parser/asciidoc/paragraph.rb +28 -19
  106. data/lib/coradoc/parser/asciidoc/section.rb +11 -17
  107. data/lib/coradoc/parser/asciidoc/table.rb +5 -5
  108. data/lib/coradoc/parser/asciidoc/term.rb +24 -8
  109. data/lib/coradoc/parser/asciidoc/text.rb +18 -21
  110. data/lib/coradoc/parser/base.rb +0 -3
  111. data/lib/coradoc/reverse_adoc.rb +3 -3
  112. data/lib/coradoc/transformer.rb +167 -137
  113. data/lib/coradoc/version.rb +1 -1
  114. data/lib/reverse_adoc.rb +1 -1
  115. data/utils/inspect_asciidoc.rb +29 -0
  116. data/utils/parser_analyzer.rb +14 -14
  117. data/utils/round_trip.rb +31 -15
  118. metadata +41 -34
  119. data/.hound.yml +0 -5
  120. data/lib/coradoc/element/inline/citation.rb +0 -24
data/utils/round_trip.rb CHANGED
@@ -3,35 +3,51 @@ $LOAD_PATH.unshift("../coradoc/lib")
3
3
  require "coradoc"
4
4
  require "coradoc/input/html"
5
5
 
6
+ require "pp"
7
+ require "stringio"
6
8
 
7
- rice_path = "../mn-samples-iso/sources/international-standard/rice-2023/"
9
+ rt = ARGV[0]
8
10
 
9
- if !Dir.exist?(rice_path)
11
+ rt_path = if rt == "rice-2023"
12
+ "../mn-samples-iso/sources/international-standard/rice-2023/"
13
+ elsif rt.to_s.include? "samples"
14
+ "../mn-samples-iso/sources/"
15
+ else
16
+ "./spec/fixtures/"
17
+ end
18
+
19
+ if !Dir.exist?(rt_path)
10
20
  puts "pleas set path to rice-2023"
11
21
  exit
12
22
  end
13
23
 
14
- adoc_files = Dir.glob("#{rice_path}**/*adoc")
24
+ adoc_files = Dir.glob("#{rt_path}**/*adoc")
15
25
 
16
26
  adoc_files.each do |file_path|
17
27
  puts file_path
28
+ file_path_ast = "#{file_path}.ast"
18
29
  file_path_rt = "#{file_path}.roundtrip"
19
30
  file_path_diff = "#{file_path}.roundtrip.diff"
20
31
  FileUtils.rm(file_path_rt) if File.exist?(file_path_rt)
21
32
  FileUtils.rm(file_path_diff) if File.exist?(file_path_diff)
22
33
  # begin
23
- adoc_file = File.open(file_path).read
24
- next if adoc_file.size == 0
25
- puts "parsing..."
26
- ast = Coradoc::Parser::Base.new.parse(adoc_file)
27
- puts "transforming..."
28
- doc = Coradoc::Transformer.transform(ast[:document])
29
- puts "generating..."
30
- generated_adoc = Coradoc::Generator.gen_adoc(doc)
31
- cleaned_adoc = Coradoc::Input::HTML.cleaner.tidy(generated_adoc)
32
- File.open("#{file_path}.roundtrip","w"){|f| f.write(cleaned_adoc)}
33
- `diff -BNaur #{file_path} #{file_path}.roundtrip > #{file_path}.roundtrip.diff`
34
+ adoc_file = File.open(file_path).read
35
+ next if adoc_file.empty?
36
+
37
+ puts "parsing..."
38
+ ast = Coradoc::Parser::Base.new.parse(adoc_file)
39
+ sio = StringIO.new
40
+ PP.pp(ast, sio)
41
+ ast_string = sio.string
42
+ File.open(file_path_ast, "w") { |f| f.write(ast_string) }
43
+ puts "transforming..."
44
+ doc = Coradoc::Transformer.transform(ast[:document])
45
+ puts "generating..."
46
+ generated_adoc = Coradoc::Generator.gen_adoc(doc)
47
+ cleaned_adoc = Coradoc::Input::HTML.cleaner.tidy(generated_adoc)
48
+ File.open("#{file_path}.roundtrip", "w") { |f| f.write(cleaned_adoc) }
49
+ `diff -B #{file_path} #{file_path}.roundtrip > #{file_path}.roundtrip.diff`
34
50
  # rescue
35
- # puts "unsuccessful..."
51
+ # puts "unsuccessful..."
36
52
  # end
37
53
  end
metadata CHANGED
@@ -1,32 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coradoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.6
4
+ version: 1.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  - Abu Nashir
9
- autorequire:
10
9
  bindir: exe
11
10
  cert_chain: []
12
- date: 2025-02-08 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: marcel
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - "~>"
19
- - !ruby/object:Gem::Version
20
- version: 1.0.0
21
- type: :runtime
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - "~>"
26
- - !ruby/object:Gem::Version
27
- version: 1.0.0
28
- - !ruby/object:Gem::Dependency
29
- name: plurimath
14
+ name: base64
30
15
  requirement: !ruby/object:Gem::Requirement
31
16
  requirements:
32
17
  - - ">="
@@ -40,19 +25,19 @@ dependencies:
40
25
  - !ruby/object:Gem::Version
41
26
  version: '0'
42
27
  - !ruby/object:Gem::Dependency
43
- name: unitsml
28
+ name: marcel
44
29
  requirement: !ruby/object:Gem::Requirement
45
30
  requirements:
46
- - - ">="
31
+ - - "~>"
47
32
  - !ruby/object:Gem::Version
48
- version: '0'
33
+ version: 1.0.0
49
34
  type: :runtime
50
35
  prerelease: false
51
36
  version_requirements: !ruby/object:Gem::Requirement
52
37
  requirements:
53
- - - ">="
38
+ - - "~>"
54
39
  - !ruby/object:Gem::Version
55
- version: '0'
40
+ version: 1.0.0
56
41
  - !ruby/object:Gem::Dependency
57
42
  name: nokogiri
58
43
  requirement: !ruby/object:Gem::Requirement
@@ -96,7 +81,7 @@ dependencies:
96
81
  - !ruby/object:Gem::Version
97
82
  version: '0'
98
83
  - !ruby/object:Gem::Dependency
99
- name: word-to-markdown
84
+ name: plurimath
100
85
  requirement: !ruby/object:Gem::Requirement
101
86
  requirements:
102
87
  - - ">="
@@ -110,7 +95,21 @@ dependencies:
110
95
  - !ruby/object:Gem::Version
111
96
  version: '0'
112
97
  - !ruby/object:Gem::Dependency
113
- name: base64
98
+ name: thor
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 1.3.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 1.3.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: unitsml
114
113
  requirement: !ruby/object:Gem::Requirement
115
114
  requirements:
116
115
  - - ">="
@@ -124,19 +123,19 @@ dependencies:
124
123
  - !ruby/object:Gem::Version
125
124
  version: '0'
126
125
  - !ruby/object:Gem::Dependency
127
- name: thor
126
+ name: word-to-markdown
128
127
  requirement: !ruby/object:Gem::Requirement
129
128
  requirements:
130
129
  - - ">="
131
130
  - !ruby/object:Gem::Version
132
- version: 1.3.0
131
+ version: '0'
133
132
  type: :runtime
134
133
  prerelease: false
135
134
  version_requirements: !ruby/object:Gem::Requirement
136
135
  requirements:
137
136
  - - ">="
138
137
  - !ruby/object:Gem::Version
139
- version: 1.3.0
138
+ version: '0'
140
139
  description: Experimental AsciiDoc parser for metanorma
141
140
  email:
142
141
  - open.source@ribose.com
@@ -149,9 +148,12 @@ extensions: []
149
148
  extra_rdoc_files: []
150
149
  files:
151
150
  - ".editorconfig"
152
- - ".hound.yml"
151
+ - ".envrc"
152
+ - ".irbrc"
153
153
  - ".pryrc.sample"
154
+ - ".rspec"
154
155
  - ".rubocop.yml"
156
+ - ".rubocop_todo.yml"
155
157
  - CHANGELOG.md
156
158
  - CODE_OF_CONDUCT.md
157
159
  - Dockerfile
@@ -166,6 +168,8 @@ files:
166
168
  - exe/coradoc
167
169
  - exe/reverse_adoc
168
170
  - exe/w2a
171
+ - flake.lock
172
+ - flake.nix
169
173
  - lib/coradoc.rb
170
174
  - lib/coradoc/cli.rb
171
175
  - lib/coradoc/converter.rb
@@ -201,17 +205,21 @@ files:
201
205
  - lib/coradoc/element/include.rb
202
206
  - lib/coradoc/element/inline.rb
203
207
  - lib/coradoc/element/inline/anchor.rb
208
+ - lib/coradoc/element/inline/attribute_reference.rb
204
209
  - lib/coradoc/element/inline/bold.rb
205
- - lib/coradoc/element/inline/citation.rb
206
210
  - lib/coradoc/element/inline/cross_reference.rb
211
+ - lib/coradoc/element/inline/footnote.rb
207
212
  - lib/coradoc/element/inline/hard_line_break.rb
208
213
  - lib/coradoc/element/inline/highlight.rb
209
214
  - lib/coradoc/element/inline/italic.rb
210
215
  - lib/coradoc/element/inline/link.rb
211
216
  - lib/coradoc/element/inline/monospace.rb
212
217
  - lib/coradoc/element/inline/quotation.rb
218
+ - lib/coradoc/element/inline/small.rb
219
+ - lib/coradoc/element/inline/span.rb
213
220
  - lib/coradoc/element/inline/subscript.rb
214
221
  - lib/coradoc/element/inline/superscript.rb
222
+ - lib/coradoc/element/inline/underline.rb
215
223
  - lib/coradoc/element/list.rb
216
224
  - lib/coradoc/element/list/core.rb
217
225
  - lib/coradoc/element/list/definition.rb
@@ -307,6 +315,7 @@ files:
307
315
  - lib/coradoc/util.rb
308
316
  - lib/coradoc/version.rb
309
317
  - lib/reverse_adoc.rb
318
+ - utils/inspect_asciidoc.rb
310
319
  - utils/parser_analyzer.rb
311
320
  - utils/round_trip.rb
312
321
  homepage: https://www.metanorma.org
@@ -315,7 +324,6 @@ licenses:
315
324
  metadata:
316
325
  homepage_uri: https://www.metanorma.org
317
326
  source_code_uri: https://github.com/metanorma/coradoc
318
- post_install_message:
319
327
  rdoc_options: []
320
328
  require_paths:
321
329
  - lib
@@ -323,15 +331,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
323
331
  requirements:
324
332
  - - ">="
325
333
  - !ruby/object:Gem::Version
326
- version: 2.7.0
334
+ version: 3.1.0
327
335
  required_rubygems_version: !ruby/object:Gem::Requirement
328
336
  requirements:
329
337
  - - ">="
330
338
  - !ruby/object:Gem::Version
331
339
  version: '0'
332
340
  requirements: []
333
- rubygems_version: 3.3.27
334
- signing_key:
341
+ rubygems_version: 3.6.9
335
342
  specification_version: 4
336
343
  summary: AsciiDoc parser for metanorma
337
344
  test_files: []
data/.hound.yml DELETED
@@ -1,5 +0,0 @@
1
- # Auto-generated by Cimas: Do not edit it manually!
2
- # See https://github.com/metanorma/cimas
3
- ruby:
4
- enabled: true
5
- config_file: .rubocop.yml
@@ -1,24 +0,0 @@
1
- module Coradoc
2
- module Element
3
- module Inline
4
- class Citation < Base
5
- attr_accessor :cross_reference, :comment
6
-
7
- declare_children :cross_reference, :comment
8
-
9
- def initialize(opts = {})
10
- @cross_reference = opts.fetch(:cross_reference, nil)
11
- @comment = opts.fetch(:comment, nil)
12
- end
13
-
14
- def to_adoc
15
- adoc = "[.source]\n"
16
- adoc << @cross_reference.to_adoc if @cross_reference
17
- adoc << "\n" if @cross_reference && !@comment
18
- adoc << Coradoc::Generator.gen_adoc(@comment) if @comment
19
- adoc
20
- end
21
- end
22
- end
23
- end
24
- end