lm_docstache 2.1.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65f3c502d4e4982f2361991d6b43b4d22460ab4e25d9db7fd60eb6b9f14d4a1f
4
- data.tar.gz: 779810f481adebb853e62ea708df571ab355fb96cc9fde3c83d86ff7ad214714
3
+ metadata.gz: 6065b961f3d05db1773c70c088a67909755b633a3f412eec7f73cc76992a6a19
4
+ data.tar.gz: 808ce002e3bd777efc705851f610a1a26df183e81784e51cb28915a375f7f4cd
5
5
  SHA512:
6
- metadata.gz: 44994ae953e0a0b42acfc1ef0a6ac8722c17be1582c227ecdac3c6cd572ae91031e85e71671628bc3eacc0981904968c15f079824b42b4f95bddefd2b417939e
7
- data.tar.gz: f94f9e419671854f22031c232a7df41f8c52e1e95cb1db57e94aa5ab1f1229e387aee42a407fcadef7b09a78a114d1d2e6d642a8db0c68c1ff977b0757db9d04
6
+ metadata.gz: 41a377be982d11259c4a6a7f362d01e23a800e23203d3114a81b064ee158527a40f2a9a0ad6883923583c661c7e7d712945e894f68ba1e72afd0299b1bc10ed8
7
+ data.tar.gz: b8a49a51ab46335fac6c862f1a26b2a23f557d6e007a741cf7f3093891a8e1d696514b55597eee08c3734d2117fe98dd76030827f9a4c02a9af04cb7818dea76
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.1.1
4
+
5
+ ### Improvements
6
+
7
+ * Hidden custom tags now follow your document background color. If there is no background defined
8
+ we assume white font color.
9
+
3
10
  ## 2.1.0
4
11
 
5
12
  #### Improvements
@@ -1,7 +1,5 @@
1
1
  module LMDocstache
2
2
  class HideCustomTags
3
- HIDDEN_FONT_COLOR = 'FFFFFF'
4
-
5
3
  attr_reader :document, :hide_custom_tags
6
4
 
7
5
  # The +hide_custom_tags+ options is an +Array+ of +Regexp+ or +String+ representing
@@ -9,14 +7,14 @@ module LMDocstache
9
7
  #
10
8
  # You have to remember is not acceptable to have capture groups in your +Regexp's+.
11
9
  # We don't accept because we need to find all parts of your text, split it in multiple runs
12
- # and add a white font color to matching custom tags.
10
+ # and add document background color or white font color to matching custom tags.
13
11
  def initialize(document:, hide_custom_tags: [])
14
12
  @document = document
15
13
  @hide_custom_tags = hide_custom_tags
16
14
  end
17
15
 
18
16
  # Find all run nodes matching hide custom tags +Regexp's+ options you defined, split it
19
- # in multiple runs and replace font color to white in the matching tag run node.
17
+ # in multiple runs and replace font color to document background color or white in the matching tag run node.
20
18
  def hide_custom_tags!
21
19
  hide_custom_tags.each do |full_pattern|
22
20
  paragraphs = document.css('w|p')
@@ -47,6 +45,11 @@ module LMDocstache
47
45
  end
48
46
 
49
47
  private
48
+
49
+ def font_color
50
+ @font_color ||= document.at_css('w|background')&.attr('w:color') || 'FFFFFF'
51
+ end
52
+
50
53
  def split_tag_content(text, full_pattern)
51
54
  content_list = text.split(full_pattern)
52
55
  content_list = content_list.empty? ? [''] : content_list
@@ -59,9 +62,9 @@ module LMDocstache
59
62
  if style
60
63
  w_color = style.at_css('w|color')
61
64
  w_color.unlink if w_color
62
- style << "<w:color w:val=\"#{HIDDEN_FONT_COLOR}\"/>"
65
+ style << "<w:color w:val=\"#{font_color}\"/>"
63
66
  else
64
- run_node << "<w:rPr><w:color w:val=\"#{HIDDEN_FONT_COLOR}\"/></w:rPr>"
67
+ run_node << "<w:rPr><w:color w:val=\"#{font_color}\"/></w:rPr>"
65
68
  end
66
69
  end
67
70
 
@@ -39,7 +39,7 @@ module LMDocstache
39
39
  #
40
40
  # You have to remember is not acceptable to have capture groups in your +Regexp's+.
41
41
  # We don't accept because we need to find all parts of your text, split it in multiple runs
42
- # and add a white font color to matching custom tags.
42
+ # and add document background color or white font color to matching custom tags.
43
43
  def initialize(document, data, options = {})
44
44
  @document = document
45
45
  @data = data.transform_keys(&:to_s)
@@ -1,3 +1,3 @@
1
1
  module LMDocstache
2
- VERSION = "2.1.0"
2
+ VERSION = "2.1.1"
3
3
  end
@@ -5,6 +5,7 @@ describe LMDocstache::HideCustomTags do
5
5
  context '#example' do
6
6
  let(:output_dir) { "#{base_path}/tmp/" }
7
7
  let(:output_file) { File.new("#{output_dir}/BlankTestOutput.docx", 'w') }
8
+
8
9
  before do
9
10
  FileUtils.rm_rf(output_dir) if File.exist?(output_dir)
10
11
  Dir.mkdir(output_dir)
@@ -15,20 +16,38 @@ describe LMDocstache::HideCustomTags do
15
16
  end
16
17
 
17
18
  let(:base_path) { SPEC_BASE_PATH.join('example_input') }
18
- let(:input_file) { "#{base_path}/sample-signature.docx" }
19
-
20
19
  let(:document) { LMDocstache::Document.new(input_file).instance_variable_get(:@document) }
21
20
  let(:regexp_tag) { /{{(?:sig|sigfirm|date|check|text|initial)\|(?:req|noreq)\|.+?}}/ }
22
21
  let(:hide_custom_tags) {
23
22
  LMDocstache::HideCustomTags.new(document: document, hide_custom_tags: [ regexp_tag ])
24
23
  }
25
- it 'expect to have a white background on all hide custom tags matching' do
26
- hide_custom_tags.hide_custom_tags!
27
- d = hide_custom_tags.document
28
- run_nodes = d.css('w|p w|r')
29
- while run_node = run_nodes.shift
30
- if run_node.text =~ regexp_tag
31
- expect(run_node.at_css('w|rPr w|color').first[1]).to eq(LMDocstache::HideCustomTags::HIDDEN_FONT_COLOR)
24
+
25
+ context "giving a document with blue background" do
26
+ let(:input_file) { "#{base_path}/sample-signature-blue.docx" }
27
+
28
+ it 'expect to have a blue color on all hide custom tags matching' do
29
+ hide_custom_tags.hide_custom_tags!
30
+ d = hide_custom_tags.document
31
+ run_nodes = d.css('w|p w|r')
32
+ while run_node = run_nodes.shift
33
+ if run_node.text =~ regexp_tag
34
+ expect(run_node.at_css('w|rPr w|color').first[1]).to eq('4472C4')
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ context 'giving a document with white background' do
41
+ let(:input_file) { "#{base_path}/sample-signature.docx" }
42
+
43
+ it 'expect to have a white color on all hide custom tags matching' do
44
+ hide_custom_tags.hide_custom_tags!
45
+ d = hide_custom_tags.document
46
+ run_nodes = d.css('w|p w|r')
47
+ while run_node = run_nodes.shift
48
+ if run_node.text =~ regexp_tag
49
+ expect(run_node.at_css('w|rPr w|color').first[1]).to eq('FFFFFF')
50
+ end
32
51
  end
33
52
  end
34
53
  end
@@ -35,15 +35,18 @@ end
35
35
  describe 'integration test', integration: true do
36
36
  let(:base_path) { SPEC_BASE_PATH.join('example_input') }
37
37
  let(:output_dir) { "#{base_path}/tmp" }
38
+
38
39
  context 'should process that incoming docx' do
39
40
  let(:data) { LMDocstache::TestData::DATA }
40
41
  let(:input_file) { "#{base_path}/ExampleTemplate.docx" }
41
42
  let(:output_file) { "#{output_dir}/IntegrationTestOutput.docx" }
42
43
  let(:document) { LMDocstache::Document.new(input_file) }
44
+
43
45
  before do
44
46
  FileUtils.rm_rf(output_dir) if File.exist?(output_dir)
45
47
  Dir.mkdir(output_dir)
46
48
  end
49
+
47
50
  it 'loads the input file' do
48
51
  expect(document).to_not be_nil
49
52
  end
@@ -89,19 +92,43 @@ describe 'integration test', integration: true do
89
92
  Dir.mkdir(output_dir)
90
93
  end
91
94
 
92
- let(:input_file) { "#{base_path}/sample-signature.docx" }
93
95
  let(:render_options) {
94
96
  {
95
- hide_custom_tags: ['(?:sig|sigfirm|date|check|text|initial)\|(?:req|noreq)\\|.+?']
97
+ hide_custom_tags: ['(?:sig|sigfirm|date|check|text|initial)\|(?:req|noreq)\|.+?']
96
98
  }
97
99
  }
98
100
  let(:document) { LMDocstache::Document.new(input_file) }
99
- it 'should have content replacement aligned with hide custom tags' do
100
- doc = document
101
- doc.fix_errors
102
- noko = doc.render_xml({}, render_options)
103
- output = noko['word/document.xml'].to_xml
104
- expect(output).to include('<w:r>
101
+
102
+ context "witth document with blue background" do
103
+ let(:input_file) { "#{base_path}/sample-signature-blue.docx" }
104
+
105
+ it 'should have content replacement aligned with hide custom tags' do
106
+ doc = document
107
+ doc.fix_errors
108
+ noko = doc.render_xml({}, render_options)
109
+ output = noko['word/document.xml'].to_xml
110
+ expect(output).to include('<w:r>
111
+ <w:rPr>
112
+ <w:rFonts w:cstheme="minorHAnsi"/>
113
+ <w:lang w:val="en-US"/>
114
+ <w:color w:val="4472C4"/>
115
+ </w:rPr>
116
+ <w:t xml:space="preserve">{{sig|req|client}}</w:t>
117
+ </w:r>')
118
+ expect(output).to include('<w:t xml:space="preserve">Test Multiple text in the same line </w:t>')
119
+ end
120
+ end
121
+
122
+ context "with document without backgorund" do
123
+ let(:input_file) { "#{base_path}/sample-signature.docx" }
124
+ let(:document) { LMDocstache::Document.new(input_file) }
125
+
126
+ it 'should have content replacement aligned with hide custom tags' do
127
+ doc = document
128
+ doc.fix_errors
129
+ noko = doc.render_xml({}, render_options)
130
+ output = noko['word/document.xml'].to_xml
131
+ expect(output).to include('<w:r>
105
132
  <w:rPr>
106
133
  <w:rFonts w:cstheme="minorHAnsi"/>
107
134
  <w:lang w:val="en-US"/>
@@ -109,7 +136,8 @@ describe 'integration test', integration: true do
109
136
  </w:rPr>
110
137
  <w:t xml:space="preserve">{{sig|req|client}}</w:t>
111
138
  </w:r>')
112
- expect(output).to include('<w:t xml:space="preserve">Test Multiple text in the same line </w:t>')
139
+ expect(output).to include('<w:t xml:space="preserve">Test Multiple text in the same line </w:t>')
140
+ end
113
141
  end
114
142
  end
115
143
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lm_docstache
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roey Chasman
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2021-03-17 00:00:00.000000000 Z
15
+ date: 2021-03-18 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: nokogiri
@@ -121,6 +121,7 @@ files:
121
121
  - spec/conditional_block_spec.rb
122
122
  - spec/example_input/ExampleTemplate.docx
123
123
  - spec/example_input/blank.docx
124
+ - spec/example_input/sample-signature-blue.docx
124
125
  - spec/example_input/sample-signature.docx
125
126
  - spec/hide_custom_tags_spec.rb
126
127
  - spec/integration_spec.rb
@@ -153,6 +154,7 @@ test_files:
153
154
  - spec/conditional_block_spec.rb
154
155
  - spec/example_input/ExampleTemplate.docx
155
156
  - spec/example_input/blank.docx
157
+ - spec/example_input/sample-signature-blue.docx
156
158
  - spec/example_input/sample-signature.docx
157
159
  - spec/hide_custom_tags_spec.rb
158
160
  - spec/integration_spec.rb