coradoc 1.1.6 → 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 (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 +25 -23
  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 -31
  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,7 +1,7 @@
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.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
@@ -9,24 +9,10 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2025-02-08 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
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
15
+ name: base64
30
16
  requirement: !ruby/object:Gem::Requirement
31
17
  requirements:
32
18
  - - ">="
@@ -40,19 +26,19 @@ dependencies:
40
26
  - !ruby/object:Gem::Version
41
27
  version: '0'
42
28
  - !ruby/object:Gem::Dependency
43
- name: unitsml
29
+ name: marcel
44
30
  requirement: !ruby/object:Gem::Requirement
45
31
  requirements:
46
- - - ">="
32
+ - - "~>"
47
33
  - !ruby/object:Gem::Version
48
- version: '0'
34
+ version: 1.0.0
49
35
  type: :runtime
50
36
  prerelease: false
51
37
  version_requirements: !ruby/object:Gem::Requirement
52
38
  requirements:
53
- - - ">="
39
+ - - "~>"
54
40
  - !ruby/object:Gem::Version
55
- version: '0'
41
+ version: 1.0.0
56
42
  - !ruby/object:Gem::Dependency
57
43
  name: nokogiri
58
44
  requirement: !ruby/object:Gem::Requirement
@@ -96,7 +82,7 @@ dependencies:
96
82
  - !ruby/object:Gem::Version
97
83
  version: '0'
98
84
  - !ruby/object:Gem::Dependency
99
- name: word-to-markdown
85
+ name: plurimath
100
86
  requirement: !ruby/object:Gem::Requirement
101
87
  requirements:
102
88
  - - ">="
@@ -110,7 +96,21 @@ dependencies:
110
96
  - !ruby/object:Gem::Version
111
97
  version: '0'
112
98
  - !ruby/object:Gem::Dependency
113
- name: base64
99
+ name: thor
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 1.3.0
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: 1.3.0
112
+ - !ruby/object:Gem::Dependency
113
+ name: unitsml
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
116
  - - ">="
@@ -124,19 +124,19 @@ dependencies:
124
124
  - !ruby/object:Gem::Version
125
125
  version: '0'
126
126
  - !ruby/object:Gem::Dependency
127
- name: thor
127
+ name: word-to-markdown
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
130
  - - ">="
131
131
  - !ruby/object:Gem::Version
132
- version: 1.3.0
132
+ version: '0'
133
133
  type: :runtime
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
137
  - - ">="
138
138
  - !ruby/object:Gem::Version
139
- version: 1.3.0
139
+ version: '0'
140
140
  description: Experimental AsciiDoc parser for metanorma
141
141
  email:
142
142
  - open.source@ribose.com
@@ -149,9 +149,12 @@ extensions: []
149
149
  extra_rdoc_files: []
150
150
  files:
151
151
  - ".editorconfig"
152
- - ".hound.yml"
152
+ - ".envrc"
153
+ - ".irbrc"
153
154
  - ".pryrc.sample"
155
+ - ".rspec"
154
156
  - ".rubocop.yml"
157
+ - ".rubocop_todo.yml"
155
158
  - CHANGELOG.md
156
159
  - CODE_OF_CONDUCT.md
157
160
  - Dockerfile
@@ -166,6 +169,8 @@ files:
166
169
  - exe/coradoc
167
170
  - exe/reverse_adoc
168
171
  - exe/w2a
172
+ - flake.lock
173
+ - flake.nix
169
174
  - lib/coradoc.rb
170
175
  - lib/coradoc/cli.rb
171
176
  - lib/coradoc/converter.rb
@@ -201,17 +206,21 @@ files:
201
206
  - lib/coradoc/element/include.rb
202
207
  - lib/coradoc/element/inline.rb
203
208
  - lib/coradoc/element/inline/anchor.rb
209
+ - lib/coradoc/element/inline/attribute_reference.rb
204
210
  - lib/coradoc/element/inline/bold.rb
205
- - lib/coradoc/element/inline/citation.rb
206
211
  - lib/coradoc/element/inline/cross_reference.rb
212
+ - lib/coradoc/element/inline/footnote.rb
207
213
  - lib/coradoc/element/inline/hard_line_break.rb
208
214
  - lib/coradoc/element/inline/highlight.rb
209
215
  - lib/coradoc/element/inline/italic.rb
210
216
  - lib/coradoc/element/inline/link.rb
211
217
  - lib/coradoc/element/inline/monospace.rb
212
218
  - lib/coradoc/element/inline/quotation.rb
219
+ - lib/coradoc/element/inline/small.rb
220
+ - lib/coradoc/element/inline/span.rb
213
221
  - lib/coradoc/element/inline/subscript.rb
214
222
  - lib/coradoc/element/inline/superscript.rb
223
+ - lib/coradoc/element/inline/underline.rb
215
224
  - lib/coradoc/element/list.rb
216
225
  - lib/coradoc/element/list/core.rb
217
226
  - lib/coradoc/element/list/definition.rb
@@ -307,6 +316,7 @@ files:
307
316
  - lib/coradoc/util.rb
308
317
  - lib/coradoc/version.rb
309
318
  - lib/reverse_adoc.rb
319
+ - utils/inspect_asciidoc.rb
310
320
  - utils/parser_analyzer.rb
311
321
  - utils/round_trip.rb
312
322
  homepage: https://www.metanorma.org
@@ -323,14 +333,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
323
333
  requirements:
324
334
  - - ">="
325
335
  - !ruby/object:Gem::Version
326
- version: 2.7.0
336
+ version: 3.1.0
327
337
  required_rubygems_version: !ruby/object:Gem::Requirement
328
338
  requirements:
329
339
  - - ">="
330
340
  - !ruby/object:Gem::Version
331
341
  version: '0'
332
342
  requirements: []
333
- rubygems_version: 3.3.27
343
+ rubygems_version: 3.5.22
334
344
  signing_key:
335
345
  specification_version: 4
336
346
  summary: AsciiDoc parser for metanorma
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