ruby_hocon 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: ruby_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: []