frise 0.4.0 → 0.6.0

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: 59666a0c683f8357e7da23de68bd0cc07b386299943e772dd40d9d641ac2d8c7
4
- data.tar.gz: 6827402a3f207d909845c0fa386f61cd3d32b989206e15d22b58202830406c88
3
+ metadata.gz: 89f413918114d497ca91dc779d1e02e5abe17283c50541a2c5f41e530262a1c8
4
+ data.tar.gz: 249420e836978cd01c7639ba72d9bb8d23bafde1e36c0bd2f2a4d39325a4bb5a
5
5
  SHA512:
6
- metadata.gz: 75c11d0c64a9d0a7f37c3b7702ab2000c09d76900c8c58477bc2426ea47ef766b3c03f77c0fd15928fd55a636009fe33f6e2e19efe8f6454945a3a22ea8b86b3
7
- data.tar.gz: 582bb37e6e27f4da44aa496321abf66def05ca151218680c776772fc893824f03ab61ed6e11d3c2006853bd627d53f378eb79f3190033d69869a8ee574184177
6
+ metadata.gz: 013403a018b4536d8d4a15359a7f95dc8aaab9962313206666653d8b3fb6f6a59d2e4b9e43502480da9d19a1e5fa2b8a4b080fa6aa6837d52a7c99bd33f9ea44
7
+ data.tar.gz: 21e416ce8cb88cafcd7ac40b715ab574cd028a7ffc094f85785c0a8cb116ae73763df6380f0cc9f25935cb81d938a1f5f763b831d69dfa13da7e24ec22235ed0
@@ -0,0 +1,40 @@
1
+ name: CI
2
+
3
+ on: [ push, pull_request ]
4
+
5
+ jobs:
6
+ test:
7
+
8
+ runs-on: ubuntu-latest
9
+ strategy:
10
+ fail-fast: false
11
+ matrix:
12
+ ruby: [ 2.6, 2.7, 3 ]
13
+
14
+ steps:
15
+ - uses: actions/checkout@v2
16
+ - name: Set up Ruby
17
+ uses: ruby/setup-ruby@v1
18
+ with:
19
+ ruby-version: ${{ matrix.ruby }}
20
+ bundler-cache: true
21
+ - name: Install dependencies
22
+ run: bundle install
23
+ - name: Run tests
24
+ run: bundle exec rake
25
+ - name: Coveralls Parallel
26
+ uses: coverallsapp/github-action@master
27
+ with:
28
+ github-token: ${{ secrets.github_token }}
29
+ flag-name: ${{ matrix.ruby }}
30
+ parallel: true
31
+
32
+ finish:
33
+ needs: test
34
+ runs-on: ubuntu-latest
35
+ steps:
36
+ - name: Coveralls Finished
37
+ uses: coverallsapp/github-action@master
38
+ with:
39
+ github-token: ${{ secrets.github_token }}
40
+ parallel-finished: true
data/.rubocop.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  AllCops:
2
- TargetRubyVersion: '2.3'
2
+ NewCops: enable
3
3
  Layout/EmptyLineAfterGuardClause:
4
4
  Enabled: false
5
5
  Metrics:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,25 @@
1
+ ### 0.6.0 (April 7, 2022)
2
+
3
+ - Breaking changes
4
+ - Liquid parsing is now strict ([#29](https://github.com/velocidi/frise/pull/29)).
5
+ - Update liquid gem to `5.3.0` ([#29](https://github.com/velocidi/frise/pull/29)).
6
+
7
+ - New features
8
+ - Add `json` liquid filter ([#28](https://github.com/velocidi/frise/pull/28)).
9
+
10
+ ### 0.5.1 (March 28, 2022)
11
+
12
+ - Breaking changes
13
+ - Increase minimum required ruby version to 2.6.0 ([#22](https://github.com/velocidi/frise/pull/22)).
14
+ - Bug fixes
15
+ - Fix YAML.safe_load call arguments error in ruby 3.1 ([#26](https://github.com/velocidi/frise/pull/26)).
16
+
17
+ ### 0.4.1 (July 7, 2020)
18
+
19
+ - New features
20
+ - `$delete` directive is now available in config files, allowing users to delete parts of the
21
+ config sub-tree ([#20](https://github.com/velocidi/frise/pull/20)).
22
+
1
23
  ### 0.4.0 (November 29, 2019)
2
24
 
3
25
  - Breaking changes
data/frise.gemspec CHANGED
@@ -18,14 +18,15 @@ Gem::Specification.new do |spec|
18
18
  f.match(%r{^(test|spec|features|example)/})
19
19
  end
20
20
  spec.require_paths = ['lib']
21
- spec.required_ruby_version = '>= 2.3.0'
21
+ spec.required_ruby_version = '>= 2.6.0'
22
22
 
23
- spec.add_dependency 'liquid', '~> 4.0'
23
+ spec.add_dependency 'liquid', '~> 5.3.0'
24
24
 
25
25
  spec.add_development_dependency 'bundler', '~> 2.0'
26
- spec.add_development_dependency 'coveralls', '~> 0.8'
27
26
  spec.add_development_dependency 'rake', '~> 13.0'
28
27
  spec.add_development_dependency 'rspec', '~> 3.9'
29
- spec.add_development_dependency 'rubocop', '0.77.0'
30
- spec.add_development_dependency 'simplecov', '~> 0.16'
28
+ spec.add_development_dependency 'rubocop', '~> 1.10'
29
+ spec.add_development_dependency 'simplecov', '~> 0.18'
30
+ spec.add_development_dependency 'simplecov-lcov', '0.8.0'
31
+ spec.metadata['rubygems_mfa_required'] = 'true'
31
32
  end
@@ -10,20 +10,20 @@ module Frise
10
10
  class DefaultsLoader
11
11
  SYMBOLS = %w[$all $optional].freeze
12
12
 
13
- def initialize(include_sym: '$include', content_include_sym: '$content_include', schema_sym: '$schema')
13
+ def initialize(
14
+ include_sym: '$include',
15
+ content_include_sym: '$content_include',
16
+ schema_sym: '$schema',
17
+ delete_sym: '$delete'
18
+ )
19
+
14
20
  @include_sym = include_sym
15
21
  @content_include_sym = content_include_sym
16
22
  @schema_sym = schema_sym
23
+ @delete_sym = delete_sym
17
24
  end
18
25
 
19
- def widened_class(obj)
20
- class_name = obj.class.to_s
21
- return 'String' if class_name == 'Hash' && !obj[@content_include_sym].nil?
22
- return 'Boolean' if %w[TrueClass FalseClass].include? class_name
23
- return 'Integer' if %w[Fixnum Bignum].include? class_name
24
- class_name
25
- end
26
-
26
+ # rubocop:disable Lint/DuplicateBranch
27
27
  def merge_defaults_obj(config, defaults)
28
28
  config_class = widened_class(config)
29
29
  defaults_class = widened_class(defaults)
@@ -34,9 +34,13 @@ module Frise
34
34
  elsif config.nil?
35
35
  if defaults_class != 'Hash' then defaults
36
36
  elsif defaults['$optional'] then nil
37
- else merge_defaults_obj({}, defaults)
37
+ else
38
+ merge_defaults_obj({}, defaults)
38
39
  end
39
40
 
41
+ elsif config == @delete_sym
42
+ config
43
+
40
44
  elsif defaults_class == 'Array' && config_class == 'Array'
41
45
  defaults + config
42
46
 
@@ -56,12 +60,13 @@ module Frise
56
60
 
57
61
  elsif defaults_class != config_class
58
62
  raise "Cannot merge config #{config.inspect} (#{widened_class(config)}) " \
59
- "with default #{defaults.inspect} (#{widened_class(defaults)})"
63
+ "with default #{defaults.inspect} (#{widened_class(defaults)})"
60
64
 
61
65
  else
62
66
  config
63
67
  end
64
68
  end
69
+ # rubocop:enable Lint/DuplicateBranch
65
70
 
66
71
  def merge_defaults_obj_at(config, at_path, defaults)
67
72
  at_path.reverse.each { |key| defaults = { key => defaults } }
@@ -77,5 +82,15 @@ module Frise
77
82
  defaults = Parser.parse(defaults_file, symbol_table) || {}
78
83
  merge_defaults_obj_at(config, at_path, defaults)
79
84
  end
85
+
86
+ private
87
+
88
+ def widened_class(obj)
89
+ class_name = obj.class.to_s
90
+ return 'String' if class_name == 'Hash' && !obj[@content_include_sym].nil?
91
+ return 'Boolean' if %w[TrueClass FalseClass].include? class_name
92
+ return 'Integer' if %w[Fixnum Bignum].include? class_name
93
+ class_name
94
+ end
80
95
  end
81
96
  end
@@ -12,11 +12,9 @@ module Frise
12
12
  @__target_object__ ||= @callable.call
13
13
  end
14
14
 
15
- # rubocop:disable Style/MethodMissingSuper
16
15
  def method_missing(method_name, *args, &block)
17
16
  __target_object__.send(method_name, *args, &block)
18
17
  end
19
- # rubocop:enable Style/MethodMissingSuper
20
18
 
21
19
  def respond_to_missing?(method_name, include_private = false)
22
20
  __target_object__.respond_to?(method_name, include_private)
data/lib/frise/loader.rb CHANGED
@@ -13,6 +13,7 @@ module Frise
13
13
  def initialize(include_sym: '$include',
14
14
  content_include_sym: '$content_include',
15
15
  schema_sym: '$schema',
16
+ delete_sym: '$delete',
16
17
  pre_loaders: [],
17
18
  validators: nil,
18
19
  exit_on_fail: true)
@@ -20,6 +21,7 @@ module Frise
20
21
  @include_sym = include_sym
21
22
  @content_include_sym = content_include_sym
22
23
  @schema_sym = schema_sym
24
+ @delete_sym = delete_sym
23
25
  @pre_loaders = pre_loaders
24
26
  @validators = validators
25
27
  @exit_on_fail = exit_on_fail
@@ -27,7 +29,8 @@ module Frise
27
29
  @defaults_loader = DefaultsLoader.new(
28
30
  include_sym: include_sym,
29
31
  content_include_sym: content_include_sym,
30
- schema_sym: schema_sym
32
+ schema_sym: schema_sym,
33
+ delete_sym: delete_sym
31
34
  )
32
35
  end
33
36
 
@@ -39,15 +42,15 @@ module Frise
39
42
  config = pre_loader.call(config)
40
43
  end
41
44
 
42
- config = process_includes(config, [], config, global_vars) if @include_sym
43
- config = process_schemas(config, [], global_vars) if @schema_sym
45
+ config = process_includes(config, [], config, global_vars) unless @include_sym.nil?
46
+ config = process_schemas(config, [], global_vars) unless @schema_sym.nil?
44
47
  config
45
48
  end
46
49
 
47
50
  private
48
51
 
49
52
  def process_includes(config, at_path, root_config, global_vars, include_confs_stack = [])
50
- return config unless config.class == Hash
53
+ return config unless config.instance_of?(Hash)
51
54
 
52
55
  # process $content_include directives
53
56
  config, content_include_confs = extract_content_include(config, at_path)
@@ -65,26 +68,28 @@ module Frise
65
68
  # process $include directives
66
69
  config, next_include_confs = extract_include(config, at_path)
67
70
  include_confs = next_include_confs + include_confs_stack
68
- if include_confs.empty?
69
- config.map { |k, v| [k, process_includes(v, at_path + [k], root_config, global_vars)] }.to_h
70
- else
71
- Lazy.new do
72
- include_conf = include_confs.first
73
- rest_include_confs = include_confs[1..-1]
74
- symbol_table = build_symbol_table(root_config, at_path, config, global_vars, include_conf)
75
- included_config = Parser.parse(include_conf['file'], symbol_table)
76
- config = @defaults_loader.merge_defaults_obj(config, included_config)
77
- process_includes(config, at_path, merge_at(root_config, at_path, config), global_vars, rest_include_confs)
78
- end
79
- end
71
+ res = if include_confs.empty?
72
+ config.to_h { |k, v| [k, process_includes(v, at_path + [k], root_config, global_vars)] }
73
+ else
74
+ Lazy.new do
75
+ include_conf = include_confs.first
76
+ rest_include_confs = include_confs[1..]
77
+ symbol_table = build_symbol_table(root_config, at_path, config, global_vars, include_conf)
78
+ included_config = Parser.parse(include_conf['file'], symbol_table)
79
+ config = @defaults_loader.merge_defaults_obj(config, included_config)
80
+ process_includes(config, at_path, merge_at(root_config, at_path, config), global_vars,
81
+ rest_include_confs)
82
+ end
83
+ end
84
+ @delete_sym.nil? ? res : omit_deleted(res)
80
85
  end
81
86
 
82
87
  def process_schema_includes(schema, at_path, global_vars)
83
- return schema unless schema.class == Hash
88
+ return schema unless schema.instance_of?(Hash)
84
89
 
85
90
  schema, included_schemas = extract_include(schema, at_path)
86
91
  if included_schemas.empty?
87
- schema.map { |k, v| [k, process_schema_includes(v, at_path + [k], global_vars)] }.to_h
92
+ schema.to_h { |k, v| [k, process_schema_includes(v, at_path + [k], global_vars)] }
88
93
  else
89
94
  included_schemas.each do |defaults_conf|
90
95
  schema = Parser.parse(defaults_conf['file'], global_vars).merge(schema)
@@ -94,13 +99,13 @@ module Frise
94
99
  end
95
100
 
96
101
  def process_schemas(config, at_path, global_vars)
97
- return config unless config.class == Hash
102
+ return config unless config.instance_of?(Hash)
98
103
 
99
- config = config.map do |k, v|
104
+ config = config.to_h do |k, v|
100
105
  new_v = process_schemas(v, at_path + [k], global_vars)
101
106
  return nil if !v.nil? && new_v.nil?
102
107
  [k, new_v]
103
- end.to_h
108
+ end
104
109
 
105
110
  config, schema_files = extract_schema(config, at_path)
106
111
  schema_files.each do |schema_file|
@@ -145,10 +150,10 @@ module Frise
145
150
  end
146
151
  end
147
152
 
148
- def extract_special(config, key, at_path)
153
+ def extract_special(config, key, at_path, &block)
149
154
  case config[key]
150
155
  when nil then [config, []]
151
- when Array then [config.reject { |k| k == key }, config[key].map { |e| yield e }]
156
+ when Array then [config.reject { |k| k == key }, config[key].map(&block)]
152
157
  else raise "At #{build_path(at_path)}: illegal value for #{key}: #{config[key].inspect}"
153
158
  end
154
159
  end
@@ -160,6 +165,18 @@ module Frise
160
165
  config.merge(head => merge_at(config[head], tail, to_merge))
161
166
  end
162
167
 
168
+ # returns the config without the keys whose values are @delete_sym
169
+ # @delete_sym given as array elements are not handled.
170
+ def omit_deleted(config)
171
+ config.each_with_object({}) do |(k, v), new_hash|
172
+ if v.is_a?(Hash)
173
+ new_hash[k] = omit_deleted(v)
174
+ else
175
+ new_hash[k] = v unless v == @delete_sym
176
+ end
177
+ end
178
+ end
179
+
163
180
  # builds the symbol table for the Liquid renderization of a file, based on:
164
181
  # - `root_config`: the root of the whole config
165
182
  # - `at_path`: the current path
@@ -167,10 +184,10 @@ module Frise
167
184
  # - `global_vars`: the global variables
168
185
  # - `include_conf`: the $include or $content_include configuration
169
186
  def build_symbol_table(root_config, at_path, config, global_vars, include_conf)
170
- extra_vars = (include_conf['vars'] || {}).map { |k, v| [k, root_config.dig(*v.split('.'))] }.to_h
187
+ extra_vars = (include_conf['vars'] || {}).transform_values { |v| root_config.dig(*v.split('.')) }
171
188
  extra_consts = include_conf['constants'] || {}
172
189
 
173
- (config ? merge_at(root_config, at_path, config) : root_config)
190
+ omit_deleted(config ? merge_at(root_config, at_path, config) : root_config)
174
191
  .merge(global_vars)
175
192
  .merge(extra_vars)
176
193
  .merge(extra_consts)
data/lib/frise/parser.rb CHANGED
@@ -10,13 +10,18 @@ module Frise
10
10
  class << self
11
11
  def parse(file, symbol_table = nil)
12
12
  return nil unless File.file? file
13
- YAML.safe_load(parse_as_text(file, symbol_table), [], [], true) || {}
13
+ YAML.safe_load(parse_as_text(file, symbol_table), aliases: true) || {}
14
14
  end
15
15
 
16
16
  def parse_as_text(file, symbol_table = nil)
17
17
  return nil unless File.file? file
18
18
  content = File.read(file)
19
- content = Liquid::Template.parse(content).render with_internal_vars(file, symbol_table) if symbol_table
19
+ template = Liquid::Template.parse(content, error_mode: :strict)
20
+ if symbol_table
21
+ content = template.render!(with_internal_vars(file, symbol_table), {
22
+ strict_filters: true
23
+ })
24
+ end
20
25
  content
21
26
  end
22
27
 
@@ -14,6 +14,8 @@ module Frise
14
14
  attr_reader :errors
15
15
 
16
16
  def initialize(root, validators = nil)
17
+ super()
18
+
17
19
  @root = root
18
20
  @validators = validators
19
21
  @errors = []
@@ -33,7 +35,7 @@ module Frise
33
35
 
34
36
  def get_full_schema(schema)
35
37
  case schema
36
- when Hash then
38
+ when Hash
37
39
  default_type = schema[:enum] || schema[:one_of] ? 'Object' : 'Hash'
38
40
  { type: default_type }.merge(schema)
39
41
  when Symbol then { type: 'Object', validate: schema }
@@ -93,7 +95,7 @@ module Frise
93
95
  def validate_enum(full_schema, obj, path)
94
96
  if full_schema[:enum] && !full_schema[:enum].include?(obj)
95
97
  add_validation_error(path, "invalid value #{obj.inspect}. " \
96
- "Accepted values are #{full_schema[:enum].map(&:inspect).join(', ')}")
98
+ "Accepted values are #{full_schema[:enum].map(&:inspect).join(', ')}")
97
99
  return false
98
100
  end
99
101
  true
@@ -124,7 +126,7 @@ module Frise
124
126
  def validate_remaining_keys(full_schema, obj, path, processed_keys)
125
127
  expected_types = get_expected_types(full_schema)
126
128
  if expected_types.size == 1 && expected_types[0].ancestors.member?(Enumerable)
127
- hash = obj.is_a?(Hash) ? obj : Hash[obj.map.with_index { |x, i| [i, x] }]
129
+ hash = obj.is_a?(Hash) ? obj : obj.map.with_index { |x, i| [i, x] }.to_h
128
130
  hash.each do |key, value|
129
131
  validate_object(path, key, full_schema[:all_keys]) if full_schema[:all_keys] && !key.is_a?(Symbol)
130
132
 
@@ -156,17 +158,27 @@ module Frise
156
158
  def self.parse_symbols(obj)
157
159
  case obj
158
160
  when Array then obj.map { |e| parse_symbols(e) }
159
- when Hash then Hash[obj.map { |k, v| [parse_symbols(k), parse_symbols(v)] }]
160
- when String then obj.start_with?('$') ? obj[1..-1].to_sym : obj
161
+ when Hash then obj.to_h { |k, v| [parse_symbols(k), parse_symbols(v)] }
162
+ when String then obj.start_with?('$') ? obj[1..].to_sym : obj
161
163
  else obj
162
164
  end
163
165
  end
164
166
 
165
167
  def self.validate_obj(config, schema, options = {})
166
- validate_obj_at(config, [], schema, options)
168
+ validate_obj_at(config, [], schema, **options)
167
169
  end
168
170
 
169
- def self.validate_obj_at(config, at_path, schema, path_prefix: nil, validators: nil, print: nil, fatal: nil, raise_error: nil)
171
+ def self.validate_obj_at(
172
+ config,
173
+ at_path,
174
+ schema,
175
+ path_prefix: nil,
176
+ validators: nil,
177
+ print: nil,
178
+ fatal: nil,
179
+ raise_error: nil
180
+ )
181
+
170
182
  schema = parse_symbols(schema)
171
183
  at_path.reverse.each { |key| schema = { key => schema, :allow_unknown_keys => true } }
172
184
 
@@ -188,11 +200,11 @@ module Frise
188
200
  end
189
201
 
190
202
  def self.validate(config, schema_file, options = {})
191
- validate_obj_at(config, [], Parser.parse(schema_file) || { allow_unknown_keys: true }, options)
203
+ validate_obj_at(config, [], Parser.parse(schema_file) || { allow_unknown_keys: true }, **options)
192
204
  end
193
205
 
194
206
  def self.validate_at(config, at_path, schema_file, options = {})
195
- validate_obj_at(config, at_path, Parser.parse(schema_file) || { allow_unknown_keys: true }, options)
207
+ validate_obj_at(config, at_path, Parser.parse(schema_file) || { allow_unknown_keys: true }, **options)
196
208
  end
197
209
  end
198
210
 
@@ -202,6 +214,8 @@ module Frise
202
214
  attr_reader :errors
203
215
 
204
216
  def initialize(errors)
217
+ super()
218
+
205
219
  @errors = errors
206
220
  end
207
221
  end
data/lib/frise/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Frise
4
- VERSION = '0.4.0'
4
+ VERSION = '0.6.0'
5
5
  end
data/lib/frise.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'liquid/liquid'
4
+
3
5
  require 'frise/defaults_loader'
4
6
  require 'frise/loader/lazy'
5
7
  require 'frise/loader'
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ # Converts a variable into its JSON representation
6
+ module JsonFilter
7
+ def json(object)
8
+ JSON.dump(object)
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'liquid'
4
+
5
+ require_relative 'json_filter'
6
+
7
+ Liquid::Template.register_filter(JsonFilter)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: frise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Velocidi
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-29 00:00:00.000000000 Z
11
+ date: 2022-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: liquid
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '4.0'
19
+ version: 5.3.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '4.0'
26
+ version: 5.3.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -39,86 +39,86 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '2.0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: coveralls
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.8'
47
+ version: '13.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.8'
54
+ version: '13.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rake
56
+ name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '13.0'
61
+ version: '3.9'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '13.0'
68
+ version: '3.9'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rspec
70
+ name: rubocop
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '3.9'
75
+ version: '1.10'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '3.9'
82
+ version: '1.10'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rubocop
84
+ name: simplecov
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '='
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.77.0
89
+ version: '0.18'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '='
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.77.0
96
+ version: '0.18'
97
97
  - !ruby/object:Gem::Dependency
98
- name: simplecov
98
+ name: simplecov-lcov
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: '0.16'
103
+ version: 0.8.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: '0.16'
111
- description:
110
+ version: 0.8.0
111
+ description:
112
112
  email:
113
113
  - hello@velocidi.com
114
114
  executables: []
115
115
  extensions: []
116
116
  extra_rdoc_files: []
117
117
  files:
118
+ - ".github/workflows/CI.yml"
118
119
  - ".gitignore"
119
120
  - ".rspec"
120
121
  - ".rubocop.yml"
121
- - ".travis.yml"
122
122
  - CHANGELOG.md
123
123
  - Gemfile
124
124
  - LICENSE.txt
@@ -132,11 +132,14 @@ files:
132
132
  - lib/frise/parser.rb
133
133
  - lib/frise/validator.rb
134
134
  - lib/frise/version.rb
135
+ - lib/liquid/json_filter.rb
136
+ - lib/liquid/liquid.rb
135
137
  homepage: https://github.com/velocidi/frise
136
138
  licenses:
137
139
  - Apache-2.0
138
- metadata: {}
139
- post_install_message:
140
+ metadata:
141
+ rubygems_mfa_required: 'true'
142
+ post_install_message:
140
143
  rdoc_options: []
141
144
  require_paths:
142
145
  - lib
@@ -144,16 +147,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
147
  requirements:
145
148
  - - ">="
146
149
  - !ruby/object:Gem::Version
147
- version: 2.3.0
150
+ version: 2.6.0
148
151
  required_rubygems_version: !ruby/object:Gem::Requirement
149
152
  requirements:
150
153
  - - ">="
151
154
  - !ruby/object:Gem::Version
152
155
  version: '0'
153
156
  requirements: []
154
- rubyforge_project:
155
- rubygems_version: 2.7.3
156
- signing_key:
157
+ rubygems_version: 3.3.7
158
+ signing_key:
157
159
  specification_version: 4
158
160
  summary: Ruby config library with schema validation, default values and templating
159
161
  test_files: []
data/.travis.yml DELETED
@@ -1,9 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
- rvm:
4
- - 2.3
5
- - 2.4
6
- - 2.5
7
- - 2.6
8
- before_install:
9
- - gem install bundler