coradoc 1.1.5 → 1.1.7

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 (122) 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/Gemfile +11 -0
  8. data/README.adoc +5 -7
  9. data/coradoc.gemspec +5 -16
  10. data/exe/reverse_adoc +1 -1
  11. data/exe/w2a +1 -1
  12. data/flake.lock +114 -0
  13. data/flake.nix +135 -0
  14. data/lib/coradoc/cli.rb +1 -1
  15. data/lib/coradoc/converter.rb +4 -5
  16. data/lib/coradoc/element/attribute.rb +10 -1
  17. data/lib/coradoc/element/attribute_list.rb +4 -3
  18. data/lib/coradoc/element/audio.rb +1 -1
  19. data/lib/coradoc/element/author.rb +2 -2
  20. data/lib/coradoc/element/base.rb +14 -2
  21. data/lib/coradoc/element/bibliography.rb +1 -1
  22. data/lib/coradoc/element/bibliography_entry.rb +1 -1
  23. data/lib/coradoc/element/block/open.rb +1 -1
  24. data/lib/coradoc/element/block.rb +1 -1
  25. data/lib/coradoc/element/document_attributes.rb +8 -2
  26. data/lib/coradoc/element/image/block_image.rb +3 -2
  27. data/lib/coradoc/element/image/core.rb +5 -4
  28. data/lib/coradoc/element/inline/attribute_reference.rb +19 -0
  29. data/lib/coradoc/element/inline/cross_reference.rb +4 -3
  30. data/lib/coradoc/element/inline/footnote.rb +24 -0
  31. data/lib/coradoc/element/inline/small.rb +19 -0
  32. data/lib/coradoc/element/inline/span.rb +37 -0
  33. data/lib/coradoc/element/inline/underline.rb +19 -0
  34. data/lib/coradoc/element/inline.rb +5 -1
  35. data/lib/coradoc/element/list/core.rb +2 -2
  36. data/lib/coradoc/element/list/ordered.rb +1 -0
  37. data/lib/coradoc/element/list/unordered.rb +1 -0
  38. data/lib/coradoc/element/list_item.rb +19 -20
  39. data/lib/coradoc/element/table.rb +4 -2
  40. data/lib/coradoc/element/term.rb +1 -0
  41. data/lib/coradoc/element/text_element.rb +4 -1
  42. data/lib/coradoc/element/title.rb +1 -1
  43. data/lib/coradoc/element/video.rb +2 -2
  44. data/lib/coradoc/input/adoc.rb +20 -18
  45. data/lib/coradoc/input/docx.rb +25 -23
  46. data/lib/coradoc/input/html/README.adoc +1 -1
  47. data/lib/coradoc/input/html/cleaner.rb +121 -117
  48. data/lib/coradoc/input/html/config.rb +58 -56
  49. data/lib/coradoc/input/html/converters/a.rb +44 -39
  50. data/lib/coradoc/input/html/converters/aside.rb +12 -8
  51. data/lib/coradoc/input/html/converters/audio.rb +24 -20
  52. data/lib/coradoc/input/html/converters/base.rb +103 -99
  53. data/lib/coradoc/input/html/converters/blockquote.rb +18 -14
  54. data/lib/coradoc/input/html/converters/br.rb +11 -7
  55. data/lib/coradoc/input/html/converters/bypass.rb +77 -73
  56. data/lib/coradoc/input/html/converters/code.rb +18 -14
  57. data/lib/coradoc/input/html/converters/div.rb +15 -11
  58. data/lib/coradoc/input/html/converters/dl.rb +51 -44
  59. data/lib/coradoc/input/html/converters/drop.rb +21 -17
  60. data/lib/coradoc/input/html/converters/em.rb +16 -12
  61. data/lib/coradoc/input/html/converters/figure.rb +19 -15
  62. data/lib/coradoc/input/html/converters/h.rb +32 -30
  63. data/lib/coradoc/input/html/converters/head.rb +17 -13
  64. data/lib/coradoc/input/html/converters/hr.rb +11 -7
  65. data/lib/coradoc/input/html/converters/ignore.rb +15 -11
  66. data/lib/coradoc/input/html/converters/img.rb +98 -93
  67. data/lib/coradoc/input/html/converters/li.rb +13 -9
  68. data/lib/coradoc/input/html/converters/mark.rb +14 -10
  69. data/lib/coradoc/input/html/converters/markup.rb +22 -18
  70. data/lib/coradoc/input/html/converters/math.rb +26 -19
  71. data/lib/coradoc/input/html/converters/ol.rb +55 -50
  72. data/lib/coradoc/input/html/converters/p.rb +16 -12
  73. data/lib/coradoc/input/html/converters/pass_through.rb +12 -8
  74. data/lib/coradoc/input/html/converters/pre.rb +49 -45
  75. data/lib/coradoc/input/html/converters/q.rb +12 -8
  76. data/lib/coradoc/input/html/converters/strong.rb +15 -11
  77. data/lib/coradoc/input/html/converters/sub.rb +15 -11
  78. data/lib/coradoc/input/html/converters/sup.rb +15 -11
  79. data/lib/coradoc/input/html/converters/table.rb +21 -13
  80. data/lib/coradoc/input/html/converters/td.rb +64 -60
  81. data/lib/coradoc/input/html/converters/text.rb +24 -20
  82. data/lib/coradoc/input/html/converters/th.rb +13 -9
  83. data/lib/coradoc/input/html/converters/tr.rb +17 -13
  84. data/lib/coradoc/input/html/converters/video.rb +24 -20
  85. data/lib/coradoc/input/html/converters.rb +45 -43
  86. data/lib/coradoc/input/html/errors.rb +8 -6
  87. data/lib/coradoc/input/html/html_converter.rb +93 -90
  88. data/lib/coradoc/input/html/plugin.rb +104 -104
  89. data/lib/coradoc/input/html/plugins/plateau.rb +197 -190
  90. data/lib/coradoc/input/html/postprocessor.rb +188 -182
  91. data/lib/coradoc/input/html.rb +34 -32
  92. data/lib/coradoc/oscal.rb +18 -5
  93. data/lib/coradoc/output/adoc.rb +13 -11
  94. data/lib/coradoc/output/coradoc_tree_debug.rb +15 -13
  95. data/lib/coradoc/parser/asciidoc/admonition.rb +6 -6
  96. data/lib/coradoc/parser/asciidoc/attribute_list.rb +43 -27
  97. data/lib/coradoc/parser/asciidoc/base.rb +3 -6
  98. data/lib/coradoc/parser/asciidoc/bibliography.rb +5 -6
  99. data/lib/coradoc/parser/asciidoc/block.rb +30 -31
  100. data/lib/coradoc/parser/asciidoc/citation.rb +11 -29
  101. data/lib/coradoc/parser/asciidoc/content.rb +23 -33
  102. data/lib/coradoc/parser/asciidoc/document_attributes.rb +2 -3
  103. data/lib/coradoc/parser/asciidoc/header.rb +1 -2
  104. data/lib/coradoc/parser/asciidoc/inline.rb +165 -42
  105. data/lib/coradoc/parser/asciidoc/list.rb +27 -27
  106. data/lib/coradoc/parser/asciidoc/paragraph.rb +28 -19
  107. data/lib/coradoc/parser/asciidoc/section.rb +11 -17
  108. data/lib/coradoc/parser/asciidoc/table.rb +5 -5
  109. data/lib/coradoc/parser/asciidoc/term.rb +24 -8
  110. data/lib/coradoc/parser/asciidoc/text.rb +18 -21
  111. data/lib/coradoc/parser/base.rb +0 -3
  112. data/lib/coradoc/reverse_adoc.rb +3 -3
  113. data/lib/coradoc/transformer.rb +167 -137
  114. data/lib/coradoc/version.rb +1 -1
  115. data/lib/reverse_adoc.rb +1 -1
  116. data/utils/inspect_asciidoc.rb +29 -0
  117. data/utils/parser_analyzer.rb +14 -14
  118. data/utils/round_trip.rb +31 -15
  119. metadata +34 -137
  120. data/.hound.yml +0 -5
  121. data/lib/coradoc/element/inline/citation.rb +0 -24
  122. data/todo.md +0 -10
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,44 +1,44 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coradoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  - Abu Nashir
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2024-12-14 00:00:00.000000000 Z
12
+ date: 2025-03-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: marcel
15
+ name: base64
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 1.0.0
20
+ version: '0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "~>"
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 1.0.0
27
+ version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
- name: mathml2asciimath
29
+ name: marcel
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '0'
34
+ version: 1.0.0
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">="
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '0'
41
+ version: 1.0.0
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: nokogiri
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -82,35 +82,7 @@ dependencies:
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
- name: premailer
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - "~>"
89
- - !ruby/object:Gem::Version
90
- version: 1.11.0
91
- type: :runtime
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - "~>"
96
- - !ruby/object:Gem::Version
97
- version: 1.11.0
98
- - !ruby/object:Gem::Dependency
99
- name: word-to-markdown
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- version: '0'
105
- type: :runtime
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: '0'
112
- - !ruby/object:Gem::Dependency
113
- name: base64
85
+ name: plurimath
114
86
  requirement: !ruby/object:Gem::Requirement
115
87
  requirements:
116
88
  - - ">="
@@ -138,97 +110,13 @@ dependencies:
138
110
  - !ruby/object:Gem::Version
139
111
  version: 1.3.0
140
112
  - !ruby/object:Gem::Dependency
141
- name: codeclimate-test-reporter
142
- requirement: !ruby/object:Gem::Requirement
143
- requirements:
144
- - - ">="
145
- - !ruby/object:Gem::Version
146
- version: '0'
147
- type: :development
148
- prerelease: false
149
- version_requirements: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - ">="
152
- - !ruby/object:Gem::Version
153
- version: '0'
154
- - !ruby/object:Gem::Dependency
155
- name: pry
156
- requirement: !ruby/object:Gem::Requirement
157
- requirements:
158
- - - ">="
159
- - !ruby/object:Gem::Version
160
- version: '0'
161
- type: :development
162
- prerelease: false
163
- version_requirements: !ruby/object:Gem::Requirement
164
- requirements:
165
- - - ">="
166
- - !ruby/object:Gem::Version
167
- version: '0'
168
- - !ruby/object:Gem::Dependency
169
- name: rake
170
- requirement: !ruby/object:Gem::Requirement
171
- requirements:
172
- - - ">="
173
- - !ruby/object:Gem::Version
174
- version: '0'
175
- type: :development
176
- prerelease: false
177
- version_requirements: !ruby/object:Gem::Requirement
178
- requirements:
179
- - - ">="
180
- - !ruby/object:Gem::Version
181
- version: '0'
182
- - !ruby/object:Gem::Dependency
183
- name: redcarpet
184
- requirement: !ruby/object:Gem::Requirement
185
- requirements:
186
- - - ">="
187
- - !ruby/object:Gem::Version
188
- version: '0'
189
- type: :development
190
- prerelease: false
191
- version_requirements: !ruby/object:Gem::Requirement
192
- requirements:
193
- - - ">="
194
- - !ruby/object:Gem::Version
195
- version: '0'
196
- - !ruby/object:Gem::Dependency
197
- name: rspec
198
- requirement: !ruby/object:Gem::Requirement
199
- requirements:
200
- - - ">="
201
- - !ruby/object:Gem::Version
202
- version: '0'
203
- type: :development
204
- prerelease: false
205
- version_requirements: !ruby/object:Gem::Requirement
206
- requirements:
207
- - - ">="
208
- - !ruby/object:Gem::Version
209
- version: '0'
210
- - !ruby/object:Gem::Dependency
211
- name: rubocop
113
+ name: unitsml
212
114
  requirement: !ruby/object:Gem::Requirement
213
115
  requirements:
214
116
  - - ">="
215
117
  - !ruby/object:Gem::Version
216
118
  version: '0'
217
- type: :development
218
- prerelease: false
219
- version_requirements: !ruby/object:Gem::Requirement
220
- requirements:
221
- - - ">="
222
- - !ruby/object:Gem::Version
223
- version: '0'
224
- - !ruby/object:Gem::Dependency
225
- name: rubocop-performance
226
- requirement: !ruby/object:Gem::Requirement
227
- requirements:
228
- - - ">="
229
- - !ruby/object:Gem::Version
230
- version: '0'
231
- type: :development
119
+ type: :runtime
232
120
  prerelease: false
233
121
  version_requirements: !ruby/object:Gem::Requirement
234
122
  requirements:
@@ -236,13 +124,13 @@ dependencies:
236
124
  - !ruby/object:Gem::Version
237
125
  version: '0'
238
126
  - !ruby/object:Gem::Dependency
239
- name: simplecov
127
+ name: word-to-markdown
240
128
  requirement: !ruby/object:Gem::Requirement
241
129
  requirements:
242
130
  - - ">="
243
131
  - !ruby/object:Gem::Version
244
132
  version: '0'
245
- type: :development
133
+ type: :runtime
246
134
  prerelease: false
247
135
  version_requirements: !ruby/object:Gem::Requirement
248
136
  requirements:
@@ -261,9 +149,12 @@ extensions: []
261
149
  extra_rdoc_files: []
262
150
  files:
263
151
  - ".editorconfig"
264
- - ".hound.yml"
152
+ - ".envrc"
153
+ - ".irbrc"
265
154
  - ".pryrc.sample"
155
+ - ".rspec"
266
156
  - ".rubocop.yml"
157
+ - ".rubocop_todo.yml"
267
158
  - CHANGELOG.md
268
159
  - CODE_OF_CONDUCT.md
269
160
  - Dockerfile
@@ -278,6 +169,8 @@ files:
278
169
  - exe/coradoc
279
170
  - exe/reverse_adoc
280
171
  - exe/w2a
172
+ - flake.lock
173
+ - flake.nix
281
174
  - lib/coradoc.rb
282
175
  - lib/coradoc/cli.rb
283
176
  - lib/coradoc/converter.rb
@@ -313,17 +206,21 @@ files:
313
206
  - lib/coradoc/element/include.rb
314
207
  - lib/coradoc/element/inline.rb
315
208
  - lib/coradoc/element/inline/anchor.rb
209
+ - lib/coradoc/element/inline/attribute_reference.rb
316
210
  - lib/coradoc/element/inline/bold.rb
317
- - lib/coradoc/element/inline/citation.rb
318
211
  - lib/coradoc/element/inline/cross_reference.rb
212
+ - lib/coradoc/element/inline/footnote.rb
319
213
  - lib/coradoc/element/inline/hard_line_break.rb
320
214
  - lib/coradoc/element/inline/highlight.rb
321
215
  - lib/coradoc/element/inline/italic.rb
322
216
  - lib/coradoc/element/inline/link.rb
323
217
  - lib/coradoc/element/inline/monospace.rb
324
218
  - lib/coradoc/element/inline/quotation.rb
219
+ - lib/coradoc/element/inline/small.rb
220
+ - lib/coradoc/element/inline/span.rb
325
221
  - lib/coradoc/element/inline/subscript.rb
326
222
  - lib/coradoc/element/inline/superscript.rb
223
+ - lib/coradoc/element/inline/underline.rb
327
224
  - lib/coradoc/element/list.rb
328
225
  - lib/coradoc/element/list/core.rb
329
226
  - lib/coradoc/element/list/definition.rb
@@ -419,7 +316,7 @@ files:
419
316
  - lib/coradoc/util.rb
420
317
  - lib/coradoc/version.rb
421
318
  - lib/reverse_adoc.rb
422
- - todo.md
319
+ - utils/inspect_asciidoc.rb
423
320
  - utils/parser_analyzer.rb
424
321
  - utils/round_trip.rb
425
322
  homepage: https://www.metanorma.org
@@ -428,7 +325,7 @@ licenses:
428
325
  metadata:
429
326
  homepage_uri: https://www.metanorma.org
430
327
  source_code_uri: https://github.com/metanorma/coradoc
431
- post_install_message:
328
+ post_install_message:
432
329
  rdoc_options: []
433
330
  require_paths:
434
331
  - lib
@@ -436,15 +333,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
436
333
  requirements:
437
334
  - - ">="
438
335
  - !ruby/object:Gem::Version
439
- version: 2.7.0
336
+ version: 3.1.0
440
337
  required_rubygems_version: !ruby/object:Gem::Requirement
441
338
  requirements:
442
339
  - - ">="
443
340
  - !ruby/object:Gem::Version
444
341
  version: '0'
445
342
  requirements: []
446
- rubygems_version: 3.3.27
447
- signing_key:
343
+ rubygems_version: 3.5.22
344
+ signing_key:
448
345
  specification_version: 4
449
346
  summary: AsciiDoc parser for metanorma
450
347
  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
data/todo.md DELETED
@@ -1,10 +0,0 @@
1
- ## Metanorma Parser
2
-
3
- ### Todos
4
-
5
- - Parse the ascii doc
6
-
7
- ### References
8
-
9
- - https://www.rubydoc.info/gems/asciidoctor/2.0.18
10
- - https://docs.asciidoctor.org/asciidoctor/latest/api/convert-files/