sablon 0.0.22 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +94 -22
- data/lib/sablon.rb +1 -0
- data/lib/sablon/configuration/configuration.rb +73 -1
- data/lib/sablon/content.rb +77 -3
- data/lib/sablon/environment.rb +3 -0
- data/lib/sablon/html/ast.rb +249 -76
- data/lib/sablon/html/ast_builder.rb +2 -7
- data/lib/sablon/html/node_properties.rb +91 -0
- data/lib/sablon/relationship.rb +47 -0
- data/lib/sablon/template.rb +30 -0
- data/lib/sablon/version.rb +1 -1
- data/test/content_test.rb +121 -42
- data/test/fixtures/html/html_test_content.html +106 -15
- data/test/fixtures/html_sample.docx +0 -0
- data/test/fixtures/insertion_template.docx +0 -0
- data/test/html/ast_builder_test.rb +0 -5
- data/test/html/ast_test.rb +35 -0
- data/test/html/converter_style_test.rb +535 -0
- data/test/html/converter_test.rb +412 -528
- data/test/html/node_properties_test.rb +21 -0
- data/test/html_test.rb +12 -3
- data/test/test_helper.rb +16 -0
- metadata +7 -3
@@ -104,6 +104,27 @@ class NodePropertiesTest < Sablon::TestCase
|
|
104
104
|
assert_equal props.to_docx, '<w:pPr><w:pStyle w:val="Paragraph" /></w:pPr>'
|
105
105
|
end
|
106
106
|
|
107
|
+
def test_node_properties_table_factory
|
108
|
+
props = { 'tblStyle' => 'Classic' }
|
109
|
+
props = Sablon::HTMLConverter::NodeProperties.table(props)
|
110
|
+
assert_equal 'tblStyle=Classic', props.inspect
|
111
|
+
assert_equal props.to_docx, '<w:tblPr><w:tblStyle w:val="Classic" /></w:tblPr>'
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_node_properties_table_row_factory
|
115
|
+
props = { 'jc' => 'left' }
|
116
|
+
props = Sablon::HTMLConverter::NodeProperties.table_row(props)
|
117
|
+
assert_equal 'jc=left', props.inspect
|
118
|
+
assert_equal props.to_docx, '<w:trPr><w:jc w:val="left" /></w:trPr>'
|
119
|
+
end
|
120
|
+
|
121
|
+
def test_node_properties_table_cell_factory
|
122
|
+
props = { 'tcFitText' => 'true' }
|
123
|
+
props = Sablon::HTMLConverter::NodeProperties.table_cell(props)
|
124
|
+
assert_equal 'tcFitText=true', props.inspect
|
125
|
+
assert_equal props.to_docx, '<w:tcPr><w:tcFitText w:val="true" /></w:tcPr>'
|
126
|
+
end
|
127
|
+
|
107
128
|
def test_node_properties_run_factory
|
108
129
|
props = { 'color' => 'FF00FF' }
|
109
130
|
props = Sablon::HTMLConverter::NodeProperties.run(props)
|
data/test/html_test.rb
CHANGED
@@ -14,12 +14,21 @@ class SablonHTMLTest < Sablon::TestCase
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def test_generate_document_from_template_with_styles_and_html
|
17
|
+
uid_generator = UIDTestGenerator.new
|
17
18
|
template_path = @base_path + "fixtures/insertion_template.docx"
|
18
19
|
output_path = @base_path + "sandbox/html.docx"
|
19
20
|
template = Sablon.template template_path
|
20
|
-
context = {
|
21
|
-
|
22
|
-
|
21
|
+
context = {
|
22
|
+
'html:content' => content,
|
23
|
+
inline_content: {
|
24
|
+
'html:should' => '<b><span style="color: #123456">should</span></b>',
|
25
|
+
'html:github' => '<a href="http://www.github.com" style="color: #0000FF">GitHub</a>'
|
26
|
+
}
|
27
|
+
}
|
28
|
+
SecureRandom.stub(:uuid, uid_generator.method(:new_uid)) do
|
29
|
+
template.render_to_file output_path, context
|
30
|
+
end
|
31
|
+
#
|
23
32
|
assert_docx_equal @sample_path, output_path
|
24
33
|
end
|
25
34
|
|
data/test/test_helper.rb
CHANGED
@@ -14,4 +14,20 @@ class Sablon::TestCase < MiniTest::Test
|
|
14
14
|
def teardown
|
15
15
|
super
|
16
16
|
end
|
17
|
+
|
18
|
+
class UIDTestGenerator
|
19
|
+
def initialize
|
20
|
+
@current_id = 1234
|
21
|
+
@current_id_start = @current_id
|
22
|
+
end
|
23
|
+
|
24
|
+
def new_uid
|
25
|
+
@current_id += 1
|
26
|
+
@current_id.to_s
|
27
|
+
end
|
28
|
+
|
29
|
+
def reset
|
30
|
+
@current_id = @current_id_start
|
31
|
+
end
|
32
|
+
end
|
17
33
|
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
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yves Senn
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -121,6 +121,7 @@ files:
|
|
121
121
|
- lib/sablon/html/ast.rb
|
122
122
|
- lib/sablon/html/ast_builder.rb
|
123
123
|
- lib/sablon/html/converter.rb
|
124
|
+
- lib/sablon/html/node_properties.rb
|
124
125
|
- lib/sablon/html/visitor.rb
|
125
126
|
- lib/sablon/numbering.rb
|
126
127
|
- lib/sablon/operations.rb
|
@@ -128,6 +129,7 @@ files:
|
|
128
129
|
- lib/sablon/processor/document.rb
|
129
130
|
- lib/sablon/processor/numbering.rb
|
130
131
|
- lib/sablon/processor/section_properties.rb
|
132
|
+
- lib/sablon/relationship.rb
|
131
133
|
- lib/sablon/template.rb
|
132
134
|
- lib/sablon/test.rb
|
133
135
|
- lib/sablon/test/assertions.rb
|
@@ -187,6 +189,7 @@ files:
|
|
187
189
|
- test/fixtures/xml/test_ignore_complex_field_spanning_multiple_paragraphs.xml
|
188
190
|
- test/html/ast_builder_test.rb
|
189
191
|
- test/html/ast_test.rb
|
192
|
+
- test/html/converter_style_test.rb
|
190
193
|
- test/html/converter_test.rb
|
191
194
|
- test/html/node_properties_test.rb
|
192
195
|
- test/html_test.rb
|
@@ -219,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
219
222
|
version: '0'
|
220
223
|
requirements: []
|
221
224
|
rubyforge_project:
|
222
|
-
rubygems_version: 2.
|
225
|
+
rubygems_version: 2.5.1
|
223
226
|
signing_key:
|
224
227
|
specification_version: 4
|
225
228
|
summary: docx template processor
|
@@ -263,6 +266,7 @@ test_files:
|
|
263
266
|
- test/fixtures/xml/test_ignore_complex_field_spanning_multiple_paragraphs.xml
|
264
267
|
- test/html/ast_builder_test.rb
|
265
268
|
- test/html/ast_test.rb
|
269
|
+
- test/html/converter_style_test.rb
|
266
270
|
- test/html/converter_test.rb
|
267
271
|
- test/html/node_properties_test.rb
|
268
272
|
- test/html_test.rb
|