proforma-extended-evaluator 1.0.0 → 1.1.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 +4 -4
- data/.rubocop.yml +2 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +10 -1
- data/Guardfile +1 -1
- data/README.md +19 -14
- data/Rakefile +8 -0
- data/lib/proforma/extended_evaluator.rb +2 -0
- data/lib/proforma/extended_evaluator/resolver.rb +3 -39
- data/lib/proforma/extended_evaluator/version.rb +1 -1
- data/proforma-extended-evaluator.gemspec +3 -0
- data/spec/spec_helper.rb +12 -6
- metadata +45 -4
- data/spec/proforma/extended_evaluator/resolver_spec.rb +0 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '0766348b86e6e72ebfa8e2cdc687305197d7d43cef2a490383c31fadc89194d7'
|
4
|
+
data.tar.gz: e6eaa3c6a0409e215b07550c9a584d3e705a44dd51877ccb890ade25fb4c6bb0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5db01296ddeaf818e7323c765f49be7c632cdbfdf83b42231b6eaec82d44200f49e4f590be898943e05862a127cf6646ebba0d3ede76b71ee4c964e226eb6d90
|
7
|
+
data.tar.gz: 759bdaabe85547aa1047f4ff5218c0dcb5673f9867d3fd51bcf73afb0e5ad0f5a06ebcdea173205a9d2cb44a16d981183a18c78996f5ea7beafd4525b5ed279f
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
proforma-extended-evaluator (1.
|
4
|
+
proforma-extended-evaluator (1.1.0)
|
5
|
+
objectable (~> 1)
|
5
6
|
stringento (~> 2)
|
6
7
|
|
7
8
|
GEM
|
@@ -10,6 +11,7 @@ GEM
|
|
10
11
|
acts_as_hashable (1.0.5)
|
11
12
|
ansi (1.5.0)
|
12
13
|
ast (2.4.0)
|
14
|
+
byebug (11.0.1)
|
13
15
|
coderay (1.1.2)
|
14
16
|
diff-lcs (1.3)
|
15
17
|
docile (1.3.1)
|
@@ -42,6 +44,7 @@ GEM
|
|
42
44
|
notiffany (0.1.1)
|
43
45
|
nenv (~> 0.1)
|
44
46
|
shellany (~> 0.0)
|
47
|
+
objectable (1.0.0)
|
45
48
|
parallel (1.13.0)
|
46
49
|
parser (2.6.0.0)
|
47
50
|
ast (~> 2.4.0)
|
@@ -51,7 +54,11 @@ GEM
|
|
51
54
|
pry (0.12.2)
|
52
55
|
coderay (~> 1.1.0)
|
53
56
|
method_source (~> 0.9.0)
|
57
|
+
pry-byebug (3.7.0)
|
58
|
+
byebug (~> 11.0)
|
59
|
+
pry (~> 0.10)
|
54
60
|
rainbow (3.0.0)
|
61
|
+
rake (10.5.0)
|
55
62
|
rb-fsevent (0.10.3)
|
56
63
|
rb-inotify (0.9.10)
|
57
64
|
ffi (>= 0.5.0, < 2)
|
@@ -100,6 +107,8 @@ DEPENDENCIES
|
|
100
107
|
proforma (~> 1)
|
101
108
|
proforma-extended-evaluator!
|
102
109
|
pry (~> 0)
|
110
|
+
pry-byebug (~> 3)
|
111
|
+
rake (~> 10.0)
|
103
112
|
rspec (~> 3.8)
|
104
113
|
rubocop (~> 0.63.1)
|
105
114
|
simplecov (~> 0.16.1)
|
data/Guardfile
CHANGED
data/README.md
CHANGED
@@ -30,6 +30,12 @@ You can also add this to your Gemfile:
|
|
30
30
|
bundle add proforma-extended-evaluator
|
31
31
|
````
|
32
32
|
|
33
|
+
Note: If you are using bundler for auto-requiring then you need to specify as:
|
34
|
+
|
35
|
+
```
|
36
|
+
gem 'proforma-extended-evaluator', require: 'proforma/extended_evaluator'
|
37
|
+
```
|
38
|
+
|
33
39
|
## Examples
|
34
40
|
|
35
41
|
### Connecting to Proforma Rendering Pipeline
|
@@ -116,16 +122,18 @@ Notice how all strings are properly formatted as prescribed in the template.
|
|
116
122
|
|
117
123
|
Formatter options are biased towards USA localization. You can override any of the options of the Formatter class, here are the options and their defaults:
|
118
124
|
|
119
|
-
Option
|
120
|
-
|
121
|
-
currency_code
|
122
|
-
currency_round
|
123
|
-
currency_symbol
|
124
|
-
date_format
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
125
|
+
Option | Default
|
126
|
+
------------------- | -------
|
127
|
+
currency_code | 'USD'
|
128
|
+
currency_round | 2
|
129
|
+
currency_symbol | '$'
|
130
|
+
date_format | '%m/%d/%Y'
|
131
|
+
decimal_separator | '.'
|
132
|
+
mask_char | 'X'
|
133
|
+
false_value | 'No'
|
134
|
+
null_value | 'Unknown'
|
135
|
+
thousands_separator | ','
|
136
|
+
true_value | 'Yes'
|
129
137
|
|
130
138
|
## Contributing
|
131
139
|
|
@@ -170,10 +178,7 @@ After code changes have successfully gone through the Pull Request review proces
|
|
170
178
|
3. Install dependencies: `bundle`
|
171
179
|
4. Update `CHANGELOG.md` with release notes
|
172
180
|
5. Commit & push master to remote and ensure CI builds master successfully
|
173
|
-
6.
|
174
|
-
7. Publish package to RubyGems: `gem push proforma-extended-evaluator-X.gem` where X is the version to push
|
175
|
-
8. Tag master with new version: `git tag <version>`
|
176
|
-
9. Push tags remotely: `git push origin --tags`
|
181
|
+
6. Run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
177
182
|
|
178
183
|
## License
|
179
184
|
|
data/Rakefile
ADDED
@@ -13,50 +13,14 @@ module Proforma
|
|
13
13
|
class Resolver
|
14
14
|
DEFAULT_SEPARATOR = '.'
|
15
15
|
|
16
|
-
attr_reader :
|
16
|
+
attr_reader :objectable_resolver
|
17
17
|
|
18
18
|
def initialize(separator: DEFAULT_SEPARATOR)
|
19
|
-
@
|
19
|
+
@objectable_resolver = Objectable.resolver(separator: separator)
|
20
20
|
end
|
21
21
|
|
22
22
|
def resolve(value, input)
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
def key_path(value)
|
29
|
-
return Array(value.to_s) if separator.empty?
|
30
|
-
|
31
|
-
value.to_s.split(separator)
|
32
|
-
end
|
33
|
-
|
34
|
-
def traverse(object, through)
|
35
|
-
pointer = object
|
36
|
-
|
37
|
-
through.each do |t|
|
38
|
-
next unless pointer
|
39
|
-
|
40
|
-
pointer = get(pointer, t)
|
41
|
-
end
|
42
|
-
|
43
|
-
pointer
|
44
|
-
end
|
45
|
-
|
46
|
-
def get(object, key)
|
47
|
-
if object.is_a?(Hash)
|
48
|
-
indifferent_hash_get(object, key)
|
49
|
-
elsif object.respond_to?(key)
|
50
|
-
object.public_send(key)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
def indifferent_hash_get(hash, key)
|
55
|
-
if hash.key?(key.to_s)
|
56
|
-
hash[key.to_s]
|
57
|
-
elsif hash.key?(key.to_s.to_sym)
|
58
|
-
hash[key.to_s.to_sym]
|
59
|
-
end
|
23
|
+
objectable_resolver.get(input, value)
|
60
24
|
end
|
61
25
|
end
|
62
26
|
end
|
@@ -22,11 +22,14 @@ Gem::Specification.new do |s|
|
|
22
22
|
|
23
23
|
s.required_ruby_version = '>= 2.3.8'
|
24
24
|
|
25
|
+
s.add_dependency('objectable', '~>1')
|
25
26
|
s.add_dependency('stringento', '~>2')
|
26
27
|
|
27
28
|
s.add_development_dependency('guard-rspec', '~>4.7')
|
28
29
|
s.add_development_dependency('proforma', '~>1')
|
29
30
|
s.add_development_dependency('pry', '~>0')
|
31
|
+
s.add_development_dependency('pry-byebug', '~> 3')
|
32
|
+
s.add_development_dependency 'rake', '~> 10.0'
|
30
33
|
s.add_development_dependency('rspec', '~> 3.8')
|
31
34
|
s.add_development_dependency('rubocop', '~>0.63.1')
|
32
35
|
s.add_development_dependency('simplecov', '~>0.16.1')
|
data/spec/spec_helper.rb
CHANGED
@@ -7,13 +7,19 @@
|
|
7
7
|
# LICENSE file in the root directory of this source tree.
|
8
8
|
#
|
9
9
|
|
10
|
-
require 'yaml'
|
11
|
-
require 'pry'
|
12
10
|
require 'proforma'
|
11
|
+
require 'pry'
|
12
|
+
require 'pry-byebug'
|
13
|
+
require 'yaml'
|
14
|
+
|
15
|
+
unless ENV['DISABLE_SIMPLECOV'] == 'true'
|
16
|
+
require 'simplecov'
|
17
|
+
require 'simplecov-console'
|
13
18
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
19
|
+
SimpleCov.formatter = SimpleCov::Formatter::Console
|
20
|
+
SimpleCov.start do
|
21
|
+
add_filter %r{\A/spec/}
|
22
|
+
end
|
23
|
+
end
|
18
24
|
|
19
25
|
require './lib/proforma/extended_evaluator'
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: proforma-extended-evaluator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Ruggio
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: objectable
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: stringento
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +80,34 @@ dependencies:
|
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pry-byebug
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rake
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '10.0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '10.0'
|
69
111
|
- !ruby/object:Gem::Dependency
|
70
112
|
name: rspec
|
71
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -143,6 +185,7 @@ files:
|
|
143
185
|
- Guardfile
|
144
186
|
- LICENSE
|
145
187
|
- README.md
|
188
|
+
- Rakefile
|
146
189
|
- bin/console
|
147
190
|
- lib/proforma/extended_evaluator.rb
|
148
191
|
- lib/proforma/extended_evaluator/formatter.rb
|
@@ -150,7 +193,6 @@ files:
|
|
150
193
|
- lib/proforma/extended_evaluator/version.rb
|
151
194
|
- proforma-extended-evaluator.gemspec
|
152
195
|
- spec/proforma/extended_evaluator/formatter_spec.rb
|
153
|
-
- spec/proforma/extended_evaluator/resolver_spec.rb
|
154
196
|
- spec/proforma/extended_evaluator_spec.rb
|
155
197
|
- spec/spec_helper.rb
|
156
198
|
homepage: https://github.com/bluemarblepayroll/proforma-extended-evaluator
|
@@ -178,6 +220,5 @@ specification_version: 4
|
|
178
220
|
summary: Proforma evaluator plugin for nested object value resolution and text templating
|
179
221
|
test_files:
|
180
222
|
- spec/proforma/extended_evaluator/formatter_spec.rb
|
181
|
-
- spec/proforma/extended_evaluator/resolver_spec.rb
|
182
223
|
- spec/proforma/extended_evaluator_spec.rb
|
183
224
|
- spec/spec_helper.rb
|
@@ -1,43 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
#
|
4
|
-
# Copyright (c) 2019-present, Blue Marble Payroll, LLC
|
5
|
-
#
|
6
|
-
# This source code is licensed under the MIT license found in the
|
7
|
-
# LICENSE file in the root directory of this source tree.
|
8
|
-
#
|
9
|
-
|
10
|
-
require 'spec_helper'
|
11
|
-
|
12
|
-
describe Proforma::ExtendedEvaluator::Resolver do
|
13
|
-
subject { described_class.new }
|
14
|
-
|
15
|
-
context 'when input is a hash' do
|
16
|
-
let(:input) { { 'id' => 1, demographics: { 'first' => 'Matt' } } }
|
17
|
-
|
18
|
-
specify '#resolve gets correct value' do
|
19
|
-
expect(subject.resolve(:id, input)).to eq(input['id'])
|
20
|
-
expect(subject.resolve('id', input)).to eq(input['id'])
|
21
|
-
|
22
|
-
expect(subject.resolve('demographics.first', input)).to eq(input.dig(:demographics, 'first'))
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
context 'when input is an OpenStruct' do
|
27
|
-
let(:input) do
|
28
|
-
OpenStruct.new(
|
29
|
-
id: 1,
|
30
|
-
demographics: OpenStruct.new(
|
31
|
-
first: 'Matt'
|
32
|
-
)
|
33
|
-
)
|
34
|
-
end
|
35
|
-
|
36
|
-
specify '#resolve gets correct value' do
|
37
|
-
expect(subject.resolve(:id, input)).to eq(input.id)
|
38
|
-
expect(subject.resolve('id', input)).to eq(input.id)
|
39
|
-
|
40
|
-
expect(subject.resolve('demographics.first', input)).to eq(input.demographics.first)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|