rich_text_renderer 0.2.0 → 0.3.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.
Files changed (148) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -1
  3. data/README.md +1 -1
  4. data/lib/rich_text_renderer/block_renderers/blockquote_renderer.rb +1 -1
  5. data/lib/rich_text_renderer/block_renderers/entry_block_renderer.rb +1 -1
  6. data/lib/rich_text_renderer/block_renderers/table_cell_renderer.rb +12 -0
  7. data/lib/rich_text_renderer/block_renderers/table_header_cell_renderer.rb +12 -0
  8. data/lib/rich_text_renderer/block_renderers/table_renderer.rb +10 -0
  9. data/lib/rich_text_renderer/block_renderers/table_row_renderer.rb +12 -0
  10. data/lib/rich_text_renderer/block_renderers.rb +5 -0
  11. data/lib/rich_text_renderer/renderer.rb +5 -1
  12. data/lib/rich_text_renderer/text_renderers/text_renderer.rb +2 -0
  13. data/lib/rich_text_renderer/version.rb +1 -1
  14. metadata +8 -166
  15. data/.gitignore +0 -7
  16. data/.rspec +0 -1
  17. data/.rubocop.yml +0 -27
  18. data/.rubocop_todo.yml +0 -35
  19. data/.travis.yml +0 -13
  20. data/.yardopts +0 -4
  21. data/Gemfile +0 -3
  22. data/Gemfile.lock +0 -110
  23. data/Guardfile +0 -24
  24. data/Rakefile +0 -33
  25. data/coverage/.last_run.json +0 -5
  26. data/coverage/.resultset.json +0 -1372
  27. data/coverage/.resultset.json.lock +0 -0
  28. data/coverage/assets/0.10.2/application.css +0 -799
  29. data/coverage/assets/0.10.2/application.js +0 -1707
  30. data/coverage/assets/0.10.2/colorbox/border.png +0 -0
  31. data/coverage/assets/0.10.2/colorbox/controls.png +0 -0
  32. data/coverage/assets/0.10.2/colorbox/loading.gif +0 -0
  33. data/coverage/assets/0.10.2/colorbox/loading_background.png +0 -0
  34. data/coverage/assets/0.10.2/favicon_green.png +0 -0
  35. data/coverage/assets/0.10.2/favicon_red.png +0 -0
  36. data/coverage/assets/0.10.2/favicon_yellow.png +0 -0
  37. data/coverage/assets/0.10.2/loading.gif +0 -0
  38. data/coverage/assets/0.10.2/magnify.png +0 -0
  39. data/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  40. data/coverage/assets/0.10.2/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  41. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  42. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  43. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  44. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  45. data/coverage/assets/0.10.2/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  46. data/coverage/assets/0.10.2/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  47. data/coverage/assets/0.10.2/smoothness/images/ui-icons_222222_256x240.png +0 -0
  48. data/coverage/assets/0.10.2/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  49. data/coverage/assets/0.10.2/smoothness/images/ui-icons_454545_256x240.png +0 -0
  50. data/coverage/assets/0.10.2/smoothness/images/ui-icons_888888_256x240.png +0 -0
  51. data/coverage/assets/0.10.2/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  52. data/coverage/index.html +0 -9146
  53. data/doc/RichTextRenderer/BaseBlockRenderer.html +0 -242
  54. data/doc/RichTextRenderer/BaseInlineRenderer.html +0 -242
  55. data/doc/RichTextRenderer/BaseNodeRenderer.html +0 -300
  56. data/doc/RichTextRenderer/BlockQuoteRenderer.html +0 -169
  57. data/doc/RichTextRenderer/BoldRenderer.html +0 -169
  58. data/doc/RichTextRenderer/CodeRenderer.html +0 -169
  59. data/doc/RichTextRenderer/DocumentRenderer.html +0 -242
  60. data/doc/RichTextRenderer/EntryBlockRenderer.html +0 -239
  61. data/doc/RichTextRenderer/HeadingFiveRenderer.html +0 -169
  62. data/doc/RichTextRenderer/HeadingFourRenderer.html +0 -169
  63. data/doc/RichTextRenderer/HeadingOneRenderer.html +0 -169
  64. data/doc/RichTextRenderer/HeadingSixRenderer.html +0 -169
  65. data/doc/RichTextRenderer/HeadingThreeRenderer.html +0 -169
  66. data/doc/RichTextRenderer/HeadingTwoRenderer.html +0 -169
  67. data/doc/RichTextRenderer/HrRenderer.html +0 -238
  68. data/doc/RichTextRenderer/HyperlinkRenderer.html +0 -246
  69. data/doc/RichTextRenderer/ItalicRenderer.html +0 -169
  70. data/doc/RichTextRenderer/ListItemRenderer.html +0 -169
  71. data/doc/RichTextRenderer/NullRenderer.html +0 -238
  72. data/doc/RichTextRenderer/OrderedListRenderer.html +0 -169
  73. data/doc/RichTextRenderer/ParagraphRenderer.html +0 -169
  74. data/doc/RichTextRenderer/Renderer.html +0 -349
  75. data/doc/RichTextRenderer/TextRenderer.html +0 -254
  76. data/doc/RichTextRenderer/UnderlineRenderer.html +0 -169
  77. data/doc/RichTextRenderer/UnorderedListRenderer.html +0 -169
  78. data/doc/RichTextRenderer.html +0 -155
  79. data/doc/StructuredTextRenderer/BaseBlockRenderer.html +0 -242
  80. data/doc/StructuredTextRenderer/BaseInlineRenderer.html +0 -242
  81. data/doc/StructuredTextRenderer/BaseNodeRenderer.html +0 -300
  82. data/doc/StructuredTextRenderer/BoldRenderer.html +0 -169
  83. data/doc/StructuredTextRenderer/CodeRenderer.html +0 -169
  84. data/doc/StructuredTextRenderer/DocumentRenderer.html +0 -242
  85. data/doc/StructuredTextRenderer/EntryBlockRenderer.html +0 -239
  86. data/doc/StructuredTextRenderer/HeadingFiveRenderer.html +0 -169
  87. data/doc/StructuredTextRenderer/HeadingFourRenderer.html +0 -169
  88. data/doc/StructuredTextRenderer/HeadingOneRenderer.html +0 -169
  89. data/doc/StructuredTextRenderer/HeadingSixRenderer.html +0 -169
  90. data/doc/StructuredTextRenderer/HeadingThreeRenderer.html +0 -169
  91. data/doc/StructuredTextRenderer/HeadingTwoRenderer.html +0 -169
  92. data/doc/StructuredTextRenderer/HrRenderer.html +0 -238
  93. data/doc/StructuredTextRenderer/HyperlinkRenderer.html +0 -246
  94. data/doc/StructuredTextRenderer/ItalicRenderer.html +0 -169
  95. data/doc/StructuredTextRenderer/ListItemRenderer.html +0 -169
  96. data/doc/StructuredTextRenderer/NullRenderer.html +0 -238
  97. data/doc/StructuredTextRenderer/OrderedListRenderer.html +0 -169
  98. data/doc/StructuredTextRenderer/ParagraphRenderer.html +0 -169
  99. data/doc/StructuredTextRenderer/QuoteRenderer.html +0 -169
  100. data/doc/StructuredTextRenderer/Renderer.html +0 -349
  101. data/doc/StructuredTextRenderer/TextRenderer.html +0 -254
  102. data/doc/StructuredTextRenderer/UnderlineRenderer.html +0 -169
  103. data/doc/StructuredTextRenderer/UnorderedListRenderer.html +0 -169
  104. data/doc/StructuredTextRenderer.html +0 -155
  105. data/doc/_index.html +0 -387
  106. data/doc/class_list.html +0 -51
  107. data/doc/css/common.css +0 -1
  108. data/doc/css/full_list.css +0 -58
  109. data/doc/css/style.css +0 -496
  110. data/doc/file.CHANGELOG.html +0 -91
  111. data/doc/file.LICENSE.html +0 -70
  112. data/doc/file.README.html +0 -170
  113. data/doc/file_list.html +0 -66
  114. data/doc/frames.html +0 -17
  115. data/doc/index.html +0 -170
  116. data/doc/js/app.js +0 -292
  117. data/doc/js/full_list.js +0 -216
  118. data/doc/js/jquery.js +0 -4
  119. data/doc/method_list.html +0 -147
  120. data/doc/top-level-namespace.html +0 -110
  121. data/rich_text_renderer.gemspec +0 -30
  122. data/spec/lib/rich_text_renderer/block_renderers/asset_block_renderer_spec.rb +0 -101
  123. data/spec/lib/rich_text_renderer/block_renderers/asset_hyperlink_renderer_spec.rb +0 -32
  124. data/spec/lib/rich_text_renderer/block_renderers/base_block_renderer_spec.rb +0 -26
  125. data/spec/lib/rich_text_renderer/block_renderers/blockquote_renderer_spec.rb +0 -25
  126. data/spec/lib/rich_text_renderer/block_renderers/entry_block_renderer_spec.rb +0 -15
  127. data/spec/lib/rich_text_renderer/block_renderers/heading_five_renderer_spec.rb +0 -24
  128. data/spec/lib/rich_text_renderer/block_renderers/heading_four_renderer_spec.rb +0 -24
  129. data/spec/lib/rich_text_renderer/block_renderers/heading_one_renderer_spec.rb +0 -24
  130. data/spec/lib/rich_text_renderer/block_renderers/heading_six_renderer_spec.rb +0 -24
  131. data/spec/lib/rich_text_renderer/block_renderers/heading_three_renderer_spec.rb +0 -24
  132. data/spec/lib/rich_text_renderer/block_renderers/heading_two_renderer_spec.rb +0 -24
  133. data/spec/lib/rich_text_renderer/block_renderers/hr_renderer_spec.rb +0 -13
  134. data/spec/lib/rich_text_renderer/block_renderers/hyperlink_renderer_spec.rb +0 -24
  135. data/spec/lib/rich_text_renderer/block_renderers/list_item_renderer_spec.rb +0 -24
  136. data/spec/lib/rich_text_renderer/block_renderers/ordered_list_renderer_spec.rb +0 -56
  137. data/spec/lib/rich_text_renderer/block_renderers/paragraph_renderer_spec.rb +0 -30
  138. data/spec/lib/rich_text_renderer/block_renderers/unordered_list_renderer_spec.rb +0 -56
  139. data/spec/lib/rich_text_renderer/document_renderers/document_renderer_spec.rb +0 -42
  140. data/spec/lib/rich_text_renderer/null_renderer_spec.rb +0 -19
  141. data/spec/lib/rich_text_renderer/renderer_spec.rb +0 -308
  142. data/spec/lib/rich_text_renderer/text_renderers/base_inline_renderer_spec.rb +0 -11
  143. data/spec/lib/rich_text_renderer/text_renderers/bold_renderer_spec.rb +0 -11
  144. data/spec/lib/rich_text_renderer/text_renderers/code_renderer_spec.rb +0 -11
  145. data/spec/lib/rich_text_renderer/text_renderers/italic_renderer_spec.rb +0 -11
  146. data/spec/lib/rich_text_renderer/text_renderers/text_renderer_spec.rb +0 -53
  147. data/spec/lib/rich_text_renderer/text_renderers/underline_renderer_spec.rb +0 -11
  148. 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 blockqoute' do
18
- expect(subject.render(mock_node)).to eq "<blockqoute><p>foo</p></blockqoute>"
19
- end
20
-
21
- it 'will propagate marks to text renderers' do
22
- expect(subject.render(mock_node_with_marks)).to eq "<blockqoute><p><b>foo</b></p></blockqoute>"
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>{"target"=>{"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