sablon 0.0.21 → 0.0.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +4 -3
  3. data/Gemfile.lock +9 -9
  4. data/README.md +120 -11
  5. data/lib/sablon.rb +7 -1
  6. data/lib/sablon/configuration/configuration.rb +165 -0
  7. data/lib/sablon/configuration/html_tag.rb +99 -0
  8. data/lib/sablon/content.rb +12 -9
  9. data/lib/sablon/context.rb +27 -20
  10. data/lib/sablon/environment.rb +31 -0
  11. data/lib/sablon/html/ast.rb +290 -75
  12. data/lib/sablon/html/ast_builder.rb +90 -0
  13. data/lib/sablon/html/converter.rb +3 -123
  14. data/lib/sablon/numbering.rb +0 -5
  15. data/lib/sablon/operations.rb +11 -11
  16. data/lib/sablon/parser/mail_merge.rb +7 -6
  17. data/lib/sablon/processor/document.rb +9 -9
  18. data/lib/sablon/processor/numbering.rb +4 -4
  19. data/lib/sablon/template.rb +5 -4
  20. data/lib/sablon/version.rb +1 -1
  21. data/sablon.gemspec +3 -3
  22. data/test/configuration_test.rb +122 -0
  23. data/test/content_test.rb +7 -6
  24. data/test/context_test.rb +11 -11
  25. data/test/environment_test.rb +27 -0
  26. data/test/expression_test.rb +2 -2
  27. data/test/fixtures/html/html_test_content.html +174 -0
  28. data/test/fixtures/html_sample.docx +0 -0
  29. data/test/fixtures/xml/comment_block_and_comment_as_key.xml +31 -0
  30. data/test/html/ast_builder_test.rb +65 -0
  31. data/test/html/ast_test.rb +117 -0
  32. data/test/html/converter_test.rb +386 -87
  33. data/test/html/node_properties_test.rb +113 -0
  34. data/test/html_test.rb +10 -10
  35. data/test/mail_merge_parser_test.rb +3 -2
  36. data/test/processor/document_test.rb +20 -2
  37. data/test/section_properties_test.rb +1 -1
  38. data/test/support/html_snippets.rb +9 -0
  39. data/test/test_helper.rb +0 -1
  40. metadata +27 -7
@@ -0,0 +1,113 @@
1
+ # -*- coding: utf-8 -*-
2
+ require "test_helper"
3
+
4
+ class NodePropertiesTest < Sablon::TestCase
5
+ def setup
6
+ # struct to simplify prop whitelisting during tests
7
+ @inc_props = Struct.new(:props) do
8
+ def include?(*)
9
+ true
10
+ end
11
+ end
12
+ end
13
+
14
+ def test_empty_node_properties_converison
15
+ # test empty properties
16
+ props = Sablon::HTMLConverter::NodeProperties.new('w:pPr', {}, @inc_props.new)
17
+ assert_equal props.inspect, ''
18
+ assert_nil props.to_docx
19
+ end
20
+
21
+ def test_simple_node_property_converison
22
+ props = { 'pStyle' => 'Paragraph' }
23
+ props = Sablon::HTMLConverter::NodeProperties.new('w:pPr', props, @inc_props.new)
24
+ assert_equal props.inspect, 'pStyle=Paragraph'
25
+ assert_equal props.to_docx, '<w:pPr><w:pStyle w:val="Paragraph" /></w:pPr>'
26
+ end
27
+
28
+ def test_node_property_with_nil_value_converison
29
+ props = { 'b' => nil }
30
+ props = Sablon::HTMLConverter::NodeProperties.new('w:rPr', props, @inc_props.new)
31
+ assert_equal props.inspect, 'b'
32
+ assert_equal props.to_docx, '<w:rPr><w:b /></w:rPr>'
33
+ end
34
+
35
+ def test_node_property_with_hash_value_converison
36
+ props = { 'shd' => { color: 'clear', fill: '123456', test: nil } }
37
+ props = Sablon::HTMLConverter::NodeProperties.new('w:rPr', props, @inc_props.new)
38
+ assert_equal props.inspect, 'shd={:color=>"clear", :fill=>"123456", :test=>nil}'
39
+ assert_equal props.to_docx, '<w:rPr><w:shd w:color="clear" w:fill="123456" /></w:rPr>'
40
+ end
41
+
42
+ def test_node_property_with_array_value_converison
43
+ props = { 'numPr' => [{ 'ilvl' => 1 }, { 'numId' => 34 }] }
44
+ props = Sablon::HTMLConverter::NodeProperties.new('w:pPr', props, @inc_props.new)
45
+ assert_equal props.inspect, 'numPr=[{"ilvl"=>1}, {"numId"=>34}]'
46
+ assert_equal props.to_docx, '<w:pPr><w:numPr><w:ilvl w:val="1" /><w:numId w:val="34" /></w:numPr></w:pPr>'
47
+ end
48
+
49
+ def test_complex_node_properties_conversion
50
+ props = {
51
+ 'top1' => 'val1',
52
+ 'top2' => [
53
+ { 'mid0' => nil },
54
+ { 'mid1' => [
55
+ { 'bottom1' => { key1: 'abc' } },
56
+ { 'bottom2' => 'xyz' }
57
+ ] },
58
+ { 'mid2' => 'val2' }
59
+ ],
60
+ 'top3' => { key1: 1, key2: '2', key3: nil, key4: true, key5: false }
61
+ }
62
+ output = <<-DOCX.gsub(/^\s*/, '').delete("\n")
63
+ <w:pPr>
64
+ <w:top1 w:val="val1" />
65
+ <w:top2>
66
+ <w:mid0 />
67
+ <w:mid1>
68
+ <w:bottom1 w:key1="abc" />
69
+ <w:bottom2 w:val="xyz" />
70
+ </w:mid1>
71
+ <w:mid2 w:val="val2" />
72
+ </w:top2>
73
+ <w:top3 w:key1="1" w:key2="2" w:key4="true" />
74
+ </w:pPr>
75
+ DOCX
76
+ props = Sablon::HTMLConverter::NodeProperties.new('w:pPr', props, @inc_props.new)
77
+ assert_equal props.to_docx, output
78
+ end
79
+
80
+ def test_setting_property_value
81
+ props = {}
82
+ props = Sablon::HTMLConverter::NodeProperties.new('w:pPr', props, @inc_props.new)
83
+ props['rStyle'] = 'FootnoteText'
84
+ assert_equal({ 'rStyle' => 'FootnoteText' }, props.instance_variable_get(:@properties))
85
+ end
86
+
87
+ def test_properties_filtered_on_init
88
+ props = { 'pStyle' => 'Paragraph', 'rStyle' => 'EndnoteText' }
89
+ props = Sablon::HTMLConverter::NodeProperties.new('w:rPr', props, %w[rStyle])
90
+ assert_equal({ 'rStyle' => 'EndnoteText' }, props.instance_variable_get(:@properties))
91
+ end
92
+
93
+ def test_transferred_properties
94
+ props = { 'pStyle' => 'Paragraph', 'rStyle' => 'EndnoteText' }
95
+ props = Sablon::HTMLConverter::NodeProperties.new(nil, props, %w[pStyle])
96
+ trans = props.transferred_properties
97
+ assert_equal({ 'rStyle' => 'EndnoteText' }, trans)
98
+ end
99
+
100
+ def test_node_properties_paragraph_factory
101
+ props = { 'pStyle' => 'Paragraph' }
102
+ props = Sablon::HTMLConverter::NodeProperties.paragraph(props)
103
+ assert_equal 'pStyle=Paragraph', props.inspect
104
+ assert_equal props.to_docx, '<w:pPr><w:pStyle w:val="Paragraph" /></w:pPr>'
105
+ end
106
+
107
+ def test_node_properties_run_factory
108
+ props = { 'color' => 'FF00FF' }
109
+ props = Sablon::HTMLConverter::NodeProperties.run(props)
110
+ assert_equal 'color=FF00FF', props.inspect
111
+ assert_equal '<w:rPr><w:color w:val="FF00FF" /></w:rPr>', props.to_docx
112
+ end
113
+ end
data/test/html_test.rb CHANGED
@@ -1,9 +1,10 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  require "test_helper"
3
- require "support/xml_snippets"
3
+ require "support/html_snippets"
4
4
 
5
5
  class SablonHTMLTest < Sablon::TestCase
6
6
  include Sablon::Test::Assertions
7
+ include HTMLSnippets
7
8
 
8
9
  def setup
9
10
  super
@@ -16,7 +17,7 @@ class SablonHTMLTest < Sablon::TestCase
16
17
  template_path = @base_path + "fixtures/insertion_template.docx"
17
18
  output_path = @base_path + "sandbox/html.docx"
18
19
  template = Sablon.template template_path
19
- context = {'html:content' => content}
20
+ context = { 'html:content' => content }
20
21
  template.render_to_file output_path, context
21
22
 
22
23
  assert_docx_equal @sample_path, output_path
@@ -26,7 +27,7 @@ class SablonHTMLTest < Sablon::TestCase
26
27
  template_path = @base_path + "fixtures/insertion_template_no_styles.docx"
27
28
  output_path = @base_path + "sandbox/html_no_styles.docx"
28
29
  template = Sablon.template template_path
29
- context = {'html:content' => content}
30
+ context = { 'html:content' => content }
30
31
 
31
32
  e = assert_raises(ArgumentError) do
32
33
  template.render_to_file output_path, context
@@ -37,13 +38,12 @@ class SablonHTMLTest < Sablon::TestCase
37
38
  end
38
39
 
39
40
  private
41
+
40
42
  def content
41
- <<-HTML
42
- <h1>Sablon HTML insertion</h1>
43
- <h2>Text</h2>
44
- <div>Lorem&nbsp;<strong>ipsum</strong>&nbsp;<em>dolor</em>&nbsp;<strong>sit</strong>&nbsp;<em>amet</em>,&nbsp;<strong>consectetur adipiscing elit</strong>.&nbsp;<em>Suspendisse a tempus turpis</em>. Duis urna justo, vehicula vitae ultricies vel, congue at sem. Fusce turpis turpis, aliquet id pulvinar aliquam, iaculis non elit. Nulla feugiat lectus nulla, in dictum ipsum cursus ac. Quisque at odio neque. Sed ac tortor iaculis, bibendum leo ut, malesuada velit. Donec iaculis sed urna eget pharetra. <u>Praesent ornare fermentum turpis</u>, placerat iaculis urna bibendum vitae. Nunc in quam consequat, tristique tellus in, commodo turpis. Curabitur ullamcorper odio purus, lobortis egestas magna laoreet vitae. Nunc fringilla velit ante, eu aliquam nisi cursus vitae. Suspendisse sit amet dui egestas, volutpat nisi vel, mattis justo. Nullam pellentesque, ipsum eget blandit pharetra, augue elit aliquam mauris, vel mollis nisl augue ut ipsum.</div>
45
- <h2>Lists</h2>
46
- <ol><li>Vestibulum&nbsp;<ol><li>ante ipsum primis&nbsp;</li></ol></li><li>in faucibus orci luctus&nbsp;<ol><li>et ultrices posuere cubilia Curae;&nbsp;<ol><li>Aliquam vel dolor&nbsp;</li><li>sed sem maximus&nbsp;</li></ol></li><li>fermentum in non odio.&nbsp;<ol><li>Fusce hendrerit ornare mollis.&nbsp;</li></ol></li><li>Nunc scelerisque nibh nec turpis tempor pulvinar.&nbsp;</li></ol></li><li>Donec eros turpis,&nbsp;</li><li>aliquet vel volutpat sit amet,&nbsp;<ol><li>semper eu purus.&nbsp;</li><li>Proin ac erat nec urna efficitur vulputate.&nbsp;<ol><li>Quisque varius convallis ultricies.&nbsp;</li><li>Nullam vel fermentum eros.&nbsp;</li></ol></li></ol></li></ol><div>Pellentesque nulla leo, auctor ornare erat sed, rhoncus congue diam. Duis non porttitor nulla, ut eleifend enim. Pellentesque non tempor sem.</div><div>Mauris auctor egestas arcu,&nbsp;</div><ol><li>id venenatis nibh dignissim id.&nbsp;</li><li>In non placerat metus.&nbsp;</li></ol><ul><li>Nunc sed consequat metus.&nbsp;</li><li>Nulla consectetur lorem consequat,&nbsp;</li><li>malesuada dui at, lacinia lectus.&nbsp;</li></ul><ol><li>Aliquam efficitur&nbsp;</li><li>lorem a mauris feugiat,&nbsp;</li><li>at semper eros pellentesque.&nbsp;</li></ol><div>Nunc lacus diam, consectetur ut odio sit amet, placerat pharetra erat. Sed commodo ut sem id congue. Sed eget neque elit. Curabitur at erat tortor. Maecenas eget sapien vitae est sagittis accumsan et nec orci. Integer luctus at nisl eget venenatis. Nunc nunc eros, consectetur at tortor et, tristique ultrices elit. Nulla in turpis nibh.</div><ul><li>Nam consectetur&nbsp;<ul><li>venenatis tempor.&nbsp;</li></ul></li><li>Aenean&nbsp;<ul><li>blandit<ul><li>porttitor massa,&nbsp;<ul><li>non efficitur&nbsp;<ul><li>metus.&nbsp;</li></ul></li></ul></li></ul></li></ul></li><li>Duis faucibus nunc nec venenatis faucibus.&nbsp;</li><li>Aliquam erat volutpat.&nbsp;</li></ul><div><strong>Quisque non neque ut lacus eleifend volutpat quis sed lacus.<br />Praesent ultrices purus eu quam elementum, sit amet faucibus elit interdum. In lectus orci,<br /> elementum quis dictum ac, porta ac ante. Fusce tempus ac mauris id cursus. Phasellus a erat nulla. <em>Mauris dolor orci</em>, malesuada auctor dignissim non, <u>posuere nec odio</u>. Etiam hendrerit justo nec diam ullamcorper, nec blandit elit sodales.</strong></div>
47
- HTML
43
+ html_str = snippet('html_test_content')
44
+ # combine all white space
45
+ html_str = html_str.gsub(/\s+/, ' ')
46
+ # clear any white space between block level tags and other content
47
+ html_str.gsub(%r{\s*<(/?(?:h\d|div|p|br|ul|ol|li).*?)>\s*}, '<\1>')
48
48
  end
49
49
  end
@@ -7,6 +7,7 @@ module MailMergeParser
7
7
  include DocumentXMLHelper
8
8
  def setup
9
9
  super
10
+ @env = Sablon::Environment.new(nil)
10
11
  @parser = Sablon::Parser::MailMerge.new
11
12
  end
12
13
 
@@ -35,7 +36,7 @@ module MailMergeParser
35
36
  end
36
37
 
37
38
  def test_replace
38
- field.replace(Sablon.content(:string, "Hello"))
39
+ field.replace(Sablon.content(:string, "Hello"), @env)
39
40
  xml = <<-xml.strip
40
41
  <w:p>
41
42
  <w:r w:rsidR=\"004B49F0\">
@@ -70,7 +71,7 @@ xml
70
71
  end
71
72
 
72
73
  def test_replace
73
- field.replace(Sablon.content(:string, "Hello"))
74
+ field.replace(Sablon.content(:string, "Hello"), @env)
74
75
  xml = <<-xml.strip
75
76
  <w:p>
76
77
 
@@ -59,7 +59,8 @@ class ProcessorDocumentTest < Sablon::TestCase
59
59
  end
60
60
 
61
61
  def test_context_can_contain_string_and_symbol_keys
62
- result = process(snippet("simple_fields"), {"first_name" => "Jack", last_name: "Davis"})
62
+ context = {"first_name" => "Jack", last_name: "Davis"}
63
+ result = process(snippet("simple_fields"), context)
63
64
  assert_equal "Jack Davis", text(result)
64
65
  end
65
66
 
@@ -439,8 +440,25 @@ class ProcessorDocumentTest < Sablon::TestCase
439
440
  assert_equal "Before After", text(result)
440
441
  end
441
442
 
443
+ def test_comment_block_and_comment_as_key
444
+ result = process(snippet("comment_block_and_comment_as_key"), {comment: 'Contents of comment key'})
445
+
446
+ assert_xml_equal <<-document, result
447
+ <w:r><w:t xml:space="preserve">Before </w:t></w:r>
448
+ <w:r><w:t xml:space="preserve">After </w:t></w:r>
449
+ <w:p>
450
+ <w:r w:rsidR="004B49F0">
451
+ <w:rPr><w:noProof/></w:rPr>
452
+ <w:t>Contents of comment key</w:t>
453
+ </w:r>
454
+ </w:p>
455
+ document
456
+ end
457
+
442
458
  private
459
+
443
460
  def process(document, context)
444
- @processor.process(wrap(document), context).to_xml
461
+ env = Sablon::Environment.new(nil, context)
462
+ @processor.process(wrap(document), env).to_xml
445
463
  end
446
464
  end
@@ -34,7 +34,7 @@ class SectionPropertiesTest < Sablon::TestCase
34
34
  </w:body>
35
35
  documentxml
36
36
  properties = Sablon::Processor::SectionProperties.from_document(xml)
37
- assert_equal nil, properties.start_page_number
37
+ assert_nil properties.start_page_number
38
38
  properties.start_page_number = "16"
39
39
  assert_equal "16", properties.start_page_number
40
40
  end
@@ -0,0 +1,9 @@
1
+ module HTMLSnippets
2
+ def snippet(name)
3
+ File.read(File.expand_path("#{name}.html", snippet_path))
4
+ end
5
+
6
+ def snippet_path
7
+ @snippet_path ||= File.expand_path("../../fixtures/html", __FILE__)
8
+ end
9
+ end
data/test/test_helper.rb CHANGED
@@ -13,6 +13,5 @@ require "sablon/test"
13
13
  class Sablon::TestCase < MiniTest::Test
14
14
  def teardown
15
15
  super
16
- Sablon::Numbering.instance.reset!
17
16
  end
18
17
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sablon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.21
4
+ version: 0.0.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yves Senn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-21 00:00:00.000000000 Z
11
+ date: 2017-12-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '1.1'
33
+ version: 1.1.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '1.1'
40
+ version: 1.1.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: '12.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: '12.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: minitest
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -113,9 +113,13 @@ files:
113
113
  - bin/rake
114
114
  - exe/sablon
115
115
  - lib/sablon.rb
116
+ - lib/sablon/configuration/configuration.rb
117
+ - lib/sablon/configuration/html_tag.rb
116
118
  - lib/sablon/content.rb
117
119
  - lib/sablon/context.rb
120
+ - lib/sablon/environment.rb
118
121
  - lib/sablon/html/ast.rb
122
+ - lib/sablon/html/ast_builder.rb
119
123
  - lib/sablon/html/converter.rb
120
124
  - lib/sablon/html/visitor.rb
121
125
  - lib/sablon/numbering.rb
@@ -144,14 +148,17 @@ files:
144
148
  - misc/step_6.png
145
149
  - misc/step_7.png
146
150
  - sablon.gemspec
151
+ - test/configuration_test.rb
147
152
  - test/content_test.rb
148
153
  - test/context_test.rb
154
+ - test/environment_test.rb
149
155
  - test/executable_test.rb
150
156
  - test/expression_test.rb
151
157
  - test/fixtures/conditionals_sample.docx
152
158
  - test/fixtures/conditionals_template.docx
153
159
  - test/fixtures/cv_sample.docx
154
160
  - test/fixtures/cv_template.docx
161
+ - test/fixtures/html/html_test_content.html
155
162
  - test/fixtures/html_sample.docx
156
163
  - test/fixtures/insertion_template.docx
157
164
  - test/fixtures/insertion_template_no_styles.docx
@@ -160,6 +167,7 @@ files:
160
167
  - test/fixtures/recipe_sample.docx
161
168
  - test/fixtures/recipe_template.docx
162
169
  - test/fixtures/xml/comment.xml
170
+ - test/fixtures/xml/comment_block_and_comment_as_key.xml
163
171
  - test/fixtures/xml/complex_field.xml
164
172
  - test/fixtures/xml/complex_field_inline_conditional.xml
165
173
  - test/fixtures/xml/conditional.xml
@@ -177,7 +185,10 @@ files:
177
185
  - test/fixtures/xml/table_multi_row_loop.xml
178
186
  - test/fixtures/xml/table_row_loop.xml
179
187
  - test/fixtures/xml/test_ignore_complex_field_spanning_multiple_paragraphs.xml
188
+ - test/html/ast_builder_test.rb
189
+ - test/html/ast_test.rb
180
190
  - test/html/converter_test.rb
191
+ - test/html/node_properties_test.rb
181
192
  - test/html_test.rb
182
193
  - test/mail_merge_parser_test.rb
183
194
  - test/processor/document_test.rb
@@ -185,6 +196,7 @@ files:
185
196
  - test/sandbox/.gitkeep
186
197
  - test/section_properties_test.rb
187
198
  - test/support/document_xml_helper.rb
199
+ - test/support/html_snippets.rb
188
200
  - test/support/xml_snippets.rb
189
201
  - test/test_helper.rb
190
202
  homepage: http://github.com/senny/sablon
@@ -210,16 +222,19 @@ rubyforge_project:
210
222
  rubygems_version: 2.6.11
211
223
  signing_key:
212
224
  specification_version: 4
213
- summary: docx tempalte processor
225
+ summary: docx template processor
214
226
  test_files:
227
+ - test/configuration_test.rb
215
228
  - test/content_test.rb
216
229
  - test/context_test.rb
230
+ - test/environment_test.rb
217
231
  - test/executable_test.rb
218
232
  - test/expression_test.rb
219
233
  - test/fixtures/conditionals_sample.docx
220
234
  - test/fixtures/conditionals_template.docx
221
235
  - test/fixtures/cv_sample.docx
222
236
  - test/fixtures/cv_template.docx
237
+ - test/fixtures/html/html_test_content.html
223
238
  - test/fixtures/html_sample.docx
224
239
  - test/fixtures/insertion_template.docx
225
240
  - test/fixtures/insertion_template_no_styles.docx
@@ -228,6 +243,7 @@ test_files:
228
243
  - test/fixtures/recipe_sample.docx
229
244
  - test/fixtures/recipe_template.docx
230
245
  - test/fixtures/xml/comment.xml
246
+ - test/fixtures/xml/comment_block_and_comment_as_key.xml
231
247
  - test/fixtures/xml/complex_field.xml
232
248
  - test/fixtures/xml/complex_field_inline_conditional.xml
233
249
  - test/fixtures/xml/conditional.xml
@@ -245,7 +261,10 @@ test_files:
245
261
  - test/fixtures/xml/table_multi_row_loop.xml
246
262
  - test/fixtures/xml/table_row_loop.xml
247
263
  - test/fixtures/xml/test_ignore_complex_field_spanning_multiple_paragraphs.xml
264
+ - test/html/ast_builder_test.rb
265
+ - test/html/ast_test.rb
248
266
  - test/html/converter_test.rb
267
+ - test/html/node_properties_test.rb
249
268
  - test/html_test.rb
250
269
  - test/mail_merge_parser_test.rb
251
270
  - test/processor/document_test.rb
@@ -253,5 +272,6 @@ test_files:
253
272
  - test/sandbox/.gitkeep
254
273
  - test/section_properties_test.rb
255
274
  - test/support/document_xml_helper.rb
275
+ - test/support/html_snippets.rb
256
276
  - test/support/xml_snippets.rb
257
277
  - test/test_helper.rb