reverse_adoc 0.2.5 → 0.2.10

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 (95) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macos.yml +19 -5
  3. data/.github/workflows/ubuntu.yml +18 -5
  4. data/.github/workflows/windows.yml +20 -6
  5. data/Gemfile +2 -2
  6. data/Gemfile.lock +85 -0
  7. data/README.adoc +12 -25
  8. data/Rakefile +1 -1
  9. data/bin/reverse_adoc +20 -17
  10. data/bin/w2a +18 -31
  11. data/lib/reverse_adoc.rb +27 -0
  12. data/lib/{reverse_asciidoctor → reverse_adoc}/cleaner.rb +27 -4
  13. data/lib/{reverse_asciidoctor → reverse_adoc}/config.rb +3 -2
  14. data/lib/{reverse_asciidoctor → reverse_adoc}/converters.rb +6 -6
  15. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/a.rb +1 -1
  16. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/aside.rb +1 -1
  17. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/audio.rb +1 -1
  18. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/base.rb +2 -2
  19. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/blockquote.rb +2 -2
  20. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/br.rb +1 -1
  21. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/bypass.rb +1 -1
  22. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/code.rb +1 -1
  23. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/div.rb +1 -1
  24. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/drop.rb +1 -1
  25. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/em.rb +1 -1
  26. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/figure.rb +1 -1
  27. data/lib/reverse_adoc/converters/h.rb +34 -0
  28. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/head.rb +1 -1
  29. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/hr.rb +1 -1
  30. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/ignore.rb +1 -1
  31. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/img.rb +27 -29
  32. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/li.rb +1 -1
  33. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/mark.rb +1 -1
  34. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/math.rb +3 -3
  35. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/ol.rb +1 -1
  36. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/p.rb +1 -1
  37. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/pass_through.rb +1 -1
  38. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/pre.rb +1 -1
  39. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/q.rb +1 -1
  40. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/strong.rb +1 -1
  41. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/sub.rb +1 -1
  42. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/sup.rb +1 -1
  43. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/table.rb +1 -1
  44. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/td.rb +1 -1
  45. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/text.rb +1 -1
  46. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/th.rb +1 -1
  47. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/tr.rb +1 -1
  48. data/lib/{reverse_asciidoctor → reverse_adoc}/converters/video.rb +1 -1
  49. data/lib/{reverse_asciidoctor → reverse_adoc}/errors.rb +1 -1
  50. data/lib/reverse_adoc/html_converter.rb +56 -0
  51. data/lib/reverse_adoc/version.rb +3 -0
  52. data/reverse_adoc.gemspec +4 -2
  53. data/spec/assets/anchors.html +2 -0
  54. data/spec/assets/external_images.docx +0 -0
  55. data/spec/assets/external_images.html +35 -0
  56. data/spec/bin/reverse_adoc_spec.rb +32 -0
  57. data/spec/bin/w2a_spec.rb +35 -0
  58. data/spec/components/anchors_spec.rb +3 -2
  59. data/spec/components/basic_spec.rb +2 -2
  60. data/spec/components/code_spec.rb +4 -4
  61. data/spec/components/escapables_spec.rb +2 -2
  62. data/spec/components/from_the_wild_spec.rb +2 -2
  63. data/spec/components/html_fragment_spec.rb +2 -2
  64. data/spec/components/lists_spec.rb +2 -2
  65. data/spec/components/paragraphs_spec.rb +2 -2
  66. data/spec/components/quotation_spec.rb +2 -2
  67. data/spec/components/tables_spec.rb +2 -2
  68. data/spec/components/unknown_tags_spec.rb +9 -9
  69. data/spec/lib/reverse_adoc.rb +90 -0
  70. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/cleaner_spec.rb +28 -4
  71. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/config_spec.rb +5 -5
  72. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters/aside_spec.rb +2 -2
  73. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters/audio_spec.rb +2 -2
  74. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters/blockquote_spec.rb +2 -2
  75. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters/br_spec.rb +2 -2
  76. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters/code_spec.rb +2 -2
  77. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters/div_spec.rb +2 -2
  78. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters/figure_spec.rb +2 -2
  79. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters/img_spec.rb +2 -2
  80. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters/li_spec.rb +2 -2
  81. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters/mark_spec.rb +2 -2
  82. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters/p_spec.rb +2 -2
  83. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters/pre_spec.rb +2 -2
  84. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters/q_spec.rb +2 -2
  85. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters/strong_spec.rb +2 -2
  86. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters/text_spec.rb +2 -2
  87. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters/video_spec.rb +2 -2
  88. data/spec/lib/{reverse_asciidoctor → reverse_adoc}/converters_spec.rb +5 -5
  89. data/spec/spec_helper.rb +7 -2
  90. data/spec/support/shell_helpers.rb +15 -0
  91. metadata +126 -87
  92. data/lib/reverse_asciidoctor.rb +0 -70
  93. data/lib/reverse_asciidoctor/converters/h.rb +0 -19
  94. data/lib/reverse_asciidoctor/version.rb +0 -3
  95. data/spec/lib/reverse_asciidoctor_spec.rb +0 -37
@@ -0,0 +1,90 @@
1
+ require 'spec_helper'
2
+
3
+ describe ReverseAdoc do
4
+ let(:input) { File.read('spec/assets/minimum.html') }
5
+ let(:document) { Nokogiri::HTML(input) }
6
+
7
+ it 'parses nokogiri documents' do
8
+ expect { ReverseAdoc.convert(document) }.not_to raise_error
9
+ end
10
+
11
+ it 'parses nokogiri elements' do
12
+ expect { ReverseAdoc.convert(document.root) }.not_to raise_error
13
+ end
14
+
15
+ it 'parses string input' do
16
+ expect { ReverseAdoc.convert(input) }.not_to raise_error
17
+ end
18
+
19
+ it 'behaves in a sane way when root element is nil' do
20
+ expect(ReverseAdoc.convert(nil)).to eq ''
21
+ end
22
+
23
+ describe '#config' do
24
+ it 'stores a given configuration option' do
25
+ ReverseAdoc.config.tag_border = true
26
+ expect(ReverseAdoc.config.tag_border).to eq true
27
+ end
28
+
29
+ it 'can be used as a block configurator as well' do
30
+ ReverseAdoc.config do |config|
31
+ expect(config.tag_border).to eq ' '
32
+ config.tag_border = true
33
+ end
34
+ expect(ReverseAdoc.config.tag_border).to eq true
35
+ end
36
+ end
37
+
38
+ shared_examples 'converting source with external images included' do |result|
39
+ let(:temp_dir) do
40
+ Pathname.new(ReverseAdoc.config.destination).dirname
41
+ end
42
+ let(:images_folder) { File.join(temp_dir, 'images') }
43
+
44
+ before do
45
+ ReverseAdoc.config.destination = File.join(Dir.mktmpdir,
46
+ 'output.html')
47
+ ReverseAdoc.config.sourcedir = Dir.mktmpdir
48
+ ReverseAdoc.config.external_images = true
49
+ end
50
+
51
+ after do
52
+ FileUtils.rm_rf(temp_dir)
53
+ end
54
+
55
+ it 'Creates local files from external URI' do
56
+ expect { convert }
57
+ .to(change do
58
+ Dir["#{images_folder}/*gif"]
59
+ .map { |entry| File.basename(entry) }
60
+ .sort
61
+ end.from([]).to(result))
62
+ end
63
+ end
64
+
65
+ # TODO: fix github actions integration with libreoffice, currently it hangs
66
+ # when trying to use soffice binary
67
+ unless Gem::Platform.local.os == 'darwin' && !ENV['GITHUB_ACTION'].nil?
68
+ context 'when docx file input' do
69
+ subject(:convert) do
70
+ ReverseAdoc.convert(
71
+ ReverseAdoc.cleaner.preprocess_word_html(input.document.html),
72
+ WordToMarkdown::REVERSE_MARKDOWN_OPTIONS
73
+ )
74
+ end
75
+ let(:input) do
76
+ WordToMarkdown.new('spec/assets/external_images.docx',
77
+ ReverseAdoc.config.sourcedir)
78
+ end
79
+ it_behaves_like 'converting source with external images included',
80
+ ['001.gif', '002.gif']
81
+ end
82
+ end
83
+
84
+ context 'when html file input' do
85
+ subject(:convert) { ReverseAdoc.convert(input) }
86
+ let(:input) { File.read('spec/assets/external_images.html') }
87
+ it_behaves_like 'converting source with external images included',
88
+ ['001.gif']
89
+ end
90
+ end
@@ -1,7 +1,31 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Cleaner do
4
- let(:cleaner) { ReverseAsciidoctor::Cleaner.new }
3
+ describe ReverseAdoc::Cleaner do
4
+ let(:cleaner) { ReverseAdoc::Cleaner.new }
5
+
6
+ describe '#scrub_whitespace' do
7
+ it "makes consistent nonbreaking spaces" do
8
+ result = cleaner.scrub_whitespace("     ")
9
+ expect(result).to eq "     "
10
+ end
11
+
12
+ it "makes four linebreaks into two" do
13
+ result = cleaner.scrub_whitespace("A\n\n\n\nB")
14
+ expect(result).to eq "A\n\nB"
15
+ end
16
+ end
17
+
18
+ describe '#clean_headings' do
19
+ it "removes empty headings" do
20
+ result = cleaner.clean_headings("<h2></h2>")
21
+ expect(result).to eq " "
22
+ end
23
+
24
+ it "cleans superscripts rendered as headings" do
25
+ result = cleaner.clean_headings(%{<p class="Standard" style="font-size: 12pt; font-family: Calibri; writing-mode: lr-tb; margin: 0;" align="left ! important"><span class="T1" style="margin: 0;">H</span><h1 class="T2" style="vertical-align: super; font-size: 58%; margin: 0;">2</h1><span class="T1" style="margin: 0;">0</span></p>})
26
+ expect(result).to eq %{<p class="Standard" style="font-size: 12pt; font-family: Calibri; writing-mode: lr-tb; margin: 0;" align="left ! important"><span class="T1" style="margin: 0;">H</span><sup>2</sup><span class="T1" style="margin: 0;">0</span></p>}
27
+ end
28
+ end
5
29
 
6
30
  describe '#remove_newlines' do
7
31
  it 'removes more than 2 subsequent newlines' do
@@ -62,7 +86,7 @@ describe ReverseAsciidoctor::Cleaner do
62
86
 
63
87
  describe '#clean_tag_borders' do
64
88
  context 'with default_border is set to space' do
65
- before { ReverseAsciidoctor.config.tag_border = ' ' }
89
+ before { ReverseAdoc.config.tag_border = ' ' }
66
90
 
67
91
  it 'removes not needed whitespaces from strong tags' do
68
92
  input = "foo ** foobar ** bar"
@@ -108,7 +132,7 @@ describe ReverseAsciidoctor::Cleaner do
108
132
  end
109
133
 
110
134
  context 'with default_border set to no space' do
111
- before { ReverseAsciidoctor.config.tag_border = '' }
135
+ before { ReverseAdoc.config.tag_border = '' }
112
136
 
113
137
  it 'removes not needed whitespaces from strong tags' do
114
138
  input = "foo ** foobar ** bar"
@@ -1,12 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Config do
3
+ describe ReverseAdoc::Config do
4
4
  describe '#with' do
5
- let(:config) { ReverseAsciidoctor.config }
5
+ let(:config) { ReverseAdoc.config }
6
6
 
7
7
  it 'takes additional options into account' do
8
8
  config.with(tag_border: :foobar) do
9
- expect(ReverseAsciidoctor.config.tag_border).to eq :foobar
9
+ expect(ReverseAdoc.config.tag_border).to eq :foobar
10
10
  end
11
11
  end
12
12
 
@@ -17,9 +17,9 @@ describe ReverseAsciidoctor::Config do
17
17
  it 'resets to original settings afterwards' do
18
18
  config.tag_border = :foo
19
19
  config.with(tag_border: :bar) do
20
- expect(ReverseAsciidoctor.config.tag_border).to eq :bar
20
+ expect(ReverseAdoc.config.tag_border).to eq :bar
21
21
  end
22
- expect(ReverseAsciidoctor.config.tag_border).to eq :foo
22
+ expect(ReverseAdoc.config.tag_border).to eq :foo
23
23
  end
24
24
 
25
25
  end
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters::Aside do
3
+ describe ReverseAdoc::Converters::Aside do
4
4
 
5
- let(:converter) { ReverseAsciidoctor::Converters::Aside.new }
5
+ let(:converter) { ReverseAdoc::Converters::Aside.new }
6
6
 
7
7
  it 'converts aside' do
8
8
  input = node_for("<aside><ul><li>foo</li></ul></aside>")
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters::Audio do
3
+ describe ReverseAdoc::Converters::Audio do
4
4
 
5
- let(:converter) { ReverseAsciidoctor::Converters::Audio.new }
5
+ let(:converter) { ReverseAdoc::Converters::Audio.new }
6
6
 
7
7
  it 'converts audio with no attributes' do
8
8
  node = node_for("<audio src='example.mp3'/>")
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters::Blockquote do
3
+ describe ReverseAdoc::Converters::Blockquote do
4
4
 
5
- let(:converter) { ReverseAsciidoctor::Converters::Blockquote.new }
5
+ let(:converter) { ReverseAdoc::Converters::Blockquote.new }
6
6
 
7
7
  it 'converts nested elements as well' do
8
8
  input = node_for("<blockquote><ul><li>foo</li></ul></blockquote>")
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters::Br do
4
- let(:converter) { ReverseAsciidoctor::Converters::Br.new }
3
+ describe ReverseAdoc::Converters::Br do
4
+ let(:converter) { ReverseAdoc::Converters::Br.new }
5
5
 
6
6
  it 'just converts into two spaces and a newline' do
7
7
  expect(converter.convert(:anything)).to eq " \+\n"
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters::Code do
3
+ describe ReverseAdoc::Converters::Code do
4
4
 
5
- let(:converter) { ReverseAsciidoctor::Converters::Code.new }
5
+ let(:converter) { ReverseAdoc::Converters::Code.new }
6
6
 
7
7
  it 'converts as backtick' do
8
8
  node = node_for("<code>puts foo</code>")
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters::Code do
3
+ describe ReverseAdoc::Converters::Code do
4
4
 
5
- let(:converter) { ReverseAsciidoctor::Converters::Div.new }
5
+ let(:converter) { ReverseAdoc::Converters::Div.new }
6
6
 
7
7
  it 'converts div' do
8
8
  node = node_for("<div>puts foo</div>")
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters::Figure do
3
+ describe ReverseAdoc::Converters::Figure do
4
4
 
5
- let(:converter) { ReverseAsciidoctor::Converters::Figure.new }
5
+ let(:converter) { ReverseAdoc::Converters::Figure.new }
6
6
 
7
7
  it 'converts figure' do
8
8
  node = node_for("<figure id='A'><img src='example.jpg'/><figcaption>Figure <i>caption</i></figcaption></figure>")
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters::Img do
3
+ describe ReverseAdoc::Converters::Img do
4
4
 
5
- let(:converter) { ReverseAsciidoctor::Converters::Img.new }
5
+ let(:converter) { ReverseAdoc::Converters::Img.new }
6
6
 
7
7
  it 'converts image with no attributes' do
8
8
  node = node_for("<img src='example.jpg'/>")
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters::Li do
3
+ describe ReverseAdoc::Converters::Li do
4
4
 
5
- let(:converter) { ReverseAsciidoctor::Converters::Li.new }
5
+ let(:converter) { ReverseAdoc::Converters::Li.new }
6
6
 
7
7
  it 'does not fail without a valid parent context' do
8
8
  input = node_for("<li>foo</li>")
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters::Mark do
4
- let(:converter) { ReverseAsciidoctor::Converters::Mark.new }
3
+ describe ReverseAdoc::Converters::Mark do
4
+ let(:converter) { ReverseAdoc::Converters::Mark.new }
5
5
 
6
6
  it 'renders mark' do
7
7
  input = node_for('<mark>A</mark>')
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters::P do
3
+ describe ReverseAdoc::Converters::P do
4
4
 
5
- let(:converter) { ReverseAsciidoctor::Converters::P.new }
5
+ let(:converter) { ReverseAdoc::Converters::P.new }
6
6
 
7
7
  it 'converts p with anchor' do
8
8
  node = node_for("<p id='A'>puts foo</p>")
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters::Pre do
3
+ describe ReverseAdoc::Converters::Pre do
4
4
 
5
- let(:converter) { ReverseAsciidoctor::Converters::Pre.new }
5
+ let(:converter) { ReverseAdoc::Converters::Pre.new }
6
6
 
7
7
  it 'converts as literal' do
8
8
  node = node_for("<pre>puts foo</pre>")
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters::Q do
4
- let(:converter) { ReverseAsciidoctor::Converters::Q.new }
3
+ describe ReverseAdoc::Converters::Q do
4
+ let(:converter) { ReverseAdoc::Converters::Q.new }
5
5
 
6
6
  it 'renders q' do
7
7
  input = node_for('<q>A</q>')
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters::Strong do
4
- let(:converter) { ReverseAsciidoctor::Converters::Strong.new }
3
+ describe ReverseAdoc::Converters::Strong do
4
+ let(:converter) { ReverseAdoc::Converters::Strong.new }
5
5
 
6
6
  it 'returns an empty string if the node is empty' do
7
7
  input = node_for('<strong></strong>')
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters::Text do
3
+ describe ReverseAdoc::Converters::Text do
4
4
 
5
- let(:converter) { ReverseAsciidoctor::Converters::Text.new }
5
+ let(:converter) { ReverseAdoc::Converters::Text.new }
6
6
 
7
7
  it 'treats newline within text as a single whitespace' do
8
8
  input = node_for("<p>foo\nbar</p>")
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters::Video do
3
+ describe ReverseAdoc::Converters::Video do
4
4
 
5
- let(:converter) { ReverseAsciidoctor::Converters::Video.new }
5
+ let(:converter) { ReverseAdoc::Converters::Video.new }
6
6
 
7
7
  it 'converts audio with no attributes' do
8
8
  node = node_for("<audio src='example.mp3'/>")
@@ -1,18 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe ReverseAsciidoctor::Converters do
4
- before { ReverseAsciidoctor.config.unknown_tags = :raise }
5
- let(:converters) { ReverseAsciidoctor::Converters }
3
+ describe ReverseAdoc::Converters do
4
+ before { ReverseAdoc.config.unknown_tags = :raise }
5
+ let(:converters) { ReverseAdoc::Converters }
6
6
 
7
7
  describe '.register and .unregister' do
8
8
  it 'adds a converter mapping to the list' do
9
- expect { converters.lookup(:foo) }.to raise_error ReverseAsciidoctor::UnknownTagError
9
+ expect { converters.lookup(:foo) }.to raise_error ReverseAdoc::UnknownTagError
10
10
 
11
11
  converters.register :foo, :foobar
12
12
  expect(converters.lookup(:foo)).to eq :foobar
13
13
 
14
14
  converters.unregister :foo
15
- expect { converters.lookup(:foo) }.to raise_error ReverseAsciidoctor::UnknownTagError
15
+ expect { converters.lookup(:foo) }.to raise_error ReverseAdoc::UnknownTagError
16
16
  end
17
17
  end
18
18
 
@@ -8,11 +8,16 @@ SimpleCov.profiles.define 'gem' do
8
8
  end
9
9
  SimpleCov.start 'gem'
10
10
 
11
- require 'reverse_asciidoctor'
11
+ require 'reverse_adoc'
12
+ require 'reverse_adoc/html_converter'
13
+ require 'word-to-markdown'
14
+
15
+ Dir[File.join('spec', 'support', '**', '*.rb')]
16
+ .each { |f| require File.join('.', f) }
12
17
 
13
18
  RSpec.configure do |config|
14
19
  config.after(:each) do
15
- ReverseAsciidoctor.instance_variable_set(:@config, nil)
20
+ ReverseAdoc.instance_variable_set(:@config, nil)
16
21
  end
17
22
  end
18
23
 
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'open3'
4
+
5
+ module ShellUtils
6
+ class ShellExcutionError < StandardError; end
7
+ module_function
8
+
9
+ def execute!(cmd)
10
+ stdout, stderr, status = Open3.capture3(cmd)
11
+ raise(ShellExcutionError, stderr) unless status.success?
12
+
13
+ stdout
14
+ end
15
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reverse_adoc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-19 00:00:00.000000000 Z
11
+ date: 2020-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mimemagic
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rspec
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +136,20 @@ dependencies:
122
136
  - - ">="
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: premailer
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 1.11.0
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 1.11.0
125
153
  description: Generate AsciiDoc from HTML and Microsoft Word via CLI or library.
126
154
  email:
127
155
  - open.source@ribose.com
@@ -137,56 +165,60 @@ files:
137
165
  - ".hound.yml"
138
166
  - ".rubocop.yml"
139
167
  - Gemfile
168
+ - Gemfile.lock
140
169
  - LICENSE.txt
141
170
  - README.adoc
142
171
  - Rakefile
143
172
  - bin/reverse_adoc
144
173
  - bin/w2a
145
- - lib/reverse_asciidoctor.rb
146
- - lib/reverse_asciidoctor/cleaner.rb
147
- - lib/reverse_asciidoctor/config.rb
148
- - lib/reverse_asciidoctor/converters.rb
149
- - lib/reverse_asciidoctor/converters/a.rb
150
- - lib/reverse_asciidoctor/converters/aside.rb
151
- - lib/reverse_asciidoctor/converters/audio.rb
152
- - lib/reverse_asciidoctor/converters/base.rb
153
- - lib/reverse_asciidoctor/converters/blockquote.rb
154
- - lib/reverse_asciidoctor/converters/br.rb
155
- - lib/reverse_asciidoctor/converters/bypass.rb
156
- - lib/reverse_asciidoctor/converters/code.rb
157
- - lib/reverse_asciidoctor/converters/div.rb
158
- - lib/reverse_asciidoctor/converters/drop.rb
159
- - lib/reverse_asciidoctor/converters/em.rb
160
- - lib/reverse_asciidoctor/converters/figure.rb
161
- - lib/reverse_asciidoctor/converters/h.rb
162
- - lib/reverse_asciidoctor/converters/head.rb
163
- - lib/reverse_asciidoctor/converters/hr.rb
164
- - lib/reverse_asciidoctor/converters/ignore.rb
165
- - lib/reverse_asciidoctor/converters/img.rb
166
- - lib/reverse_asciidoctor/converters/li.rb
167
- - lib/reverse_asciidoctor/converters/mark.rb
168
- - lib/reverse_asciidoctor/converters/math.rb
169
- - lib/reverse_asciidoctor/converters/ol.rb
170
- - lib/reverse_asciidoctor/converters/p.rb
171
- - lib/reverse_asciidoctor/converters/pass_through.rb
172
- - lib/reverse_asciidoctor/converters/pre.rb
173
- - lib/reverse_asciidoctor/converters/q.rb
174
- - lib/reverse_asciidoctor/converters/strong.rb
175
- - lib/reverse_asciidoctor/converters/sub.rb
176
- - lib/reverse_asciidoctor/converters/sup.rb
177
- - lib/reverse_asciidoctor/converters/table.rb
178
- - lib/reverse_asciidoctor/converters/td.rb
179
- - lib/reverse_asciidoctor/converters/text.rb
180
- - lib/reverse_asciidoctor/converters/th.rb
181
- - lib/reverse_asciidoctor/converters/tr.rb
182
- - lib/reverse_asciidoctor/converters/video.rb
183
- - lib/reverse_asciidoctor/errors.rb
184
- - lib/reverse_asciidoctor/version.rb
174
+ - lib/reverse_adoc.rb
175
+ - lib/reverse_adoc/cleaner.rb
176
+ - lib/reverse_adoc/config.rb
177
+ - lib/reverse_adoc/converters.rb
178
+ - lib/reverse_adoc/converters/a.rb
179
+ - lib/reverse_adoc/converters/aside.rb
180
+ - lib/reverse_adoc/converters/audio.rb
181
+ - lib/reverse_adoc/converters/base.rb
182
+ - lib/reverse_adoc/converters/blockquote.rb
183
+ - lib/reverse_adoc/converters/br.rb
184
+ - lib/reverse_adoc/converters/bypass.rb
185
+ - lib/reverse_adoc/converters/code.rb
186
+ - lib/reverse_adoc/converters/div.rb
187
+ - lib/reverse_adoc/converters/drop.rb
188
+ - lib/reverse_adoc/converters/em.rb
189
+ - lib/reverse_adoc/converters/figure.rb
190
+ - lib/reverse_adoc/converters/h.rb
191
+ - lib/reverse_adoc/converters/head.rb
192
+ - lib/reverse_adoc/converters/hr.rb
193
+ - lib/reverse_adoc/converters/ignore.rb
194
+ - lib/reverse_adoc/converters/img.rb
195
+ - lib/reverse_adoc/converters/li.rb
196
+ - lib/reverse_adoc/converters/mark.rb
197
+ - lib/reverse_adoc/converters/math.rb
198
+ - lib/reverse_adoc/converters/ol.rb
199
+ - lib/reverse_adoc/converters/p.rb
200
+ - lib/reverse_adoc/converters/pass_through.rb
201
+ - lib/reverse_adoc/converters/pre.rb
202
+ - lib/reverse_adoc/converters/q.rb
203
+ - lib/reverse_adoc/converters/strong.rb
204
+ - lib/reverse_adoc/converters/sub.rb
205
+ - lib/reverse_adoc/converters/sup.rb
206
+ - lib/reverse_adoc/converters/table.rb
207
+ - lib/reverse_adoc/converters/td.rb
208
+ - lib/reverse_adoc/converters/text.rb
209
+ - lib/reverse_adoc/converters/th.rb
210
+ - lib/reverse_adoc/converters/tr.rb
211
+ - lib/reverse_adoc/converters/video.rb
212
+ - lib/reverse_adoc/errors.rb
213
+ - lib/reverse_adoc/html_converter.rb
214
+ - lib/reverse_adoc/version.rb
185
215
  - reverse_adoc.gemspec
186
216
  - spec/assets/anchors.html
187
217
  - spec/assets/basic.html
188
218
  - spec/assets/code.html
189
219
  - spec/assets/escapables.html
220
+ - spec/assets/external_images.docx
221
+ - spec/assets/external_images.html
190
222
  - spec/assets/from_the_wild.html
191
223
  - spec/assets/full_example.html
192
224
  - spec/assets/html_fragment.html
@@ -196,6 +228,8 @@ files:
196
228
  - spec/assets/quotation.html
197
229
  - spec/assets/tables.html
198
230
  - spec/assets/unknown_tags.html
231
+ - spec/bin/reverse_adoc_spec.rb
232
+ - spec/bin/w2a_spec.rb
199
233
  - spec/components/anchors_spec.rb
200
234
  - spec/components/basic_spec.rb
201
235
  - spec/components/code_spec.rb
@@ -207,32 +241,33 @@ files:
207
241
  - spec/components/quotation_spec.rb
208
242
  - spec/components/tables_spec.rb
209
243
  - spec/components/unknown_tags_spec.rb
210
- - spec/lib/reverse_asciidoctor/cleaner_spec.rb
211
- - spec/lib/reverse_asciidoctor/config_spec.rb
212
- - spec/lib/reverse_asciidoctor/converters/aside_spec.rb
213
- - spec/lib/reverse_asciidoctor/converters/audio_spec.rb
214
- - spec/lib/reverse_asciidoctor/converters/blockquote_spec.rb
215
- - spec/lib/reverse_asciidoctor/converters/br_spec.rb
216
- - spec/lib/reverse_asciidoctor/converters/code_spec.rb
217
- - spec/lib/reverse_asciidoctor/converters/div_spec.rb
218
- - spec/lib/reverse_asciidoctor/converters/figure_spec.rb
219
- - spec/lib/reverse_asciidoctor/converters/img_spec.rb
220
- - spec/lib/reverse_asciidoctor/converters/li_spec.rb
221
- - spec/lib/reverse_asciidoctor/converters/mark_spec.rb
222
- - spec/lib/reverse_asciidoctor/converters/p_spec.rb
223
- - spec/lib/reverse_asciidoctor/converters/pre_spec.rb
224
- - spec/lib/reverse_asciidoctor/converters/q_spec.rb
225
- - spec/lib/reverse_asciidoctor/converters/strong_spec.rb
226
- - spec/lib/reverse_asciidoctor/converters/text_spec.rb
227
- - spec/lib/reverse_asciidoctor/converters/video_spec.rb
228
- - spec/lib/reverse_asciidoctor/converters_spec.rb
229
- - spec/lib/reverse_asciidoctor_spec.rb
244
+ - spec/lib/reverse_adoc.rb
245
+ - spec/lib/reverse_adoc/cleaner_spec.rb
246
+ - spec/lib/reverse_adoc/config_spec.rb
247
+ - spec/lib/reverse_adoc/converters/aside_spec.rb
248
+ - spec/lib/reverse_adoc/converters/audio_spec.rb
249
+ - spec/lib/reverse_adoc/converters/blockquote_spec.rb
250
+ - spec/lib/reverse_adoc/converters/br_spec.rb
251
+ - spec/lib/reverse_adoc/converters/code_spec.rb
252
+ - spec/lib/reverse_adoc/converters/div_spec.rb
253
+ - spec/lib/reverse_adoc/converters/figure_spec.rb
254
+ - spec/lib/reverse_adoc/converters/img_spec.rb
255
+ - spec/lib/reverse_adoc/converters/li_spec.rb
256
+ - spec/lib/reverse_adoc/converters/mark_spec.rb
257
+ - spec/lib/reverse_adoc/converters/p_spec.rb
258
+ - spec/lib/reverse_adoc/converters/pre_spec.rb
259
+ - spec/lib/reverse_adoc/converters/q_spec.rb
260
+ - spec/lib/reverse_adoc/converters/strong_spec.rb
261
+ - spec/lib/reverse_adoc/converters/text_spec.rb
262
+ - spec/lib/reverse_adoc/converters/video_spec.rb
263
+ - spec/lib/reverse_adoc/converters_spec.rb
230
264
  - spec/spec_helper.rb
265
+ - spec/support/shell_helpers.rb
231
266
  homepage: http://github.com/metanorma/reverse_adoc
232
267
  licenses:
233
268
  - BSD-2-Clause
234
269
  metadata: {}
235
- post_install_message:
270
+ post_install_message:
236
271
  rdoc_options: []
237
272
  require_paths:
238
273
  - lib
@@ -247,9 +282,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
247
282
  - !ruby/object:Gem::Version
248
283
  version: '0'
249
284
  requirements: []
250
- rubyforge_project:
251
- rubygems_version: 2.7.6
252
- signing_key:
285
+ rubygems_version: 3.0.6
286
+ signing_key:
253
287
  specification_version: 4
254
288
  summary: Generate AsciiDoc from HTML and Microsoft Word via CLI or library.
255
289
  test_files:
@@ -257,6 +291,8 @@ test_files:
257
291
  - spec/assets/basic.html
258
292
  - spec/assets/code.html
259
293
  - spec/assets/escapables.html
294
+ - spec/assets/external_images.docx
295
+ - spec/assets/external_images.html
260
296
  - spec/assets/from_the_wild.html
261
297
  - spec/assets/full_example.html
262
298
  - spec/assets/html_fragment.html
@@ -266,6 +302,8 @@ test_files:
266
302
  - spec/assets/quotation.html
267
303
  - spec/assets/tables.html
268
304
  - spec/assets/unknown_tags.html
305
+ - spec/bin/reverse_adoc_spec.rb
306
+ - spec/bin/w2a_spec.rb
269
307
  - spec/components/anchors_spec.rb
270
308
  - spec/components/basic_spec.rb
271
309
  - spec/components/code_spec.rb
@@ -277,24 +315,25 @@ test_files:
277
315
  - spec/components/quotation_spec.rb
278
316
  - spec/components/tables_spec.rb
279
317
  - spec/components/unknown_tags_spec.rb
280
- - spec/lib/reverse_asciidoctor/cleaner_spec.rb
281
- - spec/lib/reverse_asciidoctor/config_spec.rb
282
- - spec/lib/reverse_asciidoctor/converters/aside_spec.rb
283
- - spec/lib/reverse_asciidoctor/converters/audio_spec.rb
284
- - spec/lib/reverse_asciidoctor/converters/blockquote_spec.rb
285
- - spec/lib/reverse_asciidoctor/converters/br_spec.rb
286
- - spec/lib/reverse_asciidoctor/converters/code_spec.rb
287
- - spec/lib/reverse_asciidoctor/converters/div_spec.rb
288
- - spec/lib/reverse_asciidoctor/converters/figure_spec.rb
289
- - spec/lib/reverse_asciidoctor/converters/img_spec.rb
290
- - spec/lib/reverse_asciidoctor/converters/li_spec.rb
291
- - spec/lib/reverse_asciidoctor/converters/mark_spec.rb
292
- - spec/lib/reverse_asciidoctor/converters/p_spec.rb
293
- - spec/lib/reverse_asciidoctor/converters/pre_spec.rb
294
- - spec/lib/reverse_asciidoctor/converters/q_spec.rb
295
- - spec/lib/reverse_asciidoctor/converters/strong_spec.rb
296
- - spec/lib/reverse_asciidoctor/converters/text_spec.rb
297
- - spec/lib/reverse_asciidoctor/converters/video_spec.rb
298
- - spec/lib/reverse_asciidoctor/converters_spec.rb
299
- - spec/lib/reverse_asciidoctor_spec.rb
318
+ - spec/lib/reverse_adoc.rb
319
+ - spec/lib/reverse_adoc/cleaner_spec.rb
320
+ - spec/lib/reverse_adoc/config_spec.rb
321
+ - spec/lib/reverse_adoc/converters/aside_spec.rb
322
+ - spec/lib/reverse_adoc/converters/audio_spec.rb
323
+ - spec/lib/reverse_adoc/converters/blockquote_spec.rb
324
+ - spec/lib/reverse_adoc/converters/br_spec.rb
325
+ - spec/lib/reverse_adoc/converters/code_spec.rb
326
+ - spec/lib/reverse_adoc/converters/div_spec.rb
327
+ - spec/lib/reverse_adoc/converters/figure_spec.rb
328
+ - spec/lib/reverse_adoc/converters/img_spec.rb
329
+ - spec/lib/reverse_adoc/converters/li_spec.rb
330
+ - spec/lib/reverse_adoc/converters/mark_spec.rb
331
+ - spec/lib/reverse_adoc/converters/p_spec.rb
332
+ - spec/lib/reverse_adoc/converters/pre_spec.rb
333
+ - spec/lib/reverse_adoc/converters/q_spec.rb
334
+ - spec/lib/reverse_adoc/converters/strong_spec.rb
335
+ - spec/lib/reverse_adoc/converters/text_spec.rb
336
+ - spec/lib/reverse_adoc/converters/video_spec.rb
337
+ - spec/lib/reverse_adoc/converters_spec.rb
300
338
  - spec/spec_helper.rb
339
+ - spec/support/shell_helpers.rb