reverse_adoc 0.3.6 → 1.0.0
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.
- checksums.yaml +4 -4
- data/.github/workflows/release.yml +4 -3
- data/Gemfile +1 -1
- data/Rakefile +7 -7
- data/exe/reverse_adoc +11 -11
- data/exe/w2a +15 -16
- data/lib/reverse_adoc/cleaner.rb +17 -18
- data/lib/reverse_adoc/config.rb +7 -7
- data/lib/reverse_adoc/converters/a.rb +24 -24
- data/lib/reverse_adoc/converters/aside.rb +6 -4
- data/lib/reverse_adoc/converters/audio.rb +16 -21
- data/lib/reverse_adoc/converters/base.rb +79 -5
- data/lib/reverse_adoc/converters/blockquote.rb +16 -7
- data/lib/reverse_adoc/converters/br.rb +5 -1
- data/lib/reverse_adoc/converters/bypass.rb +38 -34
- data/lib/reverse_adoc/converters/code.rb +42 -1
- data/lib/reverse_adoc/converters/div.rb +7 -3
- data/lib/reverse_adoc/converters/drop.rb +6 -2
- data/lib/reverse_adoc/converters/em.rb +44 -7
- data/lib/reverse_adoc/converters/figure.rb +10 -6
- data/lib/reverse_adoc/converters/h.rb +19 -11
- data/lib/reverse_adoc/converters/head.rb +7 -2
- data/lib/reverse_adoc/converters/hr.rb +5 -1
- data/lib/reverse_adoc/converters/ignore.rb +6 -2
- data/lib/reverse_adoc/converters/img.rb +29 -19
- data/lib/reverse_adoc/converters/li.rb +6 -13
- data/lib/reverse_adoc/converters/mark.rb +11 -2
- data/lib/reverse_adoc/converters/math.rb +13 -2
- data/lib/reverse_adoc/converters/ol.rb +44 -26
- data/lib/reverse_adoc/converters/p.rb +13 -7
- data/lib/reverse_adoc/converters/pass_through.rb +5 -1
- data/lib/reverse_adoc/converters/pre.rb +23 -10
- data/lib/reverse_adoc/converters/q.rb +6 -2
- data/lib/reverse_adoc/converters/strong.rb +41 -6
- data/lib/reverse_adoc/converters/sub.rb +6 -2
- data/lib/reverse_adoc/converters/sup.rb +6 -2
- data/lib/reverse_adoc/converters/table.rb +28 -23
- data/lib/reverse_adoc/converters/td.rb +32 -16
- data/lib/reverse_adoc/converters/text.rb +19 -19
- data/lib/reverse_adoc/converters/th.rb +4 -6
- data/lib/reverse_adoc/converters/tr.rb +7 -7
- data/lib/reverse_adoc/converters/video.rb +16 -23
- data/lib/reverse_adoc/converters.rb +2 -3
- data/lib/reverse_adoc/html_converter.rb +48 -43
- data/lib/reverse_adoc/version.rb +1 -1
- data/lib/reverse_adoc.rb +9 -9
- data/reverse_adoc.gemspec +6 -3
- data/spec/assets/basic.html +3 -0
- data/spec/bin/reverse_adoc_spec.rb +9 -8
- data/spec/bin/w2a_spec.rb +12 -12
- data/spec/components/anchors_spec.rb +18 -12
- data/spec/components/basic_spec.rb +28 -14
- data/spec/components/code_spec.rb +2 -4
- data/spec/components/escapables_spec.rb +4 -6
- data/spec/components/from_the_wild_spec.rb +2 -4
- data/spec/components/html_fragment_spec.rb +2 -3
- data/spec/components/lists_spec.rb +12 -8
- data/spec/components/paragraphs_spec.rb +2 -3
- data/spec/components/quotation_spec.rb +5 -5
- data/spec/components/tables_spec.rb +22 -11
- data/spec/components/unknown_tags_spec.rb +13 -10
- data/spec/lib/reverse_adoc/cleaner_spec.rb +70 -71
- data/spec/lib/reverse_adoc/config_spec.rb +5 -6
- data/spec/lib/reverse_adoc/converters/aside_spec.rb +2 -3
- data/spec/lib/reverse_adoc/converters/audio_spec.rb +3 -5
- data/spec/lib/reverse_adoc/converters/blockquote_spec.rb +5 -6
- data/spec/lib/reverse_adoc/converters/br_spec.rb +2 -2
- data/spec/lib/reverse_adoc/converters/code_spec.rb +3 -5
- data/spec/lib/reverse_adoc/converters/div_spec.rb +3 -5
- data/spec/lib/reverse_adoc/converters/figure_spec.rb +2 -4
- data/spec/lib/reverse_adoc/converters/img_spec.rb +5 -7
- data/spec/lib/reverse_adoc/converters/li_spec.rb +2 -4
- data/spec/lib/reverse_adoc/converters/mark_spec.rb +4 -4
- data/spec/lib/reverse_adoc/converters/p_spec.rb +2 -3
- data/spec/lib/reverse_adoc/converters/pre_spec.rb +8 -9
- data/spec/lib/reverse_adoc/converters/q_spec.rb +3 -3
- data/spec/lib/reverse_adoc/converters/strong_spec.rb +9 -8
- data/spec/lib/reverse_adoc/converters/text_spec.rb +21 -16
- data/spec/lib/reverse_adoc/converters/video_spec.rb +7 -9
- data/spec/lib/reverse_adoc/converters_spec.rb +9 -6
- data/spec/lib/reverse_adoc.rb +25 -25
- data/spec/spec_helper.rb +11 -11
- data/spec/support/shell_helpers.rb +1 -1
- metadata +20 -6
@@ -1,9 +1,9 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe ReverseAdoc::Cleaner do
|
4
4
|
let(:cleaner) { ReverseAdoc::Cleaner.new }
|
5
5
|
|
6
|
-
describe
|
6
|
+
describe "#scrub_whitespace" do
|
7
7
|
it "makes consistent nonbreaking spaces" do
|
8
8
|
result = cleaner.scrub_whitespace("   ")
|
9
9
|
expect(result).to eq "     "
|
@@ -15,7 +15,7 @@ describe ReverseAdoc::Cleaner do
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
describe
|
18
|
+
describe "#clean_headings" do
|
19
19
|
it "removes empty headings" do
|
20
20
|
result = cleaner.clean_headings("<h2></h2>")
|
21
21
|
expect(result).to eq " "
|
@@ -27,84 +27,84 @@ describe ReverseAdoc::Cleaner do
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
-
describe
|
31
|
-
it
|
30
|
+
describe "#remove_newlines" do
|
31
|
+
it "removes more than 2 subsequent newlines" do
|
32
32
|
result = cleaner.remove_newlines("foo\n\n\nbar")
|
33
33
|
expect(result).to eq "foo\n\nbar"
|
34
34
|
end
|
35
35
|
|
36
|
-
it
|
36
|
+
it "skips single and double newlines" do
|
37
37
|
result = cleaner.remove_newlines("foo\nbar\n\nbaz")
|
38
38
|
expect(result).to eq "foo\nbar\n\nbaz"
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
describe
|
43
|
-
it
|
44
|
-
result = cleaner.remove_inner_whitespaces(
|
42
|
+
describe "#remove_inner_whitespaces" do
|
43
|
+
it "removes duplicate whitespaces from the string" do
|
44
|
+
result = cleaner.remove_inner_whitespaces("foo bar")
|
45
45
|
expect(result).to eq "foo bar"
|
46
46
|
end
|
47
47
|
|
48
|
-
it
|
48
|
+
it "performs changes for multiple lines" do
|
49
49
|
result = cleaner.remove_inner_whitespaces("foo bar\nbar foo")
|
50
50
|
expect(result).to eq "foo bar\nbar foo"
|
51
51
|
end
|
52
52
|
|
53
|
-
it
|
53
|
+
it "keeps leading whitespaces" do
|
54
54
|
result = cleaner.remove_inner_whitespaces(" foo bar\n bar foo")
|
55
55
|
expect(result).to eq " foo bar\n bar foo"
|
56
56
|
end
|
57
57
|
|
58
|
-
it
|
58
|
+
it "keeps trailing whitespaces" do
|
59
59
|
result = cleaner.remove_inner_whitespaces("foo \n")
|
60
60
|
expect(result).to eq "foo \n"
|
61
61
|
end
|
62
62
|
|
63
|
-
it
|
63
|
+
it "keeps trailing newlines" do
|
64
64
|
result = cleaner.remove_inner_whitespaces("foo\n")
|
65
65
|
expect(result).to eq "foo\n"
|
66
66
|
end
|
67
67
|
|
68
|
-
it
|
68
|
+
it "removes tabs as well" do
|
69
69
|
result = cleaner.remove_inner_whitespaces("foo\t \tbar")
|
70
70
|
expect(result).to eq "foo bar"
|
71
71
|
end
|
72
72
|
|
73
|
-
it
|
73
|
+
it "keeps lines that only contain whitespace" do
|
74
74
|
result = cleaner.remove_inner_whitespaces("foo \nbar \n \n \nfoo")
|
75
75
|
expect(result).to eq "foo \nbar \n \n \nfoo"
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
|
-
describe
|
80
|
-
it
|
79
|
+
describe "#clean_punctuation_characters" do
|
80
|
+
it "removes whitespace between tag end and punctuation characters" do
|
81
81
|
input = "**fat** . ~~strike~~ ? __italic__ ! "
|
82
82
|
result = cleaner.clean_punctuation_characters(input)
|
83
83
|
expect(result).to eq "**fat**. ~~strike~~? __italic__! "
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
|
-
describe
|
88
|
-
context
|
89
|
-
before { ReverseAdoc.config.tag_border =
|
87
|
+
describe "#clean_tag_borders" do
|
88
|
+
context "with default_border is set to space" do
|
89
|
+
before { ReverseAdoc.config.tag_border = " " }
|
90
90
|
|
91
|
-
it 'removes not needed whitespaces from strong tags' do
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
end
|
91
|
+
# it 'removes not needed whitespaces from strong tags' do
|
92
|
+
# input = "foo ** foobar ** bar"
|
93
|
+
# result = cleaner.clean_tag_borders(input)
|
94
|
+
# expect(result).to eq "foo **foobar** bar"
|
95
|
+
# end
|
96
96
|
|
97
|
-
it 'remotes leading or trailing whitespaces independently' do
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
end
|
97
|
+
# it 'remotes leading or trailing whitespaces independently' do
|
98
|
+
# input = "1 **fat ** 2 ** fat** 3"
|
99
|
+
# result = cleaner.clean_tag_borders(input)
|
100
|
+
# expect(result).to eq "1 **fat** 2 **fat** 3"
|
101
|
+
# end
|
102
102
|
|
103
|
-
it 'adds whitespaces if there are none' do
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
end
|
103
|
+
# it 'adds whitespaces if there are none' do
|
104
|
+
# input = "1**fat**2"
|
105
|
+
# result = cleaner.clean_tag_borders(input)
|
106
|
+
# expect(result).to eq "1 **fat** 2"
|
107
|
+
# end
|
108
108
|
|
109
109
|
it "doesn't add whitespaces to underscore'ed elements if they are part of links" do
|
110
110
|
input = ""
|
@@ -112,41 +112,41 @@ describe ReverseAdoc::Cleaner do
|
|
112
112
|
expect(result).to eq ""
|
113
113
|
end
|
114
114
|
|
115
|
-
it "still cleans up whitespaces that aren't inside a link" do
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
end
|
115
|
+
# it "still cleans up whitespaces that aren't inside a link" do
|
116
|
+
# input = "now __italic __with following [under__scored](link)"
|
117
|
+
# result = cleaner.clean_tag_borders(input)
|
118
|
+
# expect(result).to eq "now __italic__ with following [under__scored](link)"
|
119
|
+
# end
|
120
120
|
|
121
|
-
it 'cleans italic stuff as well' do
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
end
|
121
|
+
# it 'cleans italic stuff as well' do
|
122
|
+
# input = "1 __italic __ 2 __ italic__ 3__italic __4"
|
123
|
+
# result = cleaner.clean_tag_borders(input)
|
124
|
+
# expect(result).to eq "1 __italic__ 2 __italic__ 3 __italic__ 4"
|
125
|
+
# end
|
126
126
|
|
127
|
-
it
|
127
|
+
it "cleans strikethrough stuff as well" do
|
128
128
|
input = "1 ~~italic ~~ 2 ~~ italic~~ 3~~italic ~~4"
|
129
129
|
result = cleaner.clean_tag_borders(input)
|
130
130
|
expect(result).to eq "1 ~~italic~~ 2 ~~italic~~ 3 ~~italic~~ 4"
|
131
131
|
end
|
132
132
|
end
|
133
133
|
|
134
|
-
context
|
135
|
-
before { ReverseAdoc.config.tag_border =
|
134
|
+
context "with default_border set to no space" do
|
135
|
+
before { ReverseAdoc.config.tag_border = "" }
|
136
136
|
|
137
|
-
it 'removes not needed whitespaces from strong tags' do
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
end
|
137
|
+
# it 'removes not needed whitespaces from strong tags' do
|
138
|
+
# input = "foo ** foobar ** bar"
|
139
|
+
# result = cleaner.clean_tag_borders(input)
|
140
|
+
# expect(result).to eq "foo **foobar** bar"
|
141
|
+
# end
|
142
142
|
|
143
|
-
it 'remotes leading or trailing whitespaces independently' do
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
end
|
143
|
+
# it 'remotes leading or trailing whitespaces independently' do
|
144
|
+
# input = "1 **fat ** 2 ** fat** 3"
|
145
|
+
# result = cleaner.clean_tag_borders(input)
|
146
|
+
# expect(result).to eq "1 **fat** 2 **fat** 3"
|
147
|
+
# end
|
148
148
|
|
149
|
-
it
|
149
|
+
it "adds whitespaces if there are none" do
|
150
150
|
input = "1**fat**2"
|
151
151
|
result = cleaner.clean_tag_borders(input)
|
152
152
|
expect(result).to eq "1**fat**2"
|
@@ -158,24 +158,23 @@ describe ReverseAdoc::Cleaner do
|
|
158
158
|
expect(result).to eq ""
|
159
159
|
end
|
160
160
|
|
161
|
-
it "still cleans up whitespaces that aren't inside a link" do
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
end
|
161
|
+
# it "still cleans up whitespaces that aren't inside a link" do
|
162
|
+
# input = "now __italic __with following [under__scored](link)"
|
163
|
+
# result = cleaner.clean_tag_borders(input)
|
164
|
+
# expect(result).to eq "now __italic__with following [under__scored](link)"
|
165
|
+
# end
|
166
166
|
|
167
|
-
it 'cleans italic stuff as well' do
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
end
|
167
|
+
# it 'cleans italic stuff as well' do
|
168
|
+
# input = "1 __italic __ 2 __ italic__ 3__italic __4"
|
169
|
+
# result = cleaner.clean_tag_borders(input)
|
170
|
+
# expect(result).to eq "1 __italic__ 2 __italic__ 3__italic__4"
|
171
|
+
# end
|
172
172
|
|
173
|
-
it
|
173
|
+
it "cleans strikethrough stuff as well" do
|
174
174
|
input = "1 ~~italic ~~ 2 ~~ italic~~ 3~~italic ~~4"
|
175
175
|
result = cleaner.clean_tag_borders(input)
|
176
176
|
expect(result).to eq "1 ~~italic~~ 2 ~~italic~~ 3~~italic~~4"
|
177
177
|
end
|
178
178
|
end
|
179
179
|
end
|
180
|
-
|
181
180
|
end
|
@@ -1,26 +1,25 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe ReverseAdoc::Config do
|
4
|
-
describe
|
4
|
+
describe "#with" do
|
5
5
|
let(:config) { ReverseAdoc.config }
|
6
6
|
|
7
|
-
it
|
7
|
+
it "takes additional options into account" do
|
8
8
|
config.with(tag_border: :foobar) do
|
9
9
|
expect(ReverseAdoc.config.tag_border).to eq :foobar
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
it
|
13
|
+
it "returns the result of a given block" do
|
14
14
|
expect(config.with { :something }).to eq :something
|
15
15
|
end
|
16
16
|
|
17
|
-
it
|
17
|
+
it "resets to original settings afterwards" do
|
18
18
|
config.tag_border = :foo
|
19
19
|
config.with(tag_border: :bar) do
|
20
20
|
expect(ReverseAdoc.config.tag_border).to eq :bar
|
21
21
|
end
|
22
22
|
expect(ReverseAdoc.config.tag_border).to eq :foo
|
23
23
|
end
|
24
|
-
|
25
24
|
end
|
26
25
|
end
|
@@ -1,10 +1,9 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe ReverseAdoc::Converters::Aside do
|
4
|
-
|
5
4
|
let(:converter) { ReverseAdoc::Converters::Aside.new }
|
6
5
|
|
7
|
-
it
|
6
|
+
it "converts aside" do
|
8
7
|
input = node_for("<aside><ul><li>foo</li></ul></aside>")
|
9
8
|
result = converter.convert(input)
|
10
9
|
expect(result).to eq "\n\n\*\*\*\*\n\n* foo\n\n\*\*\*\*\n\n"
|
@@ -1,17 +1,15 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe ReverseAdoc::Converters::Audio do
|
4
|
-
|
5
4
|
let(:converter) { ReverseAdoc::Converters::Audio.new }
|
6
5
|
|
7
|
-
it
|
6
|
+
it "converts audio with no attributes" do
|
8
7
|
node = node_for("<audio src='example.mp3'/>")
|
9
8
|
expect(converter.convert(node)).to include "audio::example.mp3[]"
|
10
9
|
end
|
11
10
|
|
12
|
-
it
|
11
|
+
it "converts audio with full set of attributes" do
|
13
12
|
node = node_for("<audio id='A' src='example.mp3' loop='loop'/>")
|
14
13
|
expect(converter.convert(node)).to include "[[A]]\naudio::example.mp3[options=\"loop\"]"
|
15
14
|
end
|
16
|
-
|
17
15
|
end
|
@@ -1,24 +1,23 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe ReverseAdoc::Converters::Blockquote do
|
4
|
-
|
5
4
|
let(:converter) { ReverseAdoc::Converters::Blockquote.new }
|
6
5
|
|
7
|
-
it
|
6
|
+
it "converts nested elements as well" do
|
8
7
|
input = node_for("<blockquote><ul><li>foo</li></ul></blockquote>")
|
9
8
|
result = converter.convert(input)
|
10
9
|
expect(result).to eq "\n\n____\n* foo\n____\n\n"
|
11
10
|
end
|
12
11
|
|
13
|
-
it
|
12
|
+
it "can deal with paragraphs inside" do
|
14
13
|
input = node_for("<blockquote><p>Some text.</p><p>Some more text.</p></blockquote>")
|
15
14
|
result = converter.convert(input)
|
16
15
|
expect(result).to eq "\n\n____\nSome text.\n\nSome more text.\n____\n\n"
|
17
16
|
end
|
18
17
|
|
19
|
-
it
|
18
|
+
it "can deal with cite attribute" do
|
20
19
|
input = node_for("<blockquote cite='http://www.example.com'><p>Some text.</p><p>Some more text.</p></blockquote>")
|
21
20
|
result = converter.convert(input)
|
22
|
-
expect(result).to eq "\n\n[quote,
|
21
|
+
expect(result).to eq "\n\n[quote,http://www.example.com]\n____\nSome text.\n\nSome more text.\n____\n\n"
|
23
22
|
end
|
24
23
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe ReverseAdoc::Converters::Br do
|
4
4
|
let(:converter) { ReverseAdoc::Converters::Br.new }
|
5
5
|
|
6
|
-
it
|
6
|
+
it "just converts into two spaces and a newline" do
|
7
7
|
expect(converter.convert(:anything)).to eq " \+\n"
|
8
8
|
end
|
9
9
|
end
|
@@ -1,17 +1,15 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe ReverseAdoc::Converters::Code do
|
4
|
-
|
5
4
|
let(:converter) { ReverseAdoc::Converters::Code.new }
|
6
5
|
|
7
|
-
it
|
6
|
+
it "converts as backtick" do
|
8
7
|
node = node_for("<code>puts foo</code>")
|
9
8
|
expect(converter.convert(node)).to include "`puts foo`"
|
10
9
|
end
|
11
10
|
|
12
|
-
it
|
11
|
+
it "converts as backtick" do
|
13
12
|
node = node_for("<tt>puts foo</tt>")
|
14
13
|
expect(converter.convert(node)).to include "`puts foo`"
|
15
14
|
end
|
16
|
-
|
17
15
|
end
|
@@ -1,17 +1,15 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe ReverseAdoc::Converters::Code do
|
4
|
-
|
5
4
|
let(:converter) { ReverseAdoc::Converters::Div.new }
|
6
5
|
|
7
|
-
it
|
6
|
+
it "converts div" do
|
8
7
|
node = node_for("<div>puts foo</div>")
|
9
8
|
expect(converter.convert(node)).to include "\nputs foo"
|
10
9
|
end
|
11
10
|
|
12
|
-
it
|
11
|
+
it "converts div with anchor" do
|
13
12
|
node = node_for("<div id='A'>puts foo</div>")
|
14
13
|
expect(converter.convert(node)).to include "\n[[A]]\nputs foo"
|
15
14
|
end
|
16
|
-
|
17
15
|
end
|
@@ -1,12 +1,10 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe ReverseAdoc::Converters::Figure do
|
4
|
-
|
5
4
|
let(:converter) { ReverseAdoc::Converters::Figure.new }
|
6
5
|
|
7
|
-
it
|
6
|
+
it "converts figure" do
|
8
7
|
node = node_for("<figure id='A'><img src='example.jpg'/><figcaption>Figure <i>caption</i></figcaption></figure>")
|
9
8
|
expect(converter.convert(node)).to include "[[A]]\n.Figure _caption_\n====\nimage::example.jpg[]\n====\n"
|
10
|
-
|
11
9
|
end
|
12
10
|
end
|
@@ -1,27 +1,25 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe ReverseAdoc::Converters::Img do
|
4
|
-
|
5
4
|
let(:converter) { ReverseAdoc::Converters::Img.new }
|
6
5
|
|
7
|
-
it
|
6
|
+
it "converts image with no attributes" do
|
8
7
|
node = node_for("<img src='example.jpg'/>")
|
9
8
|
expect(converter.convert(node)).to include "image::example.jpg[]"
|
10
9
|
end
|
11
10
|
|
12
|
-
it
|
11
|
+
it "converts image with full set of attributes" do
|
13
12
|
node = node_for("<img id='A' alt='Alt Text' src='example.jpg' width='30' height='40'/>")
|
14
13
|
expect(converter.convert(node)).to include "[[A]]\nimage::example.jpg[Alt Text,30,40]"
|
15
14
|
end
|
16
15
|
|
17
|
-
it
|
16
|
+
it "converts image with alt text, no width and height" do
|
18
17
|
node = node_for("<img id='A' alt='Alt Text' src='example.jpg'/>")
|
19
18
|
expect(converter.convert(node)).to include "[[A]]\nimage::example.jpg[Alt Text]"
|
20
19
|
end
|
21
20
|
|
22
|
-
it
|
21
|
+
it "converts image with width and height, no alt text" do
|
23
22
|
node = node_for("<img id='A' src='example.jpg' width='30' height='40'/>")
|
24
23
|
expect(converter.convert(node)).to include "[[A]]\nimage::example.jpg[\"\",30,40]"
|
25
24
|
end
|
26
|
-
|
27
25
|
end
|
@@ -1,13 +1,11 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe ReverseAdoc::Converters::Li do
|
4
|
-
|
5
4
|
let(:converter) { ReverseAdoc::Converters::Li.new }
|
6
5
|
|
7
|
-
it
|
6
|
+
it "does not fail without a valid parent context" do
|
8
7
|
input = node_for("<li>foo</li>")
|
9
8
|
result = converter.convert(input)
|
10
9
|
expect(result).to eq " foo\n"
|
11
10
|
end
|
12
|
-
|
13
11
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe ReverseAdoc::Converters::Mark do
|
4
4
|
let(:converter) { ReverseAdoc::Converters::Mark.new }
|
5
5
|
|
6
|
-
it
|
7
|
-
input = node_for(
|
8
|
-
expect(converter.convert(input)).to eq
|
6
|
+
it "renders mark" do
|
7
|
+
input = node_for("<mark>A</mark>")
|
8
|
+
expect(converter.convert(input)).to eq "#A#"
|
9
9
|
end
|
10
10
|
end
|
@@ -1,10 +1,9 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe ReverseAdoc::Converters::P do
|
4
|
-
|
5
4
|
let(:converter) { ReverseAdoc::Converters::P.new }
|
6
5
|
|
7
|
-
it
|
6
|
+
it "converts p with anchor" do
|
8
7
|
node = node_for("<p id='A'>puts foo</p>")
|
9
8
|
expect(converter.convert(node)).to include "\n[[A]]\nputs foo"
|
10
9
|
end
|
@@ -1,42 +1,41 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe ReverseAdoc::Converters::Pre do
|
4
|
-
|
5
4
|
let(:converter) { ReverseAdoc::Converters::Pre.new }
|
6
5
|
|
7
|
-
it
|
6
|
+
it "converts as literal" do
|
8
7
|
node = node_for("<pre>puts foo</pre>")
|
9
8
|
expect(converter.convert(node)).to include "....\nputs foo\n....\n"
|
10
9
|
end
|
11
10
|
|
12
|
-
it
|
11
|
+
it "converts as literal with anchor" do
|
13
12
|
node = node_for("<pre id='A'>puts foo</pre>")
|
14
13
|
expect(converter.convert(node)).to include "[[A]]\n....\nputs foo\n....\n"
|
15
14
|
end
|
16
15
|
|
17
|
-
it
|
16
|
+
it "preserves new lines" do
|
18
17
|
node = node_for("<pre>foo\nbar</pre>")
|
19
18
|
expect(converter.convert(node)).to include "....\nfoo\nbar\n....\n"
|
20
19
|
end
|
21
20
|
|
22
|
-
it
|
21
|
+
it "preserves xml" do
|
23
22
|
node = node_for("<pre><code>x</code><br/><p>hello</p></pre>")
|
24
23
|
expect(converter.convert(node)).to include "....\nx\n\n\nhello\n\n\n....\n"
|
25
24
|
end
|
26
25
|
|
27
|
-
context
|
26
|
+
context "syntax highlighting" do
|
28
27
|
it 'works for "highlight-lang" mechanism' do
|
29
28
|
div = node_for("<div class='highlight highlight-ruby'><pre>puts foo</pre></div>")
|
30
29
|
pre = div.children.first
|
31
30
|
expect(converter.convert(pre)).to include "[source,ruby]\n----\nputs foo\n----\n"
|
32
31
|
end
|
33
32
|
|
34
|
-
it
|
33
|
+
it "works for the confluence mechanism" do
|
35
34
|
pre = node_for("<pre class='theme: Confluence; brush: html/xml; gutter: false'>puts foo</pre>")
|
36
35
|
expect(converter.convert(pre)).to include "[source,html/xml]\n----\nputs foo\n----\n"
|
37
36
|
end
|
38
37
|
|
39
|
-
it
|
38
|
+
it "works for the confluence mechanism, with anchor" do
|
40
39
|
pre = node_for("<pre id = 'A' class='theme: Confluence; brush: html/xml; gutter: false'>puts foo</pre>")
|
41
40
|
expect(converter.convert(pre)).to include "[[A]]\n[source,html/xml]\n----\nputs foo\n----\n"
|
42
41
|
end
|
@@ -1,10 +1,10 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe ReverseAdoc::Converters::Q do
|
4
4
|
let(:converter) { ReverseAdoc::Converters::Q.new }
|
5
5
|
|
6
|
-
it
|
7
|
-
input = node_for(
|
6
|
+
it "renders q" do
|
7
|
+
input = node_for("<q>A</q>")
|
8
8
|
expect(converter.convert(input)).to eq '"A"'
|
9
9
|
end
|
10
10
|
end
|
@@ -1,19 +1,20 @@
|
|
1
|
-
require
|
1
|
+
require "spec_helper"
|
2
2
|
|
3
3
|
describe ReverseAdoc::Converters::Strong do
|
4
4
|
let(:converter) { ReverseAdoc::Converters::Strong.new }
|
5
5
|
|
6
|
-
it
|
7
|
-
input = node_for(
|
8
|
-
expect(converter.convert(input)).to eq
|
6
|
+
it "returns an empty string if the node is empty" do
|
7
|
+
input = node_for("<strong></strong>")
|
8
|
+
expect(converter.convert(input)).to eq ""
|
9
9
|
end
|
10
10
|
|
11
|
-
it
|
12
|
-
input = node_for(
|
13
|
-
expect(converter.convert(input.children.first,
|
11
|
+
it "returns just the content if the strong tag is nested in another strong" do
|
12
|
+
input = node_for("<strong><strong>foo</strong></strong>")
|
13
|
+
expect(converter.convert(input.children.first,
|
14
|
+
already_strong: true)).to eq "foo"
|
14
15
|
end
|
15
16
|
|
16
|
-
it
|
17
|
+
it "moves border whitespaces outside of the delimiters tag" do
|
17
18
|
input = node_for("<strong> \n foo </strong>")
|
18
19
|
expect(converter.convert(input)).to eq " *foo* "
|
19
20
|
end
|