rich_text_renderer 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/rich_text_renderer/version.rb +1 -1
- metadata +6 -167
- data/.gitignore +0 -7
- data/.rspec +0 -1
- data/.rubocop.yml +0 -27
- data/.rubocop_todo.yml +0 -35
- data/.travis.yml +0 -13
- data/.yardopts +0 -4
- data/Gemfile +0 -3
- data/Gemfile.lock +0 -110
- data/Guardfile +0 -24
- data/Rakefile +0 -33
- data/coverage/.last_run.json +0 -5
- data/coverage/.resultset.json +0 -1372
- data/coverage/.resultset.json.lock +0 -0
- data/coverage/assets/0.10.2/application.css +0 -799
- data/coverage/assets/0.10.2/application.js +0 -1707
- data/coverage/assets/0.10.2/colorbox/border.png +0 -0
- data/coverage/assets/0.10.2/colorbox/controls.png +0 -0
- data/coverage/assets/0.10.2/colorbox/loading.gif +0 -0
- data/coverage/assets/0.10.2/colorbox/loading_background.png +0 -0
- data/coverage/assets/0.10.2/favicon_green.png +0 -0
- data/coverage/assets/0.10.2/favicon_red.png +0 -0
- data/coverage/assets/0.10.2/favicon_yellow.png +0 -0
- data/coverage/assets/0.10.2/loading.gif +0 -0
- data/coverage/assets/0.10.2/magnify.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-icons_222222_256x240.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-icons_454545_256x240.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-icons_888888_256x240.png +0 -0
- data/coverage/assets/0.10.2/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/coverage/index.html +0 -9146
- data/doc/RichTextRenderer/BaseBlockRenderer.html +0 -242
- data/doc/RichTextRenderer/BaseInlineRenderer.html +0 -242
- data/doc/RichTextRenderer/BaseNodeRenderer.html +0 -300
- data/doc/RichTextRenderer/BlockQuoteRenderer.html +0 -169
- data/doc/RichTextRenderer/BoldRenderer.html +0 -169
- data/doc/RichTextRenderer/CodeRenderer.html +0 -169
- data/doc/RichTextRenderer/DocumentRenderer.html +0 -242
- data/doc/RichTextRenderer/EntryBlockRenderer.html +0 -239
- data/doc/RichTextRenderer/HeadingFiveRenderer.html +0 -169
- data/doc/RichTextRenderer/HeadingFourRenderer.html +0 -169
- data/doc/RichTextRenderer/HeadingOneRenderer.html +0 -169
- data/doc/RichTextRenderer/HeadingSixRenderer.html +0 -169
- data/doc/RichTextRenderer/HeadingThreeRenderer.html +0 -169
- data/doc/RichTextRenderer/HeadingTwoRenderer.html +0 -169
- data/doc/RichTextRenderer/HrRenderer.html +0 -238
- data/doc/RichTextRenderer/HyperlinkRenderer.html +0 -246
- data/doc/RichTextRenderer/ItalicRenderer.html +0 -169
- data/doc/RichTextRenderer/ListItemRenderer.html +0 -169
- data/doc/RichTextRenderer/NullRenderer.html +0 -238
- data/doc/RichTextRenderer/OrderedListRenderer.html +0 -169
- data/doc/RichTextRenderer/ParagraphRenderer.html +0 -169
- data/doc/RichTextRenderer/Renderer.html +0 -349
- data/doc/RichTextRenderer/TextRenderer.html +0 -254
- data/doc/RichTextRenderer/UnderlineRenderer.html +0 -169
- data/doc/RichTextRenderer/UnorderedListRenderer.html +0 -169
- data/doc/RichTextRenderer.html +0 -155
- data/doc/StructuredTextRenderer/BaseBlockRenderer.html +0 -242
- data/doc/StructuredTextRenderer/BaseInlineRenderer.html +0 -242
- data/doc/StructuredTextRenderer/BaseNodeRenderer.html +0 -300
- data/doc/StructuredTextRenderer/BoldRenderer.html +0 -169
- data/doc/StructuredTextRenderer/CodeRenderer.html +0 -169
- data/doc/StructuredTextRenderer/DocumentRenderer.html +0 -242
- data/doc/StructuredTextRenderer/EntryBlockRenderer.html +0 -239
- data/doc/StructuredTextRenderer/HeadingFiveRenderer.html +0 -169
- data/doc/StructuredTextRenderer/HeadingFourRenderer.html +0 -169
- data/doc/StructuredTextRenderer/HeadingOneRenderer.html +0 -169
- data/doc/StructuredTextRenderer/HeadingSixRenderer.html +0 -169
- data/doc/StructuredTextRenderer/HeadingThreeRenderer.html +0 -169
- data/doc/StructuredTextRenderer/HeadingTwoRenderer.html +0 -169
- data/doc/StructuredTextRenderer/HrRenderer.html +0 -238
- data/doc/StructuredTextRenderer/HyperlinkRenderer.html +0 -246
- data/doc/StructuredTextRenderer/ItalicRenderer.html +0 -169
- data/doc/StructuredTextRenderer/ListItemRenderer.html +0 -169
- data/doc/StructuredTextRenderer/NullRenderer.html +0 -238
- data/doc/StructuredTextRenderer/OrderedListRenderer.html +0 -169
- data/doc/StructuredTextRenderer/ParagraphRenderer.html +0 -169
- data/doc/StructuredTextRenderer/QuoteRenderer.html +0 -169
- data/doc/StructuredTextRenderer/Renderer.html +0 -349
- data/doc/StructuredTextRenderer/TextRenderer.html +0 -254
- data/doc/StructuredTextRenderer/UnderlineRenderer.html +0 -169
- data/doc/StructuredTextRenderer/UnorderedListRenderer.html +0 -169
- data/doc/StructuredTextRenderer.html +0 -155
- data/doc/_index.html +0 -387
- data/doc/class_list.html +0 -51
- data/doc/css/common.css +0 -1
- data/doc/css/full_list.css +0 -58
- data/doc/css/style.css +0 -496
- data/doc/file.CHANGELOG.html +0 -91
- data/doc/file.LICENSE.html +0 -70
- data/doc/file.README.html +0 -170
- data/doc/file_list.html +0 -66
- data/doc/frames.html +0 -17
- data/doc/index.html +0 -170
- data/doc/js/app.js +0 -292
- data/doc/js/full_list.js +0 -216
- data/doc/js/jquery.js +0 -4
- data/doc/method_list.html +0 -147
- data/doc/top-level-namespace.html +0 -110
- data/rich_text_renderer.gemspec +0 -30
- data/spec/lib/rich_text_renderer/block_renderers/asset_block_renderer_spec.rb +0 -101
- data/spec/lib/rich_text_renderer/block_renderers/asset_hyperlink_renderer_spec.rb +0 -32
- data/spec/lib/rich_text_renderer/block_renderers/base_block_renderer_spec.rb +0 -26
- data/spec/lib/rich_text_renderer/block_renderers/blockquote_renderer_spec.rb +0 -25
- data/spec/lib/rich_text_renderer/block_renderers/entry_block_renderer_spec.rb +0 -15
- data/spec/lib/rich_text_renderer/block_renderers/heading_five_renderer_spec.rb +0 -24
- data/spec/lib/rich_text_renderer/block_renderers/heading_four_renderer_spec.rb +0 -24
- data/spec/lib/rich_text_renderer/block_renderers/heading_one_renderer_spec.rb +0 -24
- data/spec/lib/rich_text_renderer/block_renderers/heading_six_renderer_spec.rb +0 -24
- data/spec/lib/rich_text_renderer/block_renderers/heading_three_renderer_spec.rb +0 -24
- data/spec/lib/rich_text_renderer/block_renderers/heading_two_renderer_spec.rb +0 -24
- data/spec/lib/rich_text_renderer/block_renderers/hr_renderer_spec.rb +0 -13
- data/spec/lib/rich_text_renderer/block_renderers/hyperlink_renderer_spec.rb +0 -24
- data/spec/lib/rich_text_renderer/block_renderers/list_item_renderer_spec.rb +0 -24
- data/spec/lib/rich_text_renderer/block_renderers/ordered_list_renderer_spec.rb +0 -56
- data/spec/lib/rich_text_renderer/block_renderers/paragraph_renderer_spec.rb +0 -30
- data/spec/lib/rich_text_renderer/block_renderers/unordered_list_renderer_spec.rb +0 -56
- data/spec/lib/rich_text_renderer/document_renderers/document_renderer_spec.rb +0 -42
- data/spec/lib/rich_text_renderer/null_renderer_spec.rb +0 -19
- data/spec/lib/rich_text_renderer/renderer_spec.rb +0 -308
- data/spec/lib/rich_text_renderer/text_renderers/base_inline_renderer_spec.rb +0 -11
- data/spec/lib/rich_text_renderer/text_renderers/bold_renderer_spec.rb +0 -11
- data/spec/lib/rich_text_renderer/text_renderers/code_renderer_spec.rb +0 -11
- data/spec/lib/rich_text_renderer/text_renderers/italic_renderer_spec.rb +0 -11
- data/spec/lib/rich_text_renderer/text_renderers/text_renderer_spec.rb +0 -65
- data/spec/lib/rich_text_renderer/text_renderers/underline_renderer_spec.rb +0 -11
- data/spec/spec_helper.rb +0 -105
@@ -1,101 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_image_asset_node = {
|
4
|
-
'data' => {
|
5
|
-
'target' => {
|
6
|
-
'fields' => {
|
7
|
-
'title' => 'Foo',
|
8
|
-
'file' => {
|
9
|
-
'contentType' => 'image/jpeg',
|
10
|
-
'url' => 'https://example.com/cat.jpg',
|
11
|
-
},
|
12
|
-
}
|
13
|
-
}
|
14
|
-
}
|
15
|
-
}
|
16
|
-
|
17
|
-
mock_image_asset_resolved_node = {
|
18
|
-
'data' => {
|
19
|
-
'target' => MockAsset.new(
|
20
|
-
{
|
21
|
-
'fields' => {
|
22
|
-
'title' => 'Foo',
|
23
|
-
'file' => {
|
24
|
-
'contentType' => 'image/jpeg',
|
25
|
-
'url' => 'https://example.com/cat.jpg',
|
26
|
-
},
|
27
|
-
}
|
28
|
-
}
|
29
|
-
)
|
30
|
-
}
|
31
|
-
}
|
32
|
-
|
33
|
-
mock_non_image_asset_node = {
|
34
|
-
'data' => {
|
35
|
-
'target' => {
|
36
|
-
'fields' => {
|
37
|
-
'title' => 'Foo',
|
38
|
-
'file' => {
|
39
|
-
'contentType' => 'text/csv',
|
40
|
-
'url' => 'https://example.com/cat.csv',
|
41
|
-
},
|
42
|
-
}
|
43
|
-
}
|
44
|
-
}
|
45
|
-
}
|
46
|
-
|
47
|
-
mock_non_image_asset_resolved_node = {
|
48
|
-
'data' => {
|
49
|
-
'target' => MockAsset.new(
|
50
|
-
{
|
51
|
-
'fields' => {
|
52
|
-
'title' => 'Foo',
|
53
|
-
'file' => {
|
54
|
-
'contentType' => 'text/csv',
|
55
|
-
'url' => 'https://example.com/cat.csv',
|
56
|
-
},
|
57
|
-
}
|
58
|
-
}
|
59
|
-
)
|
60
|
-
}
|
61
|
-
}
|
62
|
-
|
63
|
-
describe RichTextRenderer::AssetBlockRenderer do
|
64
|
-
subject do
|
65
|
-
described_class.new(
|
66
|
-
'text' => RichTextRenderer::TextRenderer
|
67
|
-
)
|
68
|
-
end
|
69
|
-
|
70
|
-
describe '#render' do
|
71
|
-
it 'renders an image asset hash as img' do
|
72
|
-
expect(subject.render(mock_image_asset_node)).to eq '<img src="https://example.com/cat.jpg" alt="Foo" />'
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'renders an image asset object as img' do
|
76
|
-
expect(subject.render(mock_image_asset_resolved_node)).to eq '<img src="https://example.com/cat.jpg" alt="Foo" />'
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'renders a non image hash as an a' do
|
80
|
-
expect(subject.render(mock_non_image_asset_node)).to eq '<a href="https://example.com/cat.csv">Foo</a>'
|
81
|
-
end
|
82
|
-
|
83
|
-
it 'renders a non image object as an a' do
|
84
|
-
expect(subject.render(mock_non_image_asset_resolved_node)).to eq '<a href="https://example.com/cat.csv">Foo</a>'
|
85
|
-
end
|
86
|
-
|
87
|
-
describe 'errors' do
|
88
|
-
it 'raises exception when node is not a data node' do
|
89
|
-
expect { subject.render({}) }.to raise_exception 'Node target is not an asset - Node: {}'
|
90
|
-
end
|
91
|
-
|
92
|
-
it 'raises exception when target is nil' do
|
93
|
-
expect { subject.render({ 'data' => { 'target' => nil }}) }.to raise_exception 'Node target is not an asset - Node: {"data"=>{"target"=>nil}}'
|
94
|
-
end
|
95
|
-
|
96
|
-
it 'raises exception when target does not contain asset fields' do
|
97
|
-
expect { subject.render({ 'data' => { 'target' => {} }}) }.to raise_exception 'Node target is not an asset - Node: {"data"=>{"target"=>{}}}'
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_asset_hyperlink_node = {
|
4
|
-
'data' => {
|
5
|
-
'target' => MockAsset.new(
|
6
|
-
{
|
7
|
-
'fields' => {
|
8
|
-
'title' => 'Foo',
|
9
|
-
'file' => {
|
10
|
-
'contentType' => 'image/jpeg',
|
11
|
-
'url' => 'https://example.com/cat.jpg',
|
12
|
-
},
|
13
|
-
}
|
14
|
-
}
|
15
|
-
)
|
16
|
-
},
|
17
|
-
'content' => [{'value' => 'Example', 'nodeType' => 'text', 'marks' => []}],
|
18
|
-
}
|
19
|
-
|
20
|
-
describe RichTextRenderer::AssetHyperlinkRenderer do
|
21
|
-
subject do
|
22
|
-
described_class.new(
|
23
|
-
'text' => RichTextRenderer::TextRenderer
|
24
|
-
)
|
25
|
-
end
|
26
|
-
|
27
|
-
describe '#render' do
|
28
|
-
it 'renders an a' do
|
29
|
-
expect(subject.render(mock_asset_hyperlink_node)).to eq '<a href="https://example.com/cat.jpg">Example</a>'
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_node = {"content" => [{"value" => "foo", "nodeType" => "text"}]}
|
4
|
-
|
5
|
-
mock_node_with_marks = {"content" => [{"value" => "foo", "nodeType" => "text", "marks" => [{"type" => "bold"}]}]}
|
6
|
-
|
7
|
-
describe RichTextRenderer::BaseBlockRenderer do
|
8
|
-
subject do
|
9
|
-
described_class.new(
|
10
|
-
'text' => RichTextRenderer::TextRenderer,
|
11
|
-
'bold' => RichTextRenderer::BoldRenderer,
|
12
|
-
'italic' => RichTextRenderer::ItalicRenderer,
|
13
|
-
'underline' => RichTextRenderer::UnderlineRenderer
|
14
|
-
)
|
15
|
-
end
|
16
|
-
|
17
|
-
describe '#render' do
|
18
|
-
it 'by defaults renders a div' do
|
19
|
-
expect(subject.render(mock_node)).to eq "<div>foo</div>"
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'will propagate marks to text renderers' do
|
23
|
-
expect(subject.render(mock_node_with_marks)).to eq "<div><b>foo</b></div>"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_node = {"content" => [{"nodeType" => "paragraph", "content" => [{"value" => "foo", "nodeType" => "text"}]}]}
|
4
|
-
|
5
|
-
mock_node_with_marks = {"content" => [{"nodeType" => "paragraph", "content" => [{"value" => "foo", "nodeType" => "text", "marks" => [{"type" => "bold"}]}]}]}
|
6
|
-
|
7
|
-
describe RichTextRenderer::BlockQuoteRenderer do
|
8
|
-
subject do
|
9
|
-
described_class.new(
|
10
|
-
'paragraph' => RichTextRenderer::ParagraphRenderer,
|
11
|
-
'text' => RichTextRenderer::TextRenderer,
|
12
|
-
'bold' => RichTextRenderer::BoldRenderer
|
13
|
-
)
|
14
|
-
end
|
15
|
-
|
16
|
-
describe '#render' do
|
17
|
-
it 'renders a blockquote' do
|
18
|
-
expect(subject.render(mock_node)).to eq "<blockquote><p>foo</p></blockquote>"
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'will propagate marks to text renderers' do
|
22
|
-
expect(subject.render(mock_node_with_marks)).to eq "<blockquote><p><b>foo</b></p></blockquote>"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_data_node = {
|
4
|
-
"data" => {"target" => {"sys" => {"id" => "foo", "type" => "Link", "linkType" => "Entry"}}}
|
5
|
-
}
|
6
|
-
|
7
|
-
describe RichTextRenderer::EntryBlockRenderer do
|
8
|
-
subject { described_class.new }
|
9
|
-
|
10
|
-
describe '#render' do
|
11
|
-
it 'will stringify node data' do
|
12
|
-
expect(subject.render(mock_data_node)).to eq '<div>{"sys"=>{"id"=>"foo", "type"=>"Link", "linkType"=>"Entry"}}</div>'
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_node = {"content" => [{"value" => "foo", "nodeType" => "text"}]}
|
4
|
-
|
5
|
-
mock_node_with_marks = {"content" => [{"value" => "foo", "nodeType" => "text", "marks" => [{"type" => "bold"}]}]}
|
6
|
-
|
7
|
-
describe RichTextRenderer::HeadingFiveRenderer do
|
8
|
-
subject do
|
9
|
-
described_class.new(
|
10
|
-
'text' => RichTextRenderer::TextRenderer,
|
11
|
-
'bold' => RichTextRenderer::BoldRenderer
|
12
|
-
)
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '#render' do
|
16
|
-
it 'renders a h5' do
|
17
|
-
expect(subject.render(mock_node)).to eq "<h5>foo</h5>"
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'will propagate marks to text renderers' do
|
21
|
-
expect(subject.render(mock_node_with_marks)).to eq "<h5><b>foo</b></h5>"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_node = {"content" => [{"value" => "foo", "nodeType" => "text"}]}
|
4
|
-
|
5
|
-
mock_node_with_marks = {"content" => [{"value" => "foo", "nodeType" => "text", "marks" => [{"type" => "bold"}]}]}
|
6
|
-
|
7
|
-
describe RichTextRenderer::HeadingFourRenderer do
|
8
|
-
subject do
|
9
|
-
described_class.new(
|
10
|
-
'text' => RichTextRenderer::TextRenderer,
|
11
|
-
'bold' => RichTextRenderer::BoldRenderer
|
12
|
-
)
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '#render' do
|
16
|
-
it 'renders a h4' do
|
17
|
-
expect(subject.render(mock_node)).to eq "<h4>foo</h4>"
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'will propagate marks to text renderers' do
|
21
|
-
expect(subject.render(mock_node_with_marks)).to eq "<h4><b>foo</b></h4>"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_node = {"content" => [{"value" => "foo", "nodeType" => "text"}]}
|
4
|
-
|
5
|
-
mock_node_with_marks = {"content" => [{"value" => "foo", "nodeType" => "text", "marks" => [{"type" => "bold"}]}]}
|
6
|
-
|
7
|
-
describe RichTextRenderer::HeadingOneRenderer do
|
8
|
-
subject do
|
9
|
-
described_class.new(
|
10
|
-
'text' => RichTextRenderer::TextRenderer,
|
11
|
-
'bold' => RichTextRenderer::BoldRenderer
|
12
|
-
)
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '#render' do
|
16
|
-
it 'renders a h1' do
|
17
|
-
expect(subject.render(mock_node)).to eq "<h1>foo</h1>"
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'will propagate marks to text renderers' do
|
21
|
-
expect(subject.render(mock_node_with_marks)).to eq "<h1><b>foo</b></h1>"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_node = {"content" => [{"value" => "foo", "nodeType" => "text"}]}
|
4
|
-
|
5
|
-
mock_node_with_marks = {"content" => [{"value" => "foo", "nodeType" => "text", "marks" => [{"type" => "bold"}]}]}
|
6
|
-
|
7
|
-
describe RichTextRenderer::HeadingSixRenderer do
|
8
|
-
subject do
|
9
|
-
described_class.new(
|
10
|
-
'text' => RichTextRenderer::TextRenderer,
|
11
|
-
'bold' => RichTextRenderer::BoldRenderer
|
12
|
-
)
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '#render' do
|
16
|
-
it 'renders a h6' do
|
17
|
-
expect(subject.render(mock_node)).to eq "<h6>foo</h6>"
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'will propagate marks to text renderers' do
|
21
|
-
expect(subject.render(mock_node_with_marks)).to eq "<h6><b>foo</b></h6>"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_node = {"content" => [{"value" => "foo", "nodeType" => "text"}]}
|
4
|
-
|
5
|
-
mock_node_with_marks = {"content" => [{"value" => "foo", "nodeType" => "text", "marks" => [{"type" => "bold"}]}]}
|
6
|
-
|
7
|
-
describe RichTextRenderer::HeadingThreeRenderer do
|
8
|
-
subject do
|
9
|
-
described_class.new(
|
10
|
-
'text' => RichTextRenderer::TextRenderer,
|
11
|
-
'bold' => RichTextRenderer::BoldRenderer
|
12
|
-
)
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '#render' do
|
16
|
-
it 'renders a h3' do
|
17
|
-
expect(subject.render(mock_node)).to eq "<h3>foo</h3>"
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'will propagate marks to text renderers' do
|
21
|
-
expect(subject.render(mock_node_with_marks)).to eq "<h3><b>foo</b></h3>"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_node = {"content" => [{"value" => "foo", "nodeType" => "text"}]}
|
4
|
-
|
5
|
-
mock_node_with_marks = {"content" => [{"value" => "foo", "nodeType" => "text", "marks" => [{"type" => "bold"}]}]}
|
6
|
-
|
7
|
-
describe RichTextRenderer::HeadingTwoRenderer do
|
8
|
-
subject do
|
9
|
-
described_class.new(
|
10
|
-
'text' => RichTextRenderer::TextRenderer,
|
11
|
-
'bold' => RichTextRenderer::BoldRenderer
|
12
|
-
)
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '#render' do
|
16
|
-
it 'renders a h2' do
|
17
|
-
expect(subject.render(mock_node)).to eq "<h2>foo</h2>"
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'will propagate marks to text renderers' do
|
21
|
-
expect(subject.render(mock_node_with_marks)).to eq "<h2><b>foo</b></h2>"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_node = {"nodeType" => "hr"}
|
4
|
-
|
5
|
-
describe RichTextRenderer::HrRenderer do
|
6
|
-
subject { described_class.new }
|
7
|
-
|
8
|
-
describe '#render' do
|
9
|
-
it 'will render an hr' do
|
10
|
-
expect(subject.render(mock_node)).to eq '<hr />'
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_node = {"data" => {"uri" => "https://foobar.com"}, "content" => [{"value" => "foo", "nodeType" => "text"}]}
|
4
|
-
|
5
|
-
mock_node_with_marks = {"data" => {"uri" => "https://foobar.com"}, "content" => [{"value" => "foo", "nodeType" => "text", "marks" => [{"type" => "bold"}]}]}
|
6
|
-
|
7
|
-
describe RichTextRenderer::HyperlinkRenderer do
|
8
|
-
subject do
|
9
|
-
described_class.new(
|
10
|
-
'text' => RichTextRenderer::TextRenderer,
|
11
|
-
'bold' => RichTextRenderer::BoldRenderer
|
12
|
-
)
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '#render' do
|
16
|
-
it 'renders an a' do
|
17
|
-
expect(subject.render(mock_node)).to eq '<a href="https://foobar.com">foo</a>'
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'will propagate marks to text renderers' do
|
21
|
-
expect(subject.render(mock_node_with_marks)).to eq '<a href="https://foobar.com"><b>foo</b></a>'
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_node = {"content" => [{"value" => "foo", "nodeType" => "text"}]}
|
4
|
-
|
5
|
-
mock_node_with_marks = {"content" => [{"value" => "foo", "nodeType" => "text", "marks" => [{"type" => "bold"}]}]}
|
6
|
-
|
7
|
-
describe RichTextRenderer::ListItemRenderer do
|
8
|
-
subject do
|
9
|
-
described_class.new(
|
10
|
-
'text' => RichTextRenderer::TextRenderer,
|
11
|
-
'bold' => RichTextRenderer::BoldRenderer
|
12
|
-
)
|
13
|
-
end
|
14
|
-
|
15
|
-
describe '#render' do
|
16
|
-
it 'renders a li' do
|
17
|
-
expect(subject.render(mock_node)).to eq "<li>foo</li>"
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'will propagate marks to text renderers' do
|
21
|
-
expect(subject.render(mock_node_with_marks)).to eq "<li><b>foo</b></li>"
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_node = {"content" => [
|
4
|
-
{
|
5
|
-
"content" => [{
|
6
|
-
"content" => [{
|
7
|
-
"value" => "foo",
|
8
|
-
"nodeType" => "text",
|
9
|
-
"nodeClass" => "text"
|
10
|
-
}],
|
11
|
-
"nodeType" => "paragraph",
|
12
|
-
"nodeClass" => "block"
|
13
|
-
}],
|
14
|
-
"nodeType" => "list-item",
|
15
|
-
"nodeClass" => "block"
|
16
|
-
}]
|
17
|
-
}
|
18
|
-
|
19
|
-
mock_node_with_marks = {"content" => [
|
20
|
-
{
|
21
|
-
"content" => [{
|
22
|
-
"content" => [{
|
23
|
-
"marks" => [{"type" => "bold"}],
|
24
|
-
"value" => "foo",
|
25
|
-
"nodeType" => "text",
|
26
|
-
"nodeClass" => "text"
|
27
|
-
}],
|
28
|
-
"nodeType" => "paragraph",
|
29
|
-
"nodeClass" => "block"
|
30
|
-
}],
|
31
|
-
"nodeType" => "list-item",
|
32
|
-
"nodeClass" => "block"
|
33
|
-
}]
|
34
|
-
}
|
35
|
-
|
36
|
-
|
37
|
-
describe RichTextRenderer::OrderedListRenderer do
|
38
|
-
subject do
|
39
|
-
described_class.new(
|
40
|
-
'paragraph' => RichTextRenderer::ParagraphRenderer,
|
41
|
-
'text' => RichTextRenderer::TextRenderer,
|
42
|
-
'bold' => RichTextRenderer::BoldRenderer,
|
43
|
-
'list-item' => RichTextRenderer::ListItemRenderer
|
44
|
-
)
|
45
|
-
end
|
46
|
-
|
47
|
-
describe '#render' do
|
48
|
-
it 'renders a ol' do
|
49
|
-
expect(subject.render(mock_node)).to eq "<ol><li><p>foo</p></li></ol>"
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'will propagate marks to text renderers' do
|
53
|
-
expect(subject.render(mock_node_with_marks)).to eq "<ol><li><p><b>foo</b></p></li></ol>"
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_node = {"content" => [{"value" => "foo", "nodeType" => "text"}]}
|
4
|
-
|
5
|
-
mock_node_with_marks = {"content" => [{"value" => "foo", "nodeType" => "text", "marks" => [{"type" => "bold"}]}]}
|
6
|
-
|
7
|
-
mock_node_with_multiple_content_nodes = {"content" => [{"value" => "foo", "nodeType" => "text"}, {"value" => " bar", "nodeType" => "text", "marks" => [{"type" => "bold"}]}]}
|
8
|
-
|
9
|
-
describe RichTextRenderer::ParagraphRenderer do
|
10
|
-
subject do
|
11
|
-
described_class.new(
|
12
|
-
'text' => RichTextRenderer::TextRenderer,
|
13
|
-
'bold' => RichTextRenderer::BoldRenderer
|
14
|
-
)
|
15
|
-
end
|
16
|
-
|
17
|
-
describe '#render' do
|
18
|
-
it 'renders a p' do
|
19
|
-
expect(subject.render(mock_node)).to eq "<p>foo</p>"
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'will propagate marks to text renderers' do
|
23
|
-
expect(subject.render(mock_node_with_marks)).to eq "<p><b>foo</b></p>"
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'will properly render multiple content nodes' do
|
27
|
-
expect(subject.render(mock_node_with_multiple_content_nodes)).to eq "<p>foo<b> bar</b></p>"
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_node = {"content" => [
|
4
|
-
{
|
5
|
-
"content" => [{
|
6
|
-
"content" => [{
|
7
|
-
"value" => "foo",
|
8
|
-
"nodeType" => "text",
|
9
|
-
"nodeClass" => "text"
|
10
|
-
}],
|
11
|
-
"nodeType" => "paragraph",
|
12
|
-
"nodeClass" => "block"
|
13
|
-
}],
|
14
|
-
"nodeType" => "list-item",
|
15
|
-
"nodeClass" => "block"
|
16
|
-
}]
|
17
|
-
}
|
18
|
-
|
19
|
-
mock_node_with_marks = {"content" => [
|
20
|
-
{
|
21
|
-
"content" => [{
|
22
|
-
"content" => [{
|
23
|
-
"marks" => [{"type" => "bold"}],
|
24
|
-
"value" => "foo",
|
25
|
-
"nodeType" => "text",
|
26
|
-
"nodeClass" => "text"
|
27
|
-
}],
|
28
|
-
"nodeType" => "paragraph",
|
29
|
-
"nodeClass" => "block"
|
30
|
-
}],
|
31
|
-
"nodeType" => "list-item",
|
32
|
-
"nodeClass" => "block"
|
33
|
-
}]
|
34
|
-
}
|
35
|
-
|
36
|
-
|
37
|
-
describe RichTextRenderer::UnorderedListRenderer do
|
38
|
-
subject do
|
39
|
-
described_class.new(
|
40
|
-
'paragraph' => RichTextRenderer::ParagraphRenderer,
|
41
|
-
'text' => RichTextRenderer::TextRenderer,
|
42
|
-
'bold' => RichTextRenderer::BoldRenderer,
|
43
|
-
'list-item' => RichTextRenderer::ListItemRenderer
|
44
|
-
)
|
45
|
-
end
|
46
|
-
|
47
|
-
describe '#render' do
|
48
|
-
it 'renders a ul' do
|
49
|
-
expect(subject.render(mock_node)).to eq "<ul><li><p>foo</p></li></ul>"
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'will propagate marks to text renderers' do
|
53
|
-
expect(subject.render(mock_node_with_marks)).to eq "<ul><li><p><b>foo</b></p></li></ul>"
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
mock_document = {
|
4
|
-
"nodeType" => "document",
|
5
|
-
"content" => [
|
6
|
-
{
|
7
|
-
"content" => [{"value" => "foo", "nodeType" => "text", "marks" => [{"type" => "bold"}]}],
|
8
|
-
"nodeType" => "heading-1",
|
9
|
-
}
|
10
|
-
],
|
11
|
-
}
|
12
|
-
|
13
|
-
mock_document_with_unknown_nodetype = {
|
14
|
-
"nodeType" => "document",
|
15
|
-
"content" => [
|
16
|
-
{
|
17
|
-
"content" => [{"value" => "foo", "nodeType" => "text", "marks" => [{"type" => "bold"}]}],
|
18
|
-
"nodeType" => "unknown",
|
19
|
-
}
|
20
|
-
],
|
21
|
-
}
|
22
|
-
|
23
|
-
describe RichTextRenderer::DocumentRenderer do
|
24
|
-
subject do
|
25
|
-
described_class.new(
|
26
|
-
'heading-1' => RichTextRenderer::HeadingOneRenderer,
|
27
|
-
'text' => RichTextRenderer::TextRenderer,
|
28
|
-
'bold' => RichTextRenderer::BoldRenderer,
|
29
|
-
nil => RichTextRenderer::NullRenderer
|
30
|
-
)
|
31
|
-
end
|
32
|
-
|
33
|
-
describe '#render' do
|
34
|
-
it 'propagates rendering to renderers' do
|
35
|
-
expect(subject.render(mock_document)).to eq "<h1><b>foo</b></h1>"
|
36
|
-
end
|
37
|
-
|
38
|
-
it 'will raise an error unknown node types' do
|
39
|
-
expect { subject.render(mock_document_with_unknown_nodetype) }.to raise_error "No renderer defined for 'unknown' nodes"
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe RichTextRenderer::NullRenderer do
|
4
|
-
subject { described_class.new }
|
5
|
-
|
6
|
-
describe 'null renderer will raise errors for unknown nodes' do
|
7
|
-
it 'will look for nodeType' do
|
8
|
-
expect { subject.render({'nodeType' => 'foo'}) }.to raise_error "No renderer defined for 'foo' nodes"
|
9
|
-
end
|
10
|
-
|
11
|
-
it 'will look for type' do
|
12
|
-
expect { subject.render({'type' => 'foo'}) }.to raise_error "No renderer defined for 'foo' nodes"
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'if none of the above found, will dump the node' do
|
16
|
-
expect { subject.render({'foo' => 'bar'}) }.to raise_error "No renderer defined for '{\"foo\"=>\"bar\"}' nodes"
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|