hcl-checker 1.5.0 → 1.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: cb47986f7941e27c8c23509a32796a30c309af1341c7aac468acac3c33efaa26
4
- data.tar.gz: a90c767872e02d7f6b94d044a8750969d1c1ec5236c565be051a7a8cc7b1889d
3
+ metadata.gz: db4fad85fc6cac710e6cf24082498ce2454f89f19204afc977413913a0e58699
4
+ data.tar.gz: 8d6be4dd1a00565006886e0dadbee8d2737de8d2b0819eed26d76d0573dbddb2
5
5
  SHA512:
6
- metadata.gz: 9efd2312d2ff19fb9518259689491ac616923ab1df6a7eaa922d3d72e2b92a97583c3f56065c43d5bcd8660a2ec3f520df828480bfb209d1b04ab34d187e1ca8
7
- data.tar.gz: c4446a6f7b85a90fd1eb4157d5c4dbe8522497309fbe53ac63b66b66b6612a88f354028ecc074f8c7dda45e6802a21be0aca02767d9f2f1277eed509178d8e02
6
+ metadata.gz: 878423137f46f8043861744bbb8ff9026f5472caa0d8f9cfa0eb532f612f82bad0451b5c154b0aec19a98fdd9b568860a578d36903ef55fee9f3efbeec03e6a6
7
+ data.tar.gz: 63ebcea583cc378a141a41435ab0c32b0a9ee88a21fbbac197b7f0756fd8c46461f55987730fc591e0cfee124b85cb6558be5281e41e1ea52f32ad421f8842f8
data/.rubocop.yml ADDED
@@ -0,0 +1,32 @@
1
+ AllCops:
2
+ NewCops: enable
3
+ Exclude:
4
+ - lib/hcl/lexer.rb
5
+ - lib/hcl/parser.rb
6
+
7
+ Layout/LineLength:
8
+ Enabled: false
9
+
10
+ Metrics/AbcSize:
11
+ Enabled: false
12
+
13
+ Metrics/BlockLength:
14
+ Enabled: false
15
+
16
+ Metrics/ClassLength:
17
+ Enabled: false
18
+
19
+ Metrics/CyclomaticComplexity:
20
+ Enabled: false
21
+
22
+ Metrics/MethodLength:
23
+ Enabled: false
24
+
25
+ Metrics/PerceivedComplexity:
26
+ Enabled: false
27
+
28
+ Style/Documentation:
29
+ Enabled: false
30
+
31
+ Style/FrozenStringLiteralComment:
32
+ EnforcedStyle: never
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # This is needed due https://nvd.nist.gov/vuln/detail/CVE-2018-14404
4
4
  # A NULL pointer dereference vulnerability exists in the xpath.c:xmlXPathCompOpEval()
@@ -7,10 +7,9 @@ source "https://rubygems.org"
7
7
  # with the use of the libxml2 library may be vulnerable to a denial of service attack due
8
8
  # to a crash of the application.
9
9
  # Nokogiri >= 1.8.5 solves this problem
10
- gem "nokogiri", ">= 1.10.8"
10
+ gem 'nokogiri', '>= 1.11.4'
11
11
 
12
-
13
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
12
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
14
13
 
15
14
  # Specify your gem's dependencies in hcl-checker.gemspec
16
15
  gemspec
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hcl-checker (1.5.0)
4
+ hcl-checker (1.6.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -12,9 +12,10 @@ GEM
12
12
  rkelly-remix
13
13
  json (2.3.1)
14
14
  metasm (1.0.4)
15
- mini_portile2 (2.4.0)
16
- nokogiri (1.10.10)
17
- mini_portile2 (~> 2.4.0)
15
+ mini_portile2 (2.5.3)
16
+ nokogiri (1.11.7)
17
+ mini_portile2 (~> 2.5.0)
18
+ racc (~> 1.4)
18
19
  racc (1.5.0)
19
20
  rake (12.3.3)
20
21
  rb-readline (0.5.5)
@@ -45,9 +46,9 @@ PLATFORMS
45
46
  ruby
46
47
 
47
48
  DEPENDENCIES
48
- bundler (~> 2.1.4)
49
+ bundler (~> 2.2.10)
49
50
  hcl-checker!
50
- nokogiri (>= 1.10.8)
51
+ nokogiri (>= 1.11.4)
51
52
  racc (= 1.5.0)
52
53
  rake (~> 12.3.3)
53
54
  rex (= 2.0.12)
@@ -55,4 +56,4 @@ DEPENDENCIES
55
56
  rspec (~> 3.0)
56
57
 
57
58
  BUNDLED WITH
58
- 2.1.4
59
+ 2.2.20
data/Rakefile CHANGED
@@ -1,18 +1,18 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new do |c|
5
- options = ["--color"]
6
- options += ["--format", "documentation"]
5
+ options = ['--color']
6
+ options += ['--format', 'documentation']
7
7
  c.rspec_opts = options
8
8
  end
9
9
 
10
- desc "Generate Grammar files for HCL"
10
+ desc 'Generate Grammar files for HCL'
11
11
  task :build_grammar do
12
12
  print 'Building Lexer'
13
- `rex ./assets/lexer.rex -o ./lib/hcl/lexer.rb`
13
+ `rex ./assets/lexer.rex -o ./lib/hcl/checker/lexer.rb`
14
14
  print "....done\n"
15
15
  print 'Building Parser'
16
- `racc ./assets/parse.y -o ./lib/hcl/parser.rb`
16
+ `racc ./assets/parse.y -o ./lib/hcl/checker/parser.rb`
17
17
  print "....done\n\n"
18
18
  end
data/assets/lexer.rex CHANGED
@@ -1,5 +1,4 @@
1
-
2
- class HCLLexer
1
+ class HCL::Checker::Lexer
3
2
  option
4
3
  independent
5
4
 
@@ -51,25 +50,26 @@ rule
51
50
  {MINUS} { [:MINUS, text]}
52
51
 
53
52
  inner
54
-
55
53
  def lex(input)
56
54
  scan_setup(input)
57
55
  tokens = []
58
56
  while token = next_token
59
57
  tokens << token
60
58
  end
59
+
61
60
  tokens
62
61
  end
63
62
 
64
63
 
65
64
  def to_boolean(input)
66
- input =
67
- if input =~ /true/
68
- true
69
- elsif input =~ /false/
70
- false
71
- end
72
- return input
65
+ case input
66
+ when /true/
67
+ true
68
+ when /false/
69
+ false
70
+ else
71
+ raise "Invalid value for `to_boolean`, expected true/false got #{input}"
72
+ end
73
73
  end
74
74
 
75
75
 
@@ -93,19 +93,21 @@ inner
93
93
  result = ''
94
94
  nested = 0
95
95
 
96
- begin
96
+ loop do
97
97
  case(text = @ss.scan_until(%r{\"|\$\{|\}|\\}))
98
98
  when %r{\$\{\z}
99
99
  nested += 1
100
100
  when %r{\}\z}
101
- nested -= 1 if nested > 0
101
+ nested -= 1 if nested.positive?
102
102
  when %r{\\\z}
103
103
  result += text.chop + @ss.getch
104
104
  next
105
105
  end
106
106
 
107
107
  result += text.to_s
108
- end until nested == 0 && text =~ %r{\"\z}
108
+
109
+ break if nested.zero? && text =~ %r{\"\z}
110
+ end
109
111
 
110
112
  result.chop
111
113
  end
data/assets/parse.y CHANGED
@@ -1,4 +1,4 @@
1
- class HCLParser
1
+ class HCL::Checker::Parser
2
2
  token BOOL
3
3
  FLOAT
4
4
  NUMBER
@@ -41,7 +41,7 @@ rule
41
41
  LEFTBRACE objectlist RIGHTBRACE
42
42
  { result = flatten_objectlist(val[1]) }
43
43
  | LEFTBRACE RIGHTBRACE
44
- { return }
44
+ { return {} }
45
45
  ;
46
46
 
47
47
  objectkey:
@@ -88,7 +88,7 @@ rule
88
88
  LEFTBRACKET listitems RIGHTBRACKET
89
89
  { result = val[1] }
90
90
  | LEFTBRACKET RIGHTBRACKET
91
- { return }
91
+ { return [] }
92
92
  ;
93
93
 
94
94
  listitems:
@@ -122,7 +122,7 @@ rule
122
122
  end
123
123
 
124
124
  ---- header
125
- require_relative './lexer'
125
+ require_relative 'lexer'
126
126
 
127
127
  ---- inner
128
128
  #//
@@ -130,19 +130,31 @@ require_relative './lexer'
130
130
  #// keys are encountered.
131
131
  #//
132
132
  #// from decoder.go: if we're at the root or we're directly within
133
- #// a list, decode to hashes, otherwise lists
133
+ #// a list, decode to hashes, otherwise lists
134
134
  #//
135
135
  #// from object.go: there is a flattened list structure
136
136
  #//
137
+ #// if @duplicate_mode is set:
138
+ #// - :array then duplicates will be appended to an array
139
+ #// - :merge then duplicates will be deep merged into a hash
140
+ #//
137
141
  def flatten_objectlist(list)
138
142
  (list || {}).each_with_object({}) do |a, h|
139
- h[a.first] =
140
- case a.last
141
- when Hash
143
+ if h.keys.include?(a.first)
144
+ case @duplicate_mode
145
+ when :array
146
+ if h[a.first].is_a?(Array)
147
+ h[a.first].push(a.last)
148
+ else
149
+ h[a.first] = [ h[a.first], a.last ]
150
+ end
151
+ when :merge
142
152
  deep_merge(h[a.first] || {}, a.last)
143
- else
144
- h[a.first] = a.last
153
+ else raise ArgumentError
145
154
  end
155
+ else
156
+ h[a.first] = a.last
157
+ end
146
158
  end
147
159
  end
148
160
 
@@ -154,10 +166,12 @@ require_relative './lexer'
154
166
  end
155
167
 
156
168
 
157
- def parse(input)
158
- @lexer = HCLLexer.new.lex(input)
169
+ def parse(input, duplicate_mode = :array)
170
+ @duplicate_mode = duplicate_mode
171
+ @lexer = HCL::Checker::Lexer.new.lex(input)
159
172
  do_parse
160
- return @result
173
+
174
+ @result
161
175
  end
162
176
 
163
177
 
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "hcl/checker"
3
+ require 'bundler/setup'
4
+ require 'hcl/checker'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "hcl/checker"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start(__FILE__)
data/hcl-checker.gemspec CHANGED
@@ -1,4 +1,4 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require 'hcl/checker/version'
4
4
 
@@ -19,19 +19,21 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ['lib']
20
20
  spec.required_ruby_version = '>= 2.5.0'
21
21
 
22
- spec.add_development_dependency 'bundler', '~> 2.1.4'
23
- spec.add_development_dependency 'rake', '~> 12.3.3'
24
- spec.add_development_dependency 'rspec', '~> 3.0'
22
+ spec.add_development_dependency 'bundler', '~> 2.2.10'
25
23
  spec.add_development_dependency 'racc', '1.5.0'
24
+ spec.add_development_dependency 'rake', '~> 12.3.3'
26
25
  spec.add_development_dependency 'rex', '2.0.12'
27
26
  spec.add_development_dependency 'rexical', '>= 1.0.7'
27
+ spec.add_development_dependency 'rspec', '~> 3.0'
28
+
29
+ spec.post_install_message = '
30
+ Hello, me again. This version fixes:
28
31
 
29
- spec.post_install_message = %q{
30
- Hello, me again. After several contacts of users of this gem requesting that
31
- the module name be kept only as HCL, instead of HCL1 and HCL2, I went back and
32
- kept it. Sorry for those who eventually switched from HCL to HCL1. And thanks to
33
- everyone who got in touch justifying why my change would be bad for all users.
32
+ - Add support for multiple elements of the same type
33
+ - Fix bug where empty objects and empty lists were being parsed as nil
34
+ - Update bundler version
35
+ - Update nokogiri version
34
36
 
35
37
  Thank you :)
36
- }
38
+ '
37
39
  end
data/lib/hcl/checker.rb CHANGED
@@ -1,26 +1,33 @@
1
- require 'hcl/checker/version'
2
- require_relative 'lexer'
3
- require_relative 'parser'
1
+ require_relative 'checker/version'
2
+ require_relative 'checker/lexer'
3
+ require_relative 'checker/parser'
4
4
 
5
5
  module HCL
6
6
  module Checker
7
+ VALID_DUPLICATE_MODES = %i(array merge).freeze
8
+
7
9
  class << self
8
10
  attr_accessor :last_error
9
11
 
10
12
  def valid?(value)
11
- ret = HCLParser.new.parse(value)
13
+ ret = HCL::Checker::Parser.new.parse(value)
12
14
  return true if ret.is_a? Hash
15
+
13
16
  false
14
17
  rescue Racc::ParseError => e
15
18
  @last_error = e.message
19
+
16
20
  false
17
21
  end
18
22
 
19
- def parse(value)
20
- HCLParser.new.parse(value)
23
+ def parse(value, duplicate_mode = :array)
24
+ raise ArgumentError, "Invalid duplicate mode #{duplicate_mode}, must be one of #{VALID_DUPLICATE_MODES}" unless VALID_DUPLICATE_MODES.include?(duplicate_mode)
25
+
26
+ HCL::Checker::Parser.new.parse(value, duplicate_mode)
21
27
  rescue Racc::ParseError => e
22
28
  @last_error = e.message
23
- return e.message
29
+
30
+ e.message
24
31
  end
25
32
  end
26
33
  end
@@ -4,8 +4,7 @@
4
4
  # from lexical definition file "./assets/lexer.rex".
5
5
  #++
6
6
 
7
-
8
- class HCLLexer
7
+ class HCL::Checker::Lexer
9
8
  require 'strscan'
10
9
 
11
10
  class ScanError < StandardError ; end
@@ -135,13 +134,14 @@ class HCLLexer
135
134
  tokens
136
135
  end
137
136
  def to_boolean(input)
138
- input =
139
- if input =~ /true/
140
- true
141
- elsif input =~ /false/
142
- false
143
- end
144
- return input
137
+ case input
138
+ when /true/
139
+ true
140
+ when /false/
141
+ false
142
+ else
143
+ raise "Invalid value for `to_boolean`, expected true/false got #{input}"
144
+ end
145
145
  end
146
146
  def consume_comment(input)
147
147
  nested = 1
@@ -159,18 +159,19 @@ class HCLLexer
159
159
  def consume_string(input)
160
160
  result = ''
161
161
  nested = 0
162
- begin
162
+ loop do
163
163
  case(text = @ss.scan_until(%r{\"|\$\{|\}|\\}))
164
164
  when %r{\$\{\z}
165
165
  nested += 1
166
166
  when %r{\}\z}
167
- nested -= 1 if nested > 0
167
+ nested -= 1 if nested.positive?
168
168
  when %r{\\\z}
169
169
  result += text.chop + @ss.getch
170
170
  next
171
171
  end
172
172
  result += text.to_s
173
- end until nested == 0 && text =~ %r{\"\z}
173
+ break if nested.zero? && text =~ %r{\"\z}
174
+ end
174
175
  result.chop
175
176
  end
176
177
  def consume_heredoc
@@ -1,14 +1,16 @@
1
1
  #
2
2
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.5.0
3
+ # This file is automatically generated by Racc 1.5.2
4
4
  # from Racc grammar file "".
5
5
  #
6
6
 
7
7
  require 'racc/parser.rb'
8
8
 
9
- require_relative './lexer'
9
+ require_relative 'lexer'
10
10
 
11
- class HCLParser < Racc::Parser
11
+ module HCL
12
+ module Checker
13
+ class Parser < Racc::Parser
12
14
 
13
15
  module_eval(<<'...end parse.y/module_eval...', 'parse.y', 128)
14
16
  #//
@@ -16,19 +18,31 @@ module_eval(<<'...end parse.y/module_eval...', 'parse.y', 128)
16
18
  #// keys are encountered.
17
19
  #//
18
20
  #// from decoder.go: if we're at the root or we're directly within
19
- #// a list, decode to hashes, otherwise lists
21
+ #// a list, decode to hashes, otherwise lists
20
22
  #//
21
23
  #// from object.go: there is a flattened list structure
22
24
  #//
25
+ #// if @duplicate_mode is set:
26
+ #// - :array then duplicates will be appended to an array
27
+ #// - :merge then duplicates will be deep merged into a hash
28
+ #//
23
29
  def flatten_objectlist(list)
24
30
  (list || {}).each_with_object({}) do |a, h|
25
- h[a.first] =
26
- case a.last
27
- when Hash
31
+ if h.keys.include?(a.first)
32
+ case @duplicate_mode
33
+ when :array
34
+ if h[a.first].is_a?(Array)
35
+ h[a.first].push(a.last)
36
+ else
37
+ h[a.first] = [ h[a.first], a.last ]
38
+ end
39
+ when :merge
28
40
  deep_merge(h[a.first] || {}, a.last)
29
- else
30
- h[a.first] = a.last
41
+ else raise ArgumentError
31
42
  end
43
+ else
44
+ h[a.first] = a.last
45
+ end
32
46
  end
33
47
  end
34
48
 
@@ -40,10 +54,12 @@ module_eval(<<'...end parse.y/module_eval...', 'parse.y', 128)
40
54
  end
41
55
 
42
56
 
43
- def parse(input)
44
- @lexer = HCLLexer.new.lex(input)
57
+ def parse(input, duplicate_mode = :array)
58
+ @duplicate_mode = duplicate_mode
59
+ @lexer = HCL::Checker::Lexer.new.lex(input)
45
60
  do_parse
46
- return @result
61
+
62
+ @result
47
63
  end
48
64
 
49
65
 
@@ -69,25 +85,25 @@ module_eval(<<'...end parse.y/module_eval...', 'parse.y', 128)
69
85
  ##### State transition tables begin ###
70
86
 
71
87
  racc_action_table = [
72
- 22, 29, 28, 10, 12, 26, 43, 23, 5, 14,
73
- 6, 27, 29, 28, 5, 42, 6, -10, 37, 31,
74
- 14, -11, 27, 34, 29, 28, 5, 5, 6, 6,
75
- 37, 40, 14, 17, 27, 18, 13, 14, 19, 20,
76
- 32, 41, 44 ]
88
+ 22, 29, 28, 10, 19, 26, 43, 23, 5, 14,
89
+ 6, 27, 29, 28, 5, 42, 6, 13, 37, 40,
90
+ 14, 32, 27, 34, 29, 28, 5, 5, 6, 6,
91
+ 37, 31, 14, 17, 27, 18, -11, 14, -10, 41,
92
+ 12, 44, 20 ]
77
93
 
78
94
  racc_action_check = [
79
- 13, 13, 13, 1, 4, 13, 33, 13, 0, 13,
80
- 0, 13, 27, 27, 14, 33, 14, 5, 27, 14,
81
- 27, 6, 27, 27, 43, 43, 30, 3, 30, 3,
82
- 43, 30, 43, 9, 43, 9, 7, 9, 10, 11,
83
- 26, 32, 41 ]
95
+ 13, 13, 13, 1, 10, 13, 33, 13, 0, 13,
96
+ 0, 13, 27, 27, 30, 33, 30, 7, 27, 30,
97
+ 27, 26, 27, 27, 43, 43, 14, 3, 14, 3,
98
+ 43, 14, 43, 9, 43, 9, 6, 9, 5, 32,
99
+ 4, 41, 11 ]
84
100
 
85
101
  racc_action_pointer = [
86
- 1, 3, nil, 20, -1, 9, 13, 28, nil, 26,
87
- 38, 34, nil, -2, 7, nil, nil, nil, nil, nil,
88
- nil, nil, nil, nil, nil, nil, 25, 9, nil, nil,
89
- 19, nil, 34, 1, nil, nil, nil, nil, nil, nil,
90
- nil, 26, nil, 21, nil, nil ]
102
+ 1, 3, nil, 20, 35, 30, 28, 9, nil, 26,
103
+ 4, 37, nil, -2, 19, nil, nil, nil, nil, nil,
104
+ nil, nil, nil, nil, nil, nil, 6, 9, nil, nil,
105
+ 7, nil, 32, 1, nil, nil, nil, nil, nil, nil,
106
+ nil, 25, nil, 21, nil, nil ]
91
107
 
92
108
  racc_action_default = [
93
109
  -2, -35, -1, -3, -5, -22, -23, -35, -19, -35,
@@ -97,18 +113,18 @@ racc_action_default = [
97
113
  -8, -35, -24, -28, -17, -27 ]
98
114
 
99
115
  racc_goto_table = [
100
- 11, 35, 3, 15, 1, 2, 21, 24, 25, 16,
101
- 33, nil, nil, nil, nil, nil, 30, 45, nil, nil,
116
+ 11, 35, 3, 15, 16, 33, 21, 24, 2, 1,
117
+ 25, nil, nil, nil, nil, nil, 30, 45, nil, nil,
102
118
  nil, nil, nil, nil, nil, nil, nil, 11 ]
103
119
 
104
120
  racc_goto_check = [
105
- 4, 12, 3, 5, 1, 2, 7, 5, 8, 9,
106
- 11, nil, nil, nil, nil, nil, 3, 12, nil, nil,
121
+ 4, 12, 3, 5, 9, 11, 7, 5, 2, 1,
122
+ 8, nil, nil, nil, nil, nil, 3, 12, nil, nil,
107
123
  nil, nil, nil, nil, nil, nil, nil, 4 ]
108
124
 
109
125
  racc_goto_pointer = [
110
- nil, 4, 5, 2, -3, -6, nil, -7, -5, 0,
111
- nil, -17, -26 ]
126
+ nil, 9, 8, 2, -3, -6, nil, -7, -3, -5,
127
+ nil, -22, -26 ]
112
128
 
113
129
  racc_goto_default = [
114
130
  nil, nil, nil, nil, 4, 39, 7, 36, 38, 8,
@@ -291,7 +307,7 @@ module_eval(<<'.,.,', 'parse.y', 41)
291
307
 
292
308
  module_eval(<<'.,.,', 'parse.y', 43)
293
309
  def _reduce_9(val, _values, result)
294
- return
310
+ return {}
295
311
  result
296
312
  end
297
313
  .,.,
@@ -403,7 +419,7 @@ module_eval(<<'.,.,', 'parse.y', 88)
403
419
 
404
420
  module_eval(<<'.,.,', 'parse.y', 90)
405
421
  def _reduce_25(val, _values, result)
406
- return
422
+ return []
407
423
  result
408
424
  end
409
425
  .,.,
@@ -475,4 +491,6 @@ def _reduce_none(val, _values, result)
475
491
  val[0]
476
492
  end
477
493
 
478
- end # class HCLParser
494
+ end # class Parser
495
+ end # module Checker
496
+ end # module HCL
@@ -1,5 +1,5 @@
1
1
  module HCL
2
2
  module Checker
3
- VERSION = '1.5.0'
3
+ VERSION = '1.6.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hcl-checker
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcelo Castellani
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-08-21 00:00:00.000000000 Z
11
+ date: 2021-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,84 +16,84 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 2.1.4
19
+ version: 2.2.10
20
20
  type: :development
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: 2.1.4
26
+ version: 2.2.10
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: racc
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 12.3.3
33
+ version: 1.5.0
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 12.3.3
40
+ version: 1.5.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: 12.3.3
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: '3.0'
54
+ version: 12.3.3
55
55
  - !ruby/object:Gem::Dependency
56
- name: racc
56
+ name: rex
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 1.5.0
61
+ version: 2.0.12
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: 1.5.0
68
+ version: 2.0.12
69
69
  - !ruby/object:Gem::Dependency
70
- name: rex
70
+ name: rexical
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: 2.0.12
75
+ version: 1.0.7
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: 2.0.12
82
+ version: 1.0.7
83
83
  - !ruby/object:Gem::Dependency
84
- name: rexical
84
+ name: rspec
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 1.0.7
89
+ version: '3.0'
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: 1.0.7
96
+ version: '3.0'
97
97
  description: Hashicorp Configuration Language parser and checker for Ruby
98
98
  email:
99
99
  - marcelo@linux.com
@@ -103,6 +103,7 @@ extra_rdoc_files: []
103
103
  files:
104
104
  - ".gitignore"
105
105
  - ".rspec"
106
+ - ".rubocop.yml"
106
107
  - ".travis.yml"
107
108
  - CODE_OF_CONDUCT.md
108
109
  - Gemfile
@@ -116,21 +117,17 @@ files:
116
117
  - bin/setup
117
118
  - hcl-checker.gemspec
118
119
  - lib/hcl/checker.rb
120
+ - lib/hcl/checker/lexer.rb
121
+ - lib/hcl/checker/parser.rb
119
122
  - lib/hcl/checker/version.rb
120
- - lib/hcl/lexer.rb
121
- - lib/hcl/parser.rb
122
123
  homepage: https://github.com/mfcastellani/hcl-checker
123
124
  licenses:
124
125
  - MIT
125
126
  metadata: {}
126
- post_install_message: |2
127
-
128
- Hello, me again. After several contacts of users of this gem requesting that
129
- the module name be kept only as HCL, instead of HCL1 and HCL2, I went back and
130
- kept it. Sorry for those who eventually switched from HCL to HCL1. And thanks to
131
- everyone who got in touch justifying why my change would be bad for all users.
132
-
133
- Thank you :)
127
+ post_install_message: "\nHello, me again. This version fixes: \n\n- Add support for
128
+ multiple elements of the same type\n- Fix bug where empty objects and empty lists
129
+ were being parsed as nil\n- Update bundler version\n- Update nokogiri version\n\nThank
130
+ you :)\n"
134
131
  rdoc_options: []
135
132
  require_paths:
136
133
  - lib
@@ -145,8 +142,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
142
  - !ruby/object:Gem::Version
146
143
  version: '0'
147
144
  requirements: []
148
- rubygems_version: 3.0.8
149
- signing_key:
145
+ rubygems_version: 3.2.3
146
+ signing_key:
150
147
  specification_version: 4
151
148
  summary: Hashicorp Configuration Language parser for Ruby
152
149
  test_files: []