frise 0.4.0 → 0.6.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: 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