reverse_adoc 0.3.6 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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 = "![im__age](sou__rce)"
|
@@ -112,41 +112,41 @@ describe ReverseAdoc::Cleaner do
|
|
112
112
|
expect(result).to eq "![im__age](sou__rce)"
|
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 "![im__age](sou__rce)"
|
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
|