hocon 1.1.3 → 1.3.1

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.
Files changed (62) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +35 -1
  3. data/HISTORY.md +2140 -0
  4. data/README.md +125 -0
  5. data/bin/hocon +5 -0
  6. data/lib/hocon/cli.rb +225 -0
  7. data/lib/hocon/config_render_options.rb +3 -2
  8. data/lib/hocon/impl/abstract_config_value.rb +7 -10
  9. data/lib/hocon/impl/config_delayed_merge.rb +1 -1
  10. data/lib/hocon/impl/config_impl.rb +18 -0
  11. data/lib/hocon/impl/config_node_object.rb +1 -2
  12. data/lib/hocon/impl/config_node_root.rb +1 -1
  13. data/lib/hocon/impl/parseable.rb +6 -5
  14. data/lib/hocon/impl/simple_config_document.rb +1 -1
  15. data/lib/hocon/impl/simple_config_origin.rb +8 -2
  16. data/lib/hocon/version.rb +5 -0
  17. metadata +9 -50
  18. data/spec/fixtures/hocon/by_extension/cat.conf +0 -4
  19. data/spec/fixtures/hocon/by_extension/cat.test +0 -4
  20. data/spec/fixtures/hocon/by_extension/cat.test-json +0 -3
  21. data/spec/fixtures/hocon/with_substitution/subst.conf +0 -2
  22. data/spec/fixtures/parse_render/example1/input.conf +0 -21
  23. data/spec/fixtures/parse_render/example1/output.conf +0 -26
  24. data/spec/fixtures/parse_render/example1/output_nocomments.conf +0 -17
  25. data/spec/fixtures/parse_render/example2/input.conf +0 -10
  26. data/spec/fixtures/parse_render/example2/output.conf +0 -17
  27. data/spec/fixtures/parse_render/example2/output_nocomments.conf +0 -17
  28. data/spec/fixtures/parse_render/example3/input.conf +0 -2
  29. data/spec/fixtures/parse_render/example3/output.conf +0 -2
  30. data/spec/fixtures/parse_render/example4/input.json +0 -6
  31. data/spec/fixtures/parse_render/example4/output.conf +0 -6
  32. data/spec/fixtures/test_utils/resources/bom.conf +0 -2
  33. data/spec/fixtures/test_utils/resources/cycle.conf +0 -1
  34. data/spec/fixtures/test_utils/resources/file-include.conf +0 -5
  35. data/spec/fixtures/test_utils/resources/include-from-list.conf +0 -4
  36. data/spec/fixtures/test_utils/resources/subdir/bar.conf +0 -1
  37. data/spec/fixtures/test_utils/resources/subdir/baz.conf +0 -1
  38. data/spec/fixtures/test_utils/resources/subdir/foo.conf +0 -5
  39. data/spec/fixtures/test_utils/resources/test01.conf +0 -80
  40. data/spec/fixtures/test_utils/resources/test01.json +0 -4
  41. data/spec/fixtures/test_utils/resources/test03.conf +0 -36
  42. data/spec/fixtures/test_utils/resources/utf16.conf +0 -0
  43. data/spec/fixtures/test_utils/resources/utf8.conf +0 -2
  44. data/spec/fixtures/test_utils/resources//341/232/240/341/233/207/341/232/273.conf +0 -2
  45. data/spec/spec_helper.rb +0 -43
  46. data/spec/test_utils.rb +0 -757
  47. data/spec/unit/hocon/README.md +0 -7
  48. data/spec/unit/hocon/hocon_spec.rb +0 -114
  49. data/spec/unit/typesafe/config/README.md +0 -4
  50. data/spec/unit/typesafe/config/concatenation_spec.rb +0 -417
  51. data/spec/unit/typesafe/config/conf_parser_spec.rb +0 -832
  52. data/spec/unit/typesafe/config/config_document_parser_spec.rb +0 -494
  53. data/spec/unit/typesafe/config/config_document_spec.rb +0 -576
  54. data/spec/unit/typesafe/config/config_factory_spec.rb +0 -120
  55. data/spec/unit/typesafe/config/config_node_spec.rb +0 -552
  56. data/spec/unit/typesafe/config/config_value_factory_spec.rb +0 -85
  57. data/spec/unit/typesafe/config/config_value_spec.rb +0 -935
  58. data/spec/unit/typesafe/config/path_spec.rb +0 -261
  59. data/spec/unit/typesafe/config/public_api_spec.rb +0 -520
  60. data/spec/unit/typesafe/config/simple_config_spec.rb +0 -112
  61. data/spec/unit/typesafe/config/token_spec.rb +0 -188
  62. data/spec/unit/typesafe/config/tokenizer_spec.rb +0 -801
@@ -206,7 +206,6 @@ class Hocon::Impl::ConfigNodeObject
206
206
  new_nodes = []
207
207
  new_nodes += indentation
208
208
  new_nodes.push(desired_path.first)
209
- new_nodes.push(Hocon::Impl::ConfigNodeSingleToken.new(Tokens.new_ignored_whitespace(nil, ' ')))
210
209
  new_nodes.push(Hocon::Impl::ConfigNodeSingleToken.new(Tokens::COLON))
211
210
  new_nodes.push(Hocon::Impl::ConfigNodeSingleToken.new(Tokens.new_ignored_whitespace(nil, ' ')))
212
211
 
@@ -281,4 +280,4 @@ class Hocon::Impl::ConfigNodeObject
281
280
  path = Hocon::Impl::PathParser.parse_path_node(desired_path, flavor).value
282
281
  change_value_on_path(path, nil, flavor)
283
282
  end
284
- end
283
+ end
@@ -57,4 +57,4 @@ class Hocon::Impl::ConfigNodeRoot
57
57
  end
58
58
  raise Hocon::ConfigError::ConfigBugOrBrokenError, "ConfigNodeRoot did not contain a value"
59
59
  end
60
- end
60
+ end
@@ -35,10 +35,11 @@ class Hocon::Impl::Parseable
35
35
  end
36
36
  end
37
37
 
38
- # Changed this to a class variable because the upstream library seems to use it
39
- # as a global way of keeping track of how many files have been included, to
40
- # avoid cycles
41
- @@parse_stack= []
38
+ # The upstream library seems to use this as a global way of keeping track of
39
+ # how many files have been included, to avoid cycles
40
+ def self.parse_stack
41
+ Thread.current[:hocon_parse_stack] ||= []
42
+ end
42
43
 
43
44
  MAX_INCLUDE_DEPTH = 50
44
45
 
@@ -134,7 +135,7 @@ class Hocon::Impl::Parseable
134
135
  if (base_options.nil?)
135
136
  base_options = options
136
137
  end
137
- stack = @@parse_stack
138
+ stack = self.class.parse_stack
138
139
  if stack.length >= MAX_INCLUDE_DEPTH
139
140
  raise Hocon::ConfigError::ConfigParseError.new(@initial_origin,
140
141
  "include statements nested more than #{MAX_INCLUDE_DEPTH} times, " +
@@ -48,4 +48,4 @@ class Hocon::Impl::SimpleConfigDocument
48
48
  def hash
49
49
  render.hash
50
50
  end
51
- end
51
+ end
@@ -23,6 +23,9 @@ class Hocon::Impl::SimpleConfigOrigin
23
23
  @line_number = line_number
24
24
  @end_line_number = end_line_number
25
25
  @origin_type = origin_type
26
+
27
+ # TODO: Currently ruby hocon does not support URLs, and so this variable
28
+ # is not actually a URL/URI, but a string
26
29
  @url_or_nil = url_or_nil
27
30
  @resource_or_nil = resource_or_nil
28
31
  @comments_or_nil = comments_or_nil
@@ -39,10 +42,9 @@ class Hocon::Impl::SimpleConfigOrigin
39
42
  end
40
43
 
41
44
  def self.new_file(file_path)
42
- url = URI.join('file:///', file_path)
43
45
  self.new(file_path, -1, -1,
44
46
  OriginType::FILE,
45
- url, nil, nil)
47
+ file_path, nil, nil)
46
48
  end
47
49
 
48
50
  # NOTE: not porting `new_url` because we're not going to support URLs for now
@@ -153,6 +155,10 @@ class Hocon::Impl::SimpleConfigOrigin
153
155
  end
154
156
 
155
157
  def filename
158
+ # TODO because we don't support URLs, this function's URL handling
159
+ # is completely pointless. It will only return _description (a string that
160
+ # is the file path) or nil.
161
+ # It should be cleaned up
156
162
  if origin_type == OriginType::FILE
157
163
  _description
158
164
  elsif ! url_or_nil.nil?
@@ -0,0 +1,5 @@
1
+ module Hocon
2
+ module Version
3
+ STRING = '1.3.1'
4
+ end
5
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hocon
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Price
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2016-10-12 00:00:00.000000000 Z
16
+ date: 2016-10-27 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: bundler
@@ -46,14 +46,18 @@ dependencies:
46
46
  description: "== A port of the Java {Typesafe Config}[https://github.com/typesafehub/config]
47
47
  library to Ruby"
48
48
  email: chris@puppetlabs.com
49
- executables: []
49
+ executables:
50
+ - hocon
50
51
  extensions: []
51
52
  extra_rdoc_files: []
52
53
  files:
53
54
  - CHANGELOG.md
55
+ - HISTORY.md
54
56
  - LICENSE
55
57
  - README.md
58
+ - bin/hocon
56
59
  - lib/hocon.rb
60
+ - lib/hocon/cli.rb
57
61
  - lib/hocon/config.rb
58
62
  - lib/hocon/config_error.rb
59
63
  - lib/hocon/config_factory.rb
@@ -139,51 +143,7 @@ files:
139
143
  - lib/hocon/parser/config_document.rb
140
144
  - lib/hocon/parser/config_document_factory.rb
141
145
  - lib/hocon/parser/config_node.rb
142
- - spec/fixtures/hocon/by_extension/cat.conf
143
- - spec/fixtures/hocon/by_extension/cat.test
144
- - spec/fixtures/hocon/by_extension/cat.test-json
145
- - spec/fixtures/hocon/with_substitution/subst.conf
146
- - spec/fixtures/parse_render/example1/input.conf
147
- - spec/fixtures/parse_render/example1/output.conf
148
- - spec/fixtures/parse_render/example1/output_nocomments.conf
149
- - spec/fixtures/parse_render/example2/input.conf
150
- - spec/fixtures/parse_render/example2/output.conf
151
- - spec/fixtures/parse_render/example2/output_nocomments.conf
152
- - spec/fixtures/parse_render/example3/input.conf
153
- - spec/fixtures/parse_render/example3/output.conf
154
- - spec/fixtures/parse_render/example4/input.json
155
- - spec/fixtures/parse_render/example4/output.conf
156
- - spec/fixtures/test_utils/resources/bom.conf
157
- - spec/fixtures/test_utils/resources/cycle.conf
158
- - spec/fixtures/test_utils/resources/file-include.conf
159
- - spec/fixtures/test_utils/resources/include-from-list.conf
160
- - spec/fixtures/test_utils/resources/subdir/bar.conf
161
- - spec/fixtures/test_utils/resources/subdir/baz.conf
162
- - spec/fixtures/test_utils/resources/subdir/foo.conf
163
- - spec/fixtures/test_utils/resources/test01.conf
164
- - spec/fixtures/test_utils/resources/test01.json
165
- - spec/fixtures/test_utils/resources/test03.conf
166
- - spec/fixtures/test_utils/resources/utf16.conf
167
- - spec/fixtures/test_utils/resources/utf8.conf
168
- - spec/fixtures/test_utils/resources/ᚠᛇᚻ.conf
169
- - spec/spec_helper.rb
170
- - spec/test_utils.rb
171
- - spec/unit/hocon/README.md
172
- - spec/unit/hocon/hocon_spec.rb
173
- - spec/unit/typesafe/config/README.md
174
- - spec/unit/typesafe/config/concatenation_spec.rb
175
- - spec/unit/typesafe/config/conf_parser_spec.rb
176
- - spec/unit/typesafe/config/config_document_parser_spec.rb
177
- - spec/unit/typesafe/config/config_document_spec.rb
178
- - spec/unit/typesafe/config/config_factory_spec.rb
179
- - spec/unit/typesafe/config/config_node_spec.rb
180
- - spec/unit/typesafe/config/config_value_factory_spec.rb
181
- - spec/unit/typesafe/config/config_value_spec.rb
182
- - spec/unit/typesafe/config/path_spec.rb
183
- - spec/unit/typesafe/config/public_api_spec.rb
184
- - spec/unit/typesafe/config/simple_config_spec.rb
185
- - spec/unit/typesafe/config/token_spec.rb
186
- - spec/unit/typesafe/config/tokenizer_spec.rb
146
+ - lib/hocon/version.rb
187
147
  homepage: https://github.com/puppetlabs/ruby-hocon
188
148
  licenses:
189
149
  - Apache License, v2
@@ -203,8 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
203
163
  - !ruby/object:Gem::Version
204
164
  version: '0'
205
165
  requirements: []
206
- rubyforge_project:
207
- rubygems_version: 2.2.5
166
+ rubygems_version: 3.0.6
208
167
  signing_key:
209
168
  specification_version: 4
210
169
  summary: HOCON Config Library
@@ -1,4 +0,0 @@
1
- # Comment
2
- {
3
- "meow": "cats"
4
- }
@@ -1,4 +0,0 @@
1
- # Comment
2
- {
3
- "meow": "cats"
4
- }
@@ -1,3 +0,0 @@
1
- {
2
- "meow": "cats"
3
- }
@@ -1,2 +0,0 @@
1
- a: true
2
- b: ${a}
@@ -1,21 +0,0 @@
1
- # These are some opening comments
2
- # These are some additional opening comments
3
- foo.bar {
4
- // the baz is is blah blah
5
- baz = 42
6
- boom = [1, 2, {derp : duh }, 4]
7
- empty = []
8
-
9
- # abracadabra setting
10
- abracadabra = "hi"
11
- }
12
-
13
- // as for the yippee
14
- # it entails some things
15
- foo.bar.yahoo = "yippee"
16
-
17
- # truthy
18
- foo.bar.truthy = true
19
-
20
- # falsy
21
- foo.bar.falsy = false
@@ -1,26 +0,0 @@
1
- foo {
2
- # These are some opening comments
3
- # These are some additional opening comments
4
- bar {
5
- # falsy
6
- falsy=false
7
- # truthy
8
- truthy=true
9
- # as for the yippee
10
- # it entails some things
11
- yahoo=yippee
12
- # the baz is is blah blah
13
- baz=42
14
- boom=[
15
- 1,
16
- 2,
17
- {
18
- derp=duh
19
- },
20
- 4
21
- ]
22
- empty=[]
23
- # abracadabra setting
24
- abracadabra=hi
25
- }
26
- }
@@ -1,17 +0,0 @@
1
- foo {
2
- bar {
3
- falsy=false
4
- truthy=true
5
- yahoo=yippee
6
- baz=42
7
- boom=[
8
- 1,
9
- 2,
10
- {
11
- derp=duh
12
- },
13
- 4
14
- ]
15
- abracadabra=hi
16
- }
17
- }
@@ -1,10 +0,0 @@
1
- jruby-puppet: {
2
- jruby-pools: [{environment: production}]
3
- load-path: [/usr/lib/ruby/site_ruby/1.8, /usr/lib/ruby/site_ruby/1.8]
4
- master-conf-dir: /etc/puppet
5
- master-var-dir: /var/lib/puppet
6
- }
7
-
8
- webserver: {
9
- host: 1.2.3.4
10
- }
@@ -1,17 +0,0 @@
1
- jruby-puppet {
2
- jruby-pools=[
3
- {
4
- environment=production
5
- }
6
- ]
7
- load-path=[
8
- "/usr/lib/ruby/site_ruby/1.8",
9
- "/usr/lib/ruby/site_ruby/1.8"
10
- ]
11
- master-conf-dir="/etc/puppet"
12
- master-var-dir="/var/lib/puppet"
13
- }
14
-
15
- webserver {
16
- host="1.2.3.4"
17
- }
@@ -1,17 +0,0 @@
1
- jruby-puppet {
2
- jruby-pools=[
3
- {
4
- environment=production
5
- }
6
- ]
7
- load-path=[
8
- "/usr/lib/ruby/site_ruby/1.8",
9
- "/usr/lib/ruby/site_ruby/1.8"
10
- ]
11
- master-conf-dir="/etc/puppet"
12
- master-var-dir="/var/lib/puppet"
13
- }
14
-
15
- webserver {
16
- host="1.2.3.4"
17
- }
@@ -1,2 +0,0 @@
1
- a: true
2
- b: ${a}
@@ -1,2 +0,0 @@
1
- a=true
2
- b=true
@@ -1,6 +0,0 @@
1
- {
2
- "kermit": "frog",
3
- "miss": "piggy",
4
- "bert": "ernie",
5
- "janice": "guitar"
6
- }
@@ -1,6 +0,0 @@
1
- {
2
- "kermit"="frog",
3
- "miss"="piggy",
4
- "bert"="ernie",
5
- "janice"="guitar"
6
- }
@@ -1,2 +0,0 @@
1
- #
2
- foo = bar
@@ -1 +0,0 @@
1
- include "cycle.conf"
@@ -1,5 +0,0 @@
1
- base=41
2
- # included without file() in a subdir
3
- include "subdir/foo.conf"
4
- # included using file() in a subdir
5
- include file("subdir/baz.conf")
@@ -1,4 +0,0 @@
1
- // The {} inside the [] is needed because
2
- // just [ include ] means an array with the
3
- // string "include" in it.
4
- a = [ { include "test01.conf" } ]
@@ -1,5 +0,0 @@
1
- foo=42
2
- # included without file()
3
- include "bar.conf"
4
- # included using file()
5
- include file("bar-file.conf")
@@ -1,80 +0,0 @@
1
- {
2
- "ints" : {
3
- "fortyTwo" : 42,
4
- "fortyTwoAgain" : ${ints.fortyTwo}
5
- },
6
-
7
- "floats" : {
8
- "fortyTwoPointOne" : 42.1,
9
- "fortyTwoPointOneAgain" : ${floats.fortyTwoPointOne}
10
- },
11
-
12
- "strings" : {
13
- "abcd" : "abcd",
14
- "abcdAgain" : ${strings.a}${strings.b}${strings.c}${strings.d},
15
- "a" : "a",
16
- "b" : "b",
17
- "c" : "c",
18
- "d" : "d",
19
- "concatenated" : null bar 42 baz true 3.14 hi,
20
- "double" : "3.14",
21
- "number" : "57",
22
- "null" : "null",
23
- "true" : "true",
24
- "yes" : "yes",
25
- "false" : "false",
26
- "no" : "no"
27
- },
28
-
29
- "arrays" : {
30
- "empty" : [],
31
- "ofInt" : [1, 2, 3],
32
- "ofString" : [ ${strings.a}, ${strings.b}, ${strings.c} ],
33
- "ofDouble" : [3.14, 4.14, 5.14],
34
- "ofNull" : [null, null, null],
35
- "ofBoolean" : [true, false],
36
- "ofArray" : [${arrays.ofString}, ${arrays.ofString}, ${arrays.ofString}],
37
- "ofObject" : [${ints}, ${booleans}, ${strings}],
38
- "firstElementNotASubst" : [ "a", ${strings.b} ]
39
- },
40
-
41
- "booleans" : {
42
- "true" : true,
43
- "trueAgain" : ${booleans.true},
44
- "false" : false,
45
- "falseAgain" : ${booleans.false}
46
- },
47
-
48
- "nulls" : {
49
- "null" : null,
50
- "nullAgain" : ${nulls.null}
51
- },
52
-
53
- "durations" : {
54
- "second" : 1s,
55
- "secondsList" : [1s,2seconds,3 s, 4000],
56
- "secondAsNumber" : 1000,
57
- "halfSecond" : 0.5s,
58
- "millis" : 1 milli,
59
- "micros" : 2000 micros
60
- },
61
-
62
- "memsizes" : {
63
- "meg" : 1M,
64
- "megsList" : [1M, 1024K, 1048576],
65
- "megAsNumber" : 1048576,
66
- "halfMeg" : 0.5M
67
- },
68
-
69
- "system" : {
70
- "javaversion" : ${?java.version},
71
- "userhome" : ${?user.home},
72
- "home" : ${?HOME},
73
- "pwd" : ${?PWD},
74
- "shell" : ${?SHELL},
75
- "lang" : ${?LANG},
76
- "path" : ${?PATH},
77
- "not_here" : ${?NOT_HERE},
78
- "concatenated" : Your Java version is ${?system.javaversion} and your user.home is ${?system.userhome}
79
- }
80
- }