lm_docstache 1.2.4 → 1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c127a60845dc1c0d7d532fb71bbd4707fb9e7c57dd7471308fa01715d409f56f
4
- data.tar.gz: 35a7e1c75e45bf01615912a7aaf8ac5552a79a4dd7a1f03249f08eae8878a96a
3
+ metadata.gz: 7ae5d34672eaa5bce54718805fd2984f6a016b258f0376f3aa6707bb7c04d701
4
+ data.tar.gz: d9aacd28e9f78e7b194e6fd32fa9948d997b171427f8e425f376214eda044602
5
5
  SHA512:
6
- metadata.gz: f703252194067f0478974ed8823cbdb68a3cfd4fcf853c038e9f183b5e2865ce6775f521ec8977ecc53db4ae79ecfdbf753f5248725bdd7dc353473bd6914ae6
7
- data.tar.gz: 3386aacc5a80637145a24dfc13fa2fcefe9c0114701f911554e0e2bf53f5f3aaedee8669c54792f63d069e658d9c74786f89c1dfa063c7f668a74dfcf8c1ad0e
6
+ metadata.gz: ea353f13320611862bb5081806a05320b99d76fb1ae4cdc5693af1d75c9419d997458b0319142825fc76f302c19613aafc7e232cd506b9ba1134570317db7b5f
7
+ data.tar.gz: fbbb70c2866c3c344efeb5c99ff748d7b53c51796512c0e485718523f1894aa7dff40a03f5a4fc3b4c9f3cff1f87ec082b3f3d1ad2159acb43d3b907d14441c7
@@ -1,4 +1,7 @@
1
1
  # Changelog
2
+ ## 1.3.0
3
+ * Add support for e-signature tags
4
+
2
5
  ## 1.2.4
3
6
  * Add support for pipe character in merge tags so we can use as a modifier for the context of merge tag.
4
7
 
@@ -15,6 +15,36 @@ module LMDocstache
15
15
  find_documents_to_interpolate
16
16
  end
17
17
 
18
+ def signature_tags
19
+ @documents.values.flat_map do |document|
20
+ document.text.strip.scan(/\[\[sig_.+?\]\]/)
21
+ end
22
+ end
23
+
24
+ def usable_signature_tags
25
+ @documents.values.flat_map do |document|
26
+ document.css('w|t')
27
+ .select { |tag| tag.text =~ /\[\[sig_.+?\]\]/ }
28
+ .flat_map { |tag| tag.text.scan(/\[\[sig_.+?\]\]/) }
29
+ end
30
+ end
31
+
32
+ def usable_signature_tag_names
33
+ self.usable_signature_tags.map do |tag|
34
+ tag.scan(/\[\[sig_(.+?)\]\]/)
35
+ $1
36
+ end.compact.uniq
37
+ end
38
+
39
+ def unusable_signature_tags
40
+ unusable_signature_tags = signature_tags
41
+ unusable_signature_tags.each do |usable_tag|
42
+ index = unusable_signature_tags.index(usable_tag)
43
+ unusable_signature_tags.delete_at(index) if index
44
+ end
45
+ return unusable_signature_tags
46
+ end
47
+
18
48
  def tags
19
49
  @documents.values.flat_map do |document|
20
50
  document.text.strip.scan(/\{\{.+?\}\}/)
@@ -58,10 +88,10 @@ module LMDocstache
58
88
  File.open(path, "w") { |f| f.write buffer.string }
59
89
  end
60
90
 
61
- def render_file(output, data={})
91
+ def render_file(output, data={}, remove_signature_tags = false)
62
92
  rendered_documents = Hash[
63
93
  @documents.map do |(path, document)|
64
- [path, LMDocstache::Renderer.new(document.dup, data).render]
94
+ [path, LMDocstache::Renderer.new(document.dup, data, remove_signature_tags).render]
65
95
  end
66
96
  ]
67
97
  buffer = zip_buffer(rendered_documents)
@@ -2,14 +2,16 @@ module LMDocstache
2
2
  class Renderer
3
3
  BLOCK_REGEX = /\{\{([\#\^])([\w\.]+)(?:(\s(?:==|~=)\s?.+?))?\}\}.+?\{\{\/\k<2>\}\}/m
4
4
 
5
- def initialize(xml, data)
5
+ def initialize(xml, data, remove_signature_tags = false)
6
6
  @content = xml
7
7
  @data = DataScope.new(data)
8
+ @remove_signature_tags = remove_signature_tags
8
9
  end
9
10
 
10
11
  def render
11
12
  find_and_expand_blocks
12
13
  replace_tags(@content, @data)
14
+ remove_signature_tags(@content) if @remove_signature_tags
13
15
  return @content
14
16
  end
15
17
 
@@ -117,6 +119,20 @@ module LMDocstache
117
119
  return elements
118
120
  end
119
121
 
122
+ def remove_signature_tags(elements)
123
+ elements.css('w|t').each do |text_el|
124
+ if !(results = text_el.text.scan(/\[\[sig_(.+?)\]\]/).flatten).empty?
125
+ rendered_string = text_el.text
126
+ results.each do |r|
127
+ padding = "".ljust(r.length + 8, " ")
128
+ rendered_string.gsub!("[[sig_#{r}]]", padding)
129
+ end
130
+ text_el.content = rendered_string
131
+ end
132
+ end
133
+ return elements
134
+ end
135
+
120
136
  private
121
137
 
122
138
  def get_condition(name, condition, inverted = false)
@@ -1,3 +1,3 @@
1
1
  module LMDocstache
2
- VERSION = "1.2.4"
2
+ VERSION = "1.3.0"
3
3
  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: 1.2.4
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roey Chasman
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-08-17 00:00:00.000000000 Z
13
+ date: 2020-09-03 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri