hcl_parser 0.1.0 → 0.2.2

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: f8205c8bf81717770d753d6d0965a0892416c8b0bc6c84b7dd08d4ddfe19116a
4
- data.tar.gz: 9549a9834df1a02fe39a91bde951c16ab5e14fe4eed88ab2b0e0352dba014a81
3
+ metadata.gz: c68e7a4474d1b96b0da7990388f077728a3c11ae198dae2a6f6863cc8c9abc0c
4
+ data.tar.gz: 37a31807784ddf3d81472d9834da1b41a9eb337bdbebfd2e273e41deac457986
5
5
  SHA512:
6
- metadata.gz: adc3a6ea90ade6a327eff78da11219661876ac59195e803ad1803752e880e81b774454b68521d0a3232c7147280c1728881b1ae3a9229f2c29bbc571320d9f62
7
- data.tar.gz: 72b869125b2700a4931c33bb65fcf0134718f7c5a475d2582e12b92837c73c0c32c518469b09bb6d9188954dd28676a9321040c505b9c01d4373b0f84ce7b47a
6
+ metadata.gz: 4f1870f3f238bdb0074ff6718945697a44bfe5390231b684598202fe4b47633af565fa5e025e6813c63600af248066d84a0e209163a6184193e66a95e668bca8
7
+ data.tar.gz: 97c932c7b10ed1afd4eee68afb94b3cf193c766efe9016606d40463456f0c93fe133ac5e2320d7e889d0f5f5d8493ac2d9b8ac85d1bd33f2a00d5cce307cdb6a
data/.gitignore CHANGED
@@ -6,6 +6,6 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
-
9
+ /Gemfile.lock
10
10
  # rspec failure tracking
11
11
  .rspec_status
data/CHANGELOG.md ADDED
@@ -0,0 +1,16 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/), even before v1.0.
5
+
6
+ ## [0.2.2] - 2022-08-26
7
+ - [#5](https://github.com/boltops-tools/hcl_parser/pull/5) handle single line variable
8
+
9
+ ## [0.2.1] - 2021-11-28
10
+ - [#2](https://github.com/boltops-tools/hcl_parser/pull/2) improve complex type parser: handle any
11
+
12
+ ## [0.2.0] - 2021-11-25
13
+ - [#1](https://github.com/boltops-tools/hcl_parser/pull/1) Complex types
14
+
15
+ ## [0.1.0]
16
+ * Initial release
@@ -17,6 +17,76 @@ module HclParser
17
17
  def code
18
18
  return @code if @code
19
19
  @code = fix_quotes(@raw)
20
+ @code = rewrite_complex_types(@code)
21
+ end
22
+
23
+ def rewrite_complex_types(raw)
24
+ lines = raw.split("\n")
25
+ results = []
26
+
27
+ variable_start_found = false
28
+ variable_start_index = nil
29
+ variable_end_index = nil
30
+ rewrite_lines = false
31
+
32
+ lines.each_with_index do |l,i|
33
+ # We dont rewrite lines until the next line/iteration
34
+ # This is actually the next iteration since we set rewrite_lines = true previously
35
+ # in rewrite_lines = complex_type_lines?(lookahead_lines)
36
+ if rewrite_lines
37
+ if complex_type_line?(l)
38
+ # Doesnt matter what the default value is as long as there is one
39
+ # Doing this in case the default value spans multiple lines
40
+ results << ' default = "any"'
41
+ elsif simple_default_assignment?(l)
42
+ results << l
43
+ else
44
+ results << "# #{l}"
45
+ end
46
+ else
47
+ results << l
48
+ end
49
+ # End of logic in the next iteration
50
+
51
+ # Start of logic in the current iteration
52
+ variable_start_found = l.match(/^variable /)
53
+ if variable_start_found
54
+ variable_start_index = i
55
+ variable_end_index = variable_end_index(lines, variable_start_index)
56
+ lookahead_lines = lines[variable_start_index..variable_end_index]
57
+ rewrite_lines = complex_type_lines?(lookahead_lines)
58
+ end
59
+
60
+ # Disable rewriting before reaching the end of the variable definition so: i + 1
61
+ if variable_end_index == i + 1
62
+ variable_start_index = nil
63
+ variable_end_index = nil
64
+ rewrite_lines = false
65
+ end
66
+ end
67
+
68
+ results.join("\n")
69
+ end
70
+
71
+ def simple_default_assignment?(line)
72
+ line.match(/default\s*=\s*("|'|null)/)
73
+ end
74
+
75
+ def complex_type_lines?(lines)
76
+ !!lines.find do |l|
77
+ complex_type_line?(l)
78
+ end
79
+ end
80
+
81
+ def complex_type_line?(l)
82
+ l.match(/object\(/) || l.match(/=\s*"any/)
83
+ end
84
+
85
+ def variable_end_index(lines, variable_start_index)
86
+ lines.each_with_index do |l,i|
87
+ next unless i >= variable_start_index
88
+ return i if l.match(/^}/) || l.match(/{\s*}/)
89
+ end
20
90
  end
21
91
 
22
92
  def empty?
@@ -1,3 +1,3 @@
1
1
  module HclParser
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hcl_parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tung Nguyen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-05-26 00:00:00.000000000 Z
11
+ date: 2022-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rhcl
@@ -47,8 +47,8 @@ extra_rdoc_files: []
47
47
  files:
48
48
  - ".gitignore"
49
49
  - ".rspec"
50
+ - CHANGELOG.md
50
51
  - Gemfile
51
- - Gemfile.lock
52
52
  - LICENSE.txt
53
53
  - README.md
54
54
  - Rakefile
@@ -78,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
78
  - !ruby/object:Gem::Version
79
79
  version: '0'
80
80
  requirements: []
81
- rubygems_version: 3.1.2
81
+ rubygems_version: 3.3.21
82
82
  signing_key:
83
83
  specification_version: 4
84
84
  summary: HCL Variables Parser
data/Gemfile.lock DELETED
@@ -1,38 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- hcl_parser (0.1.0)
5
- rhcl
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- deep_merge (1.2.1)
11
- diff-lcs (1.3)
12
- rake (12.3.3)
13
- rhcl (0.1.0)
14
- deep_merge
15
- rspec (3.9.0)
16
- rspec-core (~> 3.9.0)
17
- rspec-expectations (~> 3.9.0)
18
- rspec-mocks (~> 3.9.0)
19
- rspec-core (3.9.2)
20
- rspec-support (~> 3.9.3)
21
- rspec-expectations (3.9.2)
22
- diff-lcs (>= 1.2.0, < 2.0)
23
- rspec-support (~> 3.9.0)
24
- rspec-mocks (3.9.1)
25
- diff-lcs (>= 1.2.0, < 2.0)
26
- rspec-support (~> 3.9.0)
27
- rspec-support (3.9.3)
28
-
29
- PLATFORMS
30
- ruby
31
-
32
- DEPENDENCIES
33
- hcl_parser!
34
- rake (~> 12.0)
35
- rspec (~> 3.0)
36
-
37
- BUNDLED WITH
38
- 2.1.4