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.
- data/LICENSE +202 -0
- data/README.md +19 -0
- data/lib/hocon.rb +2 -0
- data/lib/hocon/config_error.rb +12 -0
- data/lib/hocon/config_factory.rb +9 -0
- data/lib/hocon/config_object.rb +4 -0
- data/lib/hocon/config_parse_options.rb +53 -0
- data/lib/hocon/config_render_options.rb +46 -0
- data/lib/hocon/config_syntax.rb +7 -0
- data/lib/hocon/config_value_type.rb +26 -0
- data/lib/hocon/impl.rb +5 -0
- data/lib/hocon/impl/abstract_config_object.rb +64 -0
- data/lib/hocon/impl/abstract_config_value.rb +130 -0
- data/lib/hocon/impl/config_concatenation.rb +136 -0
- data/lib/hocon/impl/config_float.rb +9 -0
- data/lib/hocon/impl/config_impl.rb +10 -0
- data/lib/hocon/impl/config_impl_util.rb +78 -0
- data/lib/hocon/impl/config_int.rb +31 -0
- data/lib/hocon/impl/config_number.rb +27 -0
- data/lib/hocon/impl/config_string.rb +37 -0
- data/lib/hocon/impl/full_includer.rb +4 -0
- data/lib/hocon/impl/origin_type.rb +9 -0
- data/lib/hocon/impl/parseable.rb +151 -0
- data/lib/hocon/impl/parser.rb +882 -0
- data/lib/hocon/impl/path.rb +59 -0
- data/lib/hocon/impl/path_builder.rb +36 -0
- data/lib/hocon/impl/resolve_status.rb +18 -0
- data/lib/hocon/impl/simple_config.rb +11 -0
- data/lib/hocon/impl/simple_config_list.rb +70 -0
- data/lib/hocon/impl/simple_config_object.rb +178 -0
- data/lib/hocon/impl/simple_config_origin.rb +174 -0
- data/lib/hocon/impl/simple_include_context.rb +7 -0
- data/lib/hocon/impl/simple_includer.rb +19 -0
- data/lib/hocon/impl/token.rb +32 -0
- data/lib/hocon/impl/token_type.rb +42 -0
- data/lib/hocon/impl/tokenizer.rb +370 -0
- data/lib/hocon/impl/tokens.rb +157 -0
- data/lib/hocon/impl/unmergeable.rb +4 -0
- 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
|
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: []
|