hocon 0.0.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 (39) hide show
  1. data/LICENSE +202 -0
  2. data/README.md +19 -0
  3. data/lib/hocon.rb +2 -0
  4. data/lib/hocon/config_error.rb +12 -0
  5. data/lib/hocon/config_factory.rb +9 -0
  6. data/lib/hocon/config_object.rb +4 -0
  7. data/lib/hocon/config_parse_options.rb +53 -0
  8. data/lib/hocon/config_render_options.rb +46 -0
  9. data/lib/hocon/config_syntax.rb +7 -0
  10. data/lib/hocon/config_value_type.rb +26 -0
  11. data/lib/hocon/impl.rb +5 -0
  12. data/lib/hocon/impl/abstract_config_object.rb +64 -0
  13. data/lib/hocon/impl/abstract_config_value.rb +130 -0
  14. data/lib/hocon/impl/config_concatenation.rb +136 -0
  15. data/lib/hocon/impl/config_float.rb +9 -0
  16. data/lib/hocon/impl/config_impl.rb +10 -0
  17. data/lib/hocon/impl/config_impl_util.rb +78 -0
  18. data/lib/hocon/impl/config_int.rb +31 -0
  19. data/lib/hocon/impl/config_number.rb +27 -0
  20. data/lib/hocon/impl/config_string.rb +37 -0
  21. data/lib/hocon/impl/full_includer.rb +4 -0
  22. data/lib/hocon/impl/origin_type.rb +9 -0
  23. data/lib/hocon/impl/parseable.rb +151 -0
  24. data/lib/hocon/impl/parser.rb +882 -0
  25. data/lib/hocon/impl/path.rb +59 -0
  26. data/lib/hocon/impl/path_builder.rb +36 -0
  27. data/lib/hocon/impl/resolve_status.rb +18 -0
  28. data/lib/hocon/impl/simple_config.rb +11 -0
  29. data/lib/hocon/impl/simple_config_list.rb +70 -0
  30. data/lib/hocon/impl/simple_config_object.rb +178 -0
  31. data/lib/hocon/impl/simple_config_origin.rb +174 -0
  32. data/lib/hocon/impl/simple_include_context.rb +7 -0
  33. data/lib/hocon/impl/simple_includer.rb +19 -0
  34. data/lib/hocon/impl/token.rb +32 -0
  35. data/lib/hocon/impl/token_type.rb +42 -0
  36. data/lib/hocon/impl/tokenizer.rb +370 -0
  37. data/lib/hocon/impl/tokens.rb +157 -0
  38. data/lib/hocon/impl/unmergeable.rb +4 -0
  39. metadata +84 -0
@@ -0,0 +1,157 @@
1
+ require 'hocon/impl'
2
+ require 'hocon/impl/token'
3
+ require 'hocon/impl/token_type'
4
+ require 'hocon/impl/config_number'
5
+ require 'hocon/impl/config_string'
6
+
7
+ # FIXME the way the subclasses of Token are private with static isFoo and accessors is kind of ridiculous.
8
+ class Hocon::Impl::Tokens
9
+ Token = Hocon::Impl::Token
10
+ TokenType = Hocon::Impl::TokenType
11
+ ConfigNumber = Hocon::Impl::ConfigNumber
12
+ ConfigString = Hocon::Impl::ConfigString
13
+
14
+ START = Token.new_without_origin(TokenType::START, "start of file")
15
+ EOF = Token.new_without_origin(TokenType::EOF, "end of file")
16
+ COMMA = Token.new_without_origin(TokenType::COMMA, "','")
17
+ EQUALS = Token.new_without_origin(TokenType::EQUALS, "'='")
18
+ COLON = Token.new_without_origin(TokenType::COLON, "':'")
19
+ OPEN_CURLY = Token.new_without_origin(TokenType::OPEN_CURLY, "'{'")
20
+ CLOSE_CURLY = Token.new_without_origin(TokenType::CLOSE_CURLY, "'}'")
21
+ OPEN_SQUARE = Token.new_without_origin(TokenType::OPEN_SQUARE, "'['")
22
+ CLOSE_SQUARE = Token.new_without_origin(TokenType::CLOSE_SQUARE, "']'")
23
+ PLUS_EQUALS = Token.new_without_origin(TokenType::PLUS_EQUALS, "'+='")
24
+
25
+ class Comment < Token
26
+ def initialize(origin, text)
27
+ super(TokenType::COMMENT, origin)
28
+ @text = text
29
+ end
30
+ attr_reader :text
31
+ end
32
+
33
+ # This is not a Value, because it requires special processing
34
+ class Substitution < Token
35
+ def initialize(origin, optional, expression)
36
+ super(TokenType::SUBSTITUTION, origin)
37
+ @optional = optional
38
+ @value = expression
39
+ end
40
+ end
41
+
42
+ class UnquotedText < Token
43
+ def initialize(origin, s)
44
+ super(TokenType::UNQUOTED_TEXT, origin)
45
+ @value = s
46
+ end
47
+ attr_reader :value
48
+
49
+ def to_s
50
+ "'#{value}'"
51
+ end
52
+ end
53
+
54
+ class Value < Token
55
+ def initialize(value)
56
+ super(TokenType::VALUE, value.origin)
57
+ @value = value
58
+ end
59
+ attr_reader :value
60
+
61
+ def to_s
62
+ "'#{value.unwrapped}' (#{Hocon::ConfigValueType.name(value.value_type)})"
63
+ end
64
+ end
65
+
66
+ class Line < Token
67
+ def initialize(origin)
68
+ super(TokenType::NEWLINE, origin)
69
+ end
70
+ end
71
+
72
+ class Problem < Token
73
+ def initialize(origin, what, message, suggest_quotes, cause)
74
+ super(TokenType::PROBLEM, origin)
75
+ @what = what
76
+ @message = message
77
+ @suggest_quotes = suggest_quotes
78
+ @cause = cause
79
+ end
80
+ end
81
+
82
+ def self.new_line(origin)
83
+ Line.new(origin)
84
+ end
85
+
86
+ def self.new_comment(origin, text)
87
+ Comment.new(origin, text)
88
+ end
89
+
90
+ def self.new_unquoted_text(origin, s)
91
+ UnquotedText.new(origin, s)
92
+ end
93
+
94
+ def self.new_value(value)
95
+ Value.new(value)
96
+ end
97
+
98
+ def self.new_string(origin, value)
99
+ new_value(ConfigString.new(origin, value))
100
+ end
101
+
102
+ def self.new_long(origin, value, original_text)
103
+ new_value(ConfigNumber.new_number(origin, value, original_text))
104
+ end
105
+
106
+ def self.comment?(t)
107
+ t.is_a?(Comment)
108
+ end
109
+
110
+ def self.comment_text(token)
111
+ if comment?(token)
112
+ token.text
113
+ else
114
+ raise ConfigBugError, "tried to get comment text from #{token}"
115
+ end
116
+ end
117
+
118
+ def self.substitution?(t)
119
+ t.is_a?(Substitution)
120
+ end
121
+
122
+ def self.unquoted_text?(token)
123
+ token.is_a?(UnquotedText)
124
+ end
125
+
126
+ def self.unquoted_text(token)
127
+ if unquoted_text?(token)
128
+ token.value
129
+ else
130
+ raise ConfigBugError, "tried to get unquoted text from #{token}"
131
+ end
132
+ end
133
+
134
+ def self.value?(token)
135
+ token.is_a?(Value)
136
+ end
137
+
138
+ def self.value(token)
139
+ if token.is_a?(Value)
140
+ token.value
141
+ else
142
+ raise ConfigBugError, "tried to get value of non-value token #{token}"
143
+ end
144
+ end
145
+
146
+ def self.value_with_type?(t, value_type)
147
+ value?(t) && (value(t).value_type == value_type)
148
+ end
149
+
150
+ def self.newline?(t)
151
+ t.is_a?(Line)
152
+ end
153
+
154
+ def self.problem?(t)
155
+ t.is_a?(Problem)
156
+ end
157
+ end
@@ -0,0 +1,4 @@
1
+ require 'hocon/impl'
2
+
3
+ module Hocon::Impl::Unmergeable
4
+ end
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hocon
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Chris Price
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-03-16 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: == A port of the Java {Typesafe Config}[https://github.com/typesafehub/config]
15
+ library to Ruby
16
+ email: chris@puppetlabs.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - lib/hocon.rb
22
+ - lib/hocon/config_object.rb
23
+ - lib/hocon/config_error.rb
24
+ - lib/hocon/impl/simple_includer.rb
25
+ - lib/hocon/impl/config_number.rb
26
+ - lib/hocon/impl/simple_config.rb
27
+ - lib/hocon/impl/config_int.rb
28
+ - lib/hocon/impl/resolve_status.rb
29
+ - lib/hocon/impl/simple_config_origin.rb
30
+ - lib/hocon/impl/token.rb
31
+ - lib/hocon/impl/config_string.rb
32
+ - lib/hocon/impl/config_float.rb
33
+ - lib/hocon/impl/full_includer.rb
34
+ - lib/hocon/impl/parser.rb
35
+ - lib/hocon/impl/tokens.rb
36
+ - lib/hocon/impl/tokenizer.rb
37
+ - lib/hocon/impl/abstract_config_object.rb
38
+ - lib/hocon/impl/simple_include_context.rb
39
+ - lib/hocon/impl/token_type.rb
40
+ - lib/hocon/impl/path_builder.rb
41
+ - lib/hocon/impl/parseable.rb
42
+ - lib/hocon/impl/path.rb
43
+ - lib/hocon/impl/unmergeable.rb
44
+ - lib/hocon/impl/config_impl_util.rb
45
+ - lib/hocon/impl/simple_config_object.rb
46
+ - lib/hocon/impl/simple_config_list.rb
47
+ - lib/hocon/impl/config_impl.rb
48
+ - lib/hocon/impl/config_concatenation.rb
49
+ - lib/hocon/impl/abstract_config_value.rb
50
+ - lib/hocon/impl/origin_type.rb
51
+ - lib/hocon/config_factory.rb
52
+ - lib/hocon/impl.rb
53
+ - lib/hocon/config_parse_options.rb
54
+ - lib/hocon/config_render_options.rb
55
+ - lib/hocon/config_value_type.rb
56
+ - lib/hocon/config_syntax.rb
57
+ - LICENSE
58
+ - README.md
59
+ homepage: https://github.com/cprice404/ruby-hocon
60
+ licenses:
61
+ - Apache License, v2
62
+ post_install_message:
63
+ rdoc_options: []
64
+ require_paths:
65
+ - lib
66
+ required_ruby_version: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ requirements: []
79
+ rubyforge_project:
80
+ rubygems_version: 1.8.25
81
+ signing_key:
82
+ specification_version: 3
83
+ summary: HOCON Config Library
84
+ test_files: []