reverse_adoc 0.2.5 → 0.2.10

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