lm_docstache 1.2.0 → 1.2.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: b345230c53f335f5de05dccdaca946bf30edaee21031c219dbdad1315c61c915
4
- data.tar.gz: 554faf30a6988614877f20d72d172d1a66c11bcb2a145f4eb4efd45f7a598fb0
3
+ metadata.gz: 47845e207f960356863df098a2631bc36d931322a7e40b6186d3d47370019691
4
+ data.tar.gz: 638c0ff557da45899078382405d497f425aa44e9ba3b7e1a0c65f04d75936b95
5
5
  SHA512:
6
- metadata.gz: 66732e83ef4cbd515c10904dd293a29346bb1278f1bcfa3ad7becc6e027798f8ca2ca1534f2a9ffc86ee1e4db2d632cd6c926fd703975f386524fd42ccd48516
7
- data.tar.gz: f3ff05f0d5e5b55e3c6eb3e070713b625f74544d667816a71a761d48521ffda12146ff72b3a1189b9a794b8a190a60ea7227a374c0c58711471fba1786de0ce4
6
+ metadata.gz: d6ba622f15f7c430cf806ee4cb93174e8daa9d3d5651106093f1e6e64bb429788747ef9a47b9dc0ee937da20ccaf4f9641514742b65445c463ce7cadea6fa36c
7
+ data.tar.gz: 9f9bc5d175c63671065accb0dbe7f2db5a127a6e159338f38f40c6fec967a4209ab28167616a320cd90d8692a42857a977634fcb221d8e4c22806ffbb8b5c626
@@ -0,0 +1,42 @@
1
+ name: Ruby Gem
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ build:
11
+ name: Build + Publish
12
+ runs-on: ubuntu-latest
13
+
14
+ steps:
15
+ - uses: actions/checkout@v2
16
+ - name: Set up Ruby 2.6
17
+ uses: actions/setup-ruby@v1
18
+ with:
19
+ ruby-version: 2.6.x
20
+
21
+ - name: Publish to GPR
22
+ run: |
23
+ mkdir -p $HOME/.gem
24
+ touch $HOME/.gem/credentials
25
+ chmod 0600 $HOME/.gem/credentials
26
+ printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
27
+ gem build *.gemspec
28
+ gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
29
+ env:
30
+ GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}"
31
+ OWNER: ${{ github.repository_owner }}
32
+
33
+ - name: Publish to RubyGems
34
+ run: |
35
+ mkdir -p $HOME/.gem
36
+ touch $HOME/.gem/credentials
37
+ chmod 0600 $HOME/.gem/credentials
38
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
39
+ gem build *.gemspec
40
+ gem push *.gem
41
+ env:
42
+ GEM_HOST_API_KEY: "Bearer ${{secrets.RUBYGEMS_AUTH_TOKEN}}"
@@ -0,0 +1,29 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: Ruby
9
+
10
+ on: push
11
+
12
+ jobs:
13
+ test:
14
+
15
+ runs-on: ubuntu-latest
16
+
17
+ steps:
18
+ - uses: actions/checkout@v2
19
+ - name: Set up Ruby
20
+ # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
21
+ # change this to (see https://github.com/ruby/setup-ruby#versioning):
22
+ # uses: ruby/setup-ruby@v1
23
+ uses: ruby/setup-ruby@ec106b438a1ff6ff109590de34ddc62c540232e0
24
+ with:
25
+ ruby-version: 2.6
26
+ - name: Install dependencies
27
+ run: bundle install
28
+ - name: Run tests
29
+ run: rspec
@@ -1,5 +1,8 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.2.1
4
+ * Fix inline conditional issues such as no support for multi conditionals.
5
+
3
6
  ## 1.2.0
4
7
  * Add support for inline conditionals.
5
8
  * Add some tests.
@@ -2,17 +2,28 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  lm_docstache (1.2.0)
5
+ activesupport (= 6.0.3.2)
5
6
  nokogiri (~> 1.6)
6
7
  rubyzip (~> 1.1)
7
8
 
8
9
  GEM
9
10
  remote: https://rubygems.org/
10
11
  specs:
12
+ activesupport (6.0.3.2)
13
+ concurrent-ruby (~> 1.0, >= 1.0.2)
14
+ i18n (>= 0.7, < 2)
15
+ minitest (~> 5.1)
16
+ tzinfo (~> 1.1)
17
+ zeitwerk (~> 2.2, >= 2.2.2)
11
18
  byebug (11.1.3)
12
19
  coderay (1.1.3)
20
+ concurrent-ruby (1.1.6)
13
21
  diff-lcs (1.4.4)
22
+ i18n (1.8.3)
23
+ concurrent-ruby (~> 1.0)
14
24
  method_source (1.0.0)
15
25
  mini_portile2 (2.4.0)
26
+ minitest (5.14.1)
16
27
  nokogiri (1.10.10)
17
28
  mini_portile2 (~> 2.4.0)
18
29
  pry (0.13.1)
@@ -35,6 +46,10 @@ GEM
35
46
  rspec-support (~> 3.9.0)
36
47
  rspec-support (3.9.3)
37
48
  rubyzip (1.3.0)
49
+ thread_safe (0.3.6)
50
+ tzinfo (1.2.7)
51
+ thread_safe (~> 0.1)
52
+ zeitwerk (2.4.0)
38
53
 
39
54
  PLATFORMS
40
55
  ruby
@@ -45,7 +45,7 @@ module LMDocstache
45
45
  if match.elements.any?
46
46
  find_all(name: name, data: data, elements: match.elements, inverted: inverted, condition: condition, child: true)
47
47
  else
48
- extract_block_from_element(name: name, data: data, element: match, inverted: inverted, condition: condition)
48
+ extract_block_from_element(name, data, match, inverted, condition)
49
49
  end
50
50
  end
51
51
  else
@@ -64,7 +64,7 @@ module LMDocstache
64
64
  end
65
65
  end
66
66
 
67
- def self.extract_block_from_element(name: name, data: data, element: element, inverted: inverted, condition: condition)
67
+ def self.extract_block_from_element(name, data, element, inverted, condition)
68
68
  return Block.new(name: name, data: data, opening_element: element.parent.previous, content_elements: [element.parent], closing_element: element.parent.next, inverted: inverted, condition: condition, inline: true)
69
69
  end
70
70
  end
@@ -43,7 +43,7 @@ module LMDocstache
43
43
  def expand_and_replace_block(block)
44
44
  case block.type
45
45
  when :conditional
46
- condition = get_condition(block)
46
+ condition = get_condition(block.name, block.condition, block.inverted)
47
47
  unless condition
48
48
  block.content_elements.each(&:unlink)
49
49
  end
@@ -69,13 +69,13 @@ module LMDocstache
69
69
  end
70
70
 
71
71
  def replace_conditionals(block)
72
- condition = get_condition(block)
73
-
74
72
  @content.css('w|t').each do |text_el|
75
73
  rendered_string = text_el.text
76
74
 
77
75
  if !(results = rendered_string.scan(/{{#(.*?)}}(.*?){{\/(.*?)}}/)).empty?
78
76
  results.each do |r|
77
+ vals = r[0].split('==')
78
+ condition = get_condition(vals[0].strip, "== #{vals[1]}")
79
79
  if condition
80
80
  rendered_string.sub!("{{##{r[0]}}}", "")
81
81
  rendered_string.sub!("{{/#{r[2]}}}", "")
@@ -86,10 +86,12 @@ module LMDocstache
86
86
  end
87
87
 
88
88
  # the only difference in this code block is caret instead of pound in three places,
89
- # and the condition being inverted. maybe combine them?
89
+ # the inverted value passed to get_condition, and the condition being inverted. maybe combine them?
90
90
  if !(results = rendered_string.scan(/{{\^(.*?)}}(.*?){{\/(.*?)}}/)).empty?
91
91
  results.each do |r|
92
- if !condition
92
+ vals = r[0].split('==')
93
+ condition = get_condition(vals[0].strip, "== #{vals[1]}", true)
94
+ if condition
93
95
  rendered_string.sub!("{{^#{r[0]}}}", "")
94
96
  rendered_string.sub!("{{/#{r[2]}}}", "")
95
97
  else
@@ -117,14 +119,14 @@ module LMDocstache
117
119
 
118
120
  private
119
121
 
120
- def get_condition(block)
121
- case condition = @data.get(block.name, condition: block.condition)
122
+ def get_condition(name, condition, inverted = false)
123
+ case condition = @data.get(name, condition: condition)
122
124
  when Array
123
125
  condition = !condition.empty?
124
126
  else
125
127
  condition = !!condition
126
128
  end
127
- condition = !condition if block.inverted
129
+ condition = !condition if inverted
128
130
 
129
131
  condition
130
132
  end
@@ -1,3 +1,3 @@
1
1
  module LMDocstache
2
- VERSION = "1.2.0"
2
+ VERSION = "1.2.1"
3
3
  end
@@ -19,6 +19,7 @@ Gem::Specification.new do |s|
19
19
  # specify any dependencies here; for example:
20
20
  s.add_runtime_dependency 'nokogiri', '~> 1.6'
21
21
  s.add_runtime_dependency 'rubyzip', '~> 1.1'
22
+ s.add_runtime_dependency 'activesupport', '6.0.3.2'
22
23
 
23
24
  s.add_development_dependency 'rspec', '>= 3.1.0'
24
25
  s.add_development_dependency 'pry-byebug', '>= 1'
@@ -2,9 +2,10 @@ require 'spec_helper'
2
2
  require 'nokogiri'
3
3
 
4
4
  module LMDocstache
5
- module TestData
5
+ module BlockTestData
6
6
  DATA = {
7
7
  gender: 'Male',
8
+ num: '2',
8
9
  first_name: 'Hector',
9
10
  last_name: 'Jones'
10
11
  }
@@ -12,7 +13,7 @@ module LMDocstache
12
13
  end
13
14
 
14
15
  describe LMDocstache::Renderer do
15
- let(:data) { Marshal.load(Marshal.dump(LMDocstache::TestData::DATA)) } # deep copy
16
+ let(:data) { Marshal.load(Marshal.dump(LMDocstache::BlockTestData::DATA)) } # deep copy
16
17
  let(:base_path) { SPEC_BASE_PATH.join('example_input') }
17
18
  let(:blank_doc_path) { "#{base_path}/blank.docx" }
18
19
  let(:blank_doc) { LMDocstache::Document.new(blank_doc_path) }
@@ -64,6 +65,24 @@ describe LMDocstache::Renderer do
64
65
  expect(result_text).to eq(expected_text)
65
66
  end
66
67
 
68
+ it 'should handle multiple positive checks in one line' do
69
+ result_text = render_docx("Refer to the matter as {{#gender == 'Male'}}him{{/gender}}{{#gender == 'Female'}}her{{/gender}} please")
70
+ expected_text = "Refer to the matter as him please"
71
+ expect(result_text).to eq(expected_text)
72
+ end
73
+
74
+ it 'should handle multiple positive checks and multiple negative checks in one line' do
75
+ result_text = render_docx("be {{#num == 1}}1{{/num}}{{#num == 2}}2{{/num}} and {{^num == 2}}!2{{/num}}{{^num == 1}}!1{{/num}} please")
76
+ expected_text = "be 2 and !1 please"
77
+ expect(result_text).to eq(expected_text)
78
+ end
79
+
80
+ it 'should handle multiple types of conditionals in one line' do
81
+ result_text = render_docx("be{{#gender == Male}} he {{/gender}}{{#num == 1}}1{{/num}}{{#num == 2}}2{{/num}} and {{^num == 2}}!2{{/num}}{{^num == 1}}!1{{/num}} please")
82
+ expected_text = "be he 2 and !1 please"
83
+ expect(result_text).to eq(expected_text)
84
+ end
85
+
67
86
  it 'should handle multiline conditional tags' do
68
87
  text = [
69
88
  "Refer to the matter as",
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.0
4
+ version: 1.2.1
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-07-15 00:00:00.000000000 Z
13
+ date: 2020-07-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: nokogiri
@@ -40,6 +40,20 @@ dependencies:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
42
  version: '1.1'
43
+ - !ruby/object:Gem::Dependency
44
+ name: activesupport
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '='
48
+ - !ruby/object:Gem::Version
49
+ version: 6.0.3.2
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - '='
55
+ - !ruby/object:Gem::Version
56
+ version: 6.0.3.2
43
57
  - !ruby/object:Gem::Dependency
44
58
  name: rspec
45
59
  requirement: !ruby/object:Gem::Requirement
@@ -78,6 +92,8 @@ executables: []
78
92
  extensions: []
79
93
  extra_rdoc_files: []
80
94
  files:
95
+ - ".github/workflows/gem-push.yml"
96
+ - ".github/workflows/ruby.yml"
81
97
  - ".gitignore"
82
98
  - CHANGELOG.md
83
99
  - Gemfile