toml-rb 1.1.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,46 +0,0 @@
1
- # Test file for TomlRB
2
- # Only this one tries to emulate a TomlRB file written by a user of the kind of parser writers probably hate
3
- # This part you'll really hate
4
-
5
- [the]
6
- test_string = "You'll hate me after this - #" # " Annoying, isn't it?
7
-
8
- [the.hard]
9
- test_array = [ "] ", " # "] # ] There you go, parse this!
10
- test_array2 = [ "Test #11 ]proved that", "Experiment #9 was a success" ]
11
- # You didn't think it'd as easy as chucking out the last #, did you?
12
- another_test_string = " Same thing, but with a string #"
13
- harder_test_string = " And when \"'s are in the string, along with # \"" # "and comments are there too"
14
- # Things will get harder
15
-
16
- [the.hard."bit#"]
17
- "what?" = "You don't think some user won't do that?"
18
- multi_line_array = [
19
- "]",
20
- # ] Oh yes I did
21
- ]
22
-
23
- [parent.child1]
24
- key = 'value'
25
-
26
- [[parent.child2]]
27
- key2 = 'value'
28
-
29
- [[parent.child2]]
30
- key3 = 'value'
31
-
32
- [[a.b]]
33
- c = 3
34
-
35
- # Each of the following keygroups/key value pairs should produce an error. Uncomment to them to test
36
-
37
- #[error] if you didn't catch this, your parser is broken
38
- #string = "Anything other than tabs, spaces and newline after a keygroup or key value pair has ended should produce an error unless it is a comment" like this
39
- #array = [
40
- # "This might most likely happen in multiline arrays",
41
- # Like here,
42
- # "or here,
43
- # and here"
44
- # ] End of array comment, forgot the #
45
- #number = 3.14 pi <--again forgot the #
46
-
@@ -1,2 +0,0 @@
1
- require 'minitest/autorun'
2
- require_relative '../lib/toml-rb'
@@ -1,203 +0,0 @@
1
- class TomlRB::Examples
2
- def self.example_v_0_4_0
3
- {
4
- "table" => {
5
- "key" => "value",
6
- "subtable" => {
7
- "key" => "another value"
8
- },
9
- "inline" => {
10
- "name" => {
11
- "first" => "Tom",
12
- "last" => "Preston-Werner"
13
- },
14
- "point" => {
15
- "x" => 1,
16
- "y" => 2
17
- }
18
- }
19
- },
20
- "x" => {
21
- "y" => {
22
- "z" => {
23
- "w" => {}
24
- }
25
- }
26
- },
27
- "string" => {
28
- "basic" => {
29
- "basic" => "I'm a string. \"You can quote me\". Name\tJos\\u00E9\nLocation\tSF."
30
- },
31
- "multiline" => {
32
- "key1" => "One\nTwo",
33
- "key2" => "One\nTwo",
34
- "key3" => "One\nTwo",
35
- "continued" => {
36
- "key1" => "The quick brown fox jumps over the lazy dog.",
37
- "key2" => "The quick brown fox jumps over the lazy dog.",
38
- "key3" => "The quick brown fox jumps over the lazy dog."
39
- }
40
- },
41
- "literal" => {
42
- "winpath" => "C:\\Users\\nodejs\\templates",
43
- "winpath2" => "\\\\ServerX\\admin$\\system32\\",
44
- "quoted" => "Tom\"Dubs\"Preston-Werner",
45
- "regex" => "<\\i\\c*\\s*>",
46
- "multiline" => {
47
- "regex2" => "I[
48
- dw
49
- ]on'tneed\\d{
50
- 2
51
- }apples",
52
- "lines" => "Thefirstnewlineis\ntrimmedinrawstrings.\nAllotherwhitespace\nispreserved.\n"
53
- }
54
- }
55
- },
56
- "integer" => {
57
- "key1" => 99,
58
- "key2" => 42,
59
- "key3" => 0,
60
- "key4" => -17,
61
- "underscores" => {
62
- "key1" => 1000,
63
- "key2" => 5349221,
64
- "key3" => 12345
65
- }
66
- },
67
- "float" => {
68
- "fractional" => {
69
- "key1" => 1.0,
70
- "key2" => 3.1415,
71
- "key3" => -0.01
72
- },
73
- "exponent" => {
74
- "key1" => 5.0e+22,
75
- "key2" => 1000000.0,
76
- "key3" => -0.02
77
- },
78
- "both" => {
79
- "key" => 6.626e-34
80
- },
81
- "underscores" => {
82
- "key1" => 9224617.445991227,
83
- "key2" => 1e1_000
84
- }
85
- },
86
- "boolean" => {
87
- "True" => true,
88
- "False" => false
89
- },
90
- "datetime" => {
91
- "key1" => Time.utc(1979, 05, 27, 07, 32, 0),
92
- "key2" => Time.new(1979, 05, 27, 00, 32, 0, '-07:00'),
93
- "key3" => Time.new(1979, 05, 27, 00, 32, 0.999999, '-07:00')
94
- },
95
- "array" => {
96
- "key1" => [1, 2, 3],
97
- "key2" => %w(red yellow green),
98
- "key3" => [[1, 2], [3, 4, 5]],
99
- "key4" => [[1, 2], %w(a b c)],
100
- "key5" => [1, 2, 3],
101
- "key6" => [1, 2]
102
- },
103
- "products" => [
104
- { "name" => "Hammer", "sku" => 738594937 },
105
- {},
106
- { "name" => "Nail", "sku" => 284758393, "color" => "gray" }
107
- ],
108
- "fruit" => [
109
- {
110
- "name" => "apple",
111
- "physical" => {
112
- "color" => "red",
113
- "shape" => "round"
114
- },
115
- "variety" => [
116
- { "name" => "red delicious" },
117
- { "name" => "granny smith" }
118
- ]
119
- },
120
- {
121
- "name" => "banana",
122
- "variety" => [
123
- { "name" => "plantain" }
124
- ]
125
- }
126
- ]
127
- }
128
- end
129
-
130
- def self.example
131
- {
132
- 'title' => 'TomlRB Example',
133
- 'owner' => {
134
- 'name' => 'Tom Preston-Werner',
135
- 'organization' => 'GitHub',
136
- 'bio' => "GitHub Cofounder & CEO\nLikes tater tots and beer.",
137
- 'dob' => Time.utc(1979, 05, 27, 07, 32, 00)
138
- },
139
-
140
- 'database' => {
141
- 'server' => '192.168.1.1',
142
- 'ports' => [8001, 8001, 8002],
143
- 'connection_max' => 5000,
144
- 'enabled' => true
145
- },
146
- 'servers' => {
147
- 'alpha' => {
148
- 'ip' => '10.0.0.1',
149
- 'dc' => 'eqdc10'
150
- },
151
- 'beta' => {
152
- 'ip' => '10.0.0.2',
153
- 'dc' => 'eqdc10'
154
- }
155
- },
156
- 'clients' => {
157
- 'data' => [%w(gamma delta), [1, 2]],
158
- 'hosts' => %w(alpha omega)
159
- },
160
- 'amqp' => {
161
- 'exchange' => {
162
- 'durable' => true,
163
- 'auto_delete' => false
164
- }
165
- },
166
- "products" => [
167
- { "name" => "Hammer", "sku" => 738_594_937 },
168
- {},
169
- { "name" => "Nail", "sku" => 284_758_393, "color" => "gray" }
170
- ]
171
- }
172
- end
173
-
174
- def self.hard_example
175
- {
176
- 'the' => {
177
- 'test_string' => "You'll hate me after this - #",
178
- 'hard' => {
179
- 'test_array' => ['] ', ' # '],
180
- 'test_array2' => ['Test #11 ]proved that', 'Experiment #9 was a success'],
181
- 'another_test_string' => ' Same thing, but with a string #',
182
- 'harder_test_string' => " And when \"'s are in the string, along with # \"",
183
- 'bit#' => {
184
- 'what?' => "You don't think some user won't do that?",
185
- 'multi_line_array' => [']']
186
- }
187
- }
188
- },
189
- 'parent' => {
190
- 'child1' => { 'key' => 'value' },
191
- 'child2' => [
192
- { 'key2' => 'value' },
193
- { 'key3' => 'value' }
194
- ]
195
- },
196
- 'a' => {
197
- 'b' => [
198
- { 'c' => 3 }
199
- ]
200
- }
201
- }
202
- end
203
- end
@@ -1,125 +0,0 @@
1
- require_relative 'helper'
2
- require_relative 'toml_examples'
3
- require 'json'
4
-
5
- class TomlTest < Minitest::Test
6
- def test_file_v_0_4_0
7
- path = File.join(File.dirname(__FILE__), 'example-v0.4.0.toml')
8
- parsed = TomlRB.load_file(path)
9
- hash = TomlRB::Examples.example_v_0_4_0
10
-
11
- assert_equal hash['Array'], parsed['Array']
12
- assert_equal hash['Booleans'], parsed['Booleans']
13
- assert_equal hash['Datetime'], parsed['Datetime']
14
- assert_equal hash['Float'], parsed['Float']
15
- assert_equal hash['Integer'], parsed['Integer']
16
- assert_equal hash['String'], parsed['String']
17
- assert_equal hash['Table'], parsed['Table']
18
- assert_equal hash['products'], parsed['products']
19
- assert_equal hash['fruit'], parsed['fruit']
20
- end
21
-
22
- def test_file
23
- path = File.join(File.dirname(__FILE__), 'example.toml')
24
- parsed = TomlRB.load_file(path)
25
-
26
- assert_equal TomlRB::Examples.example, parsed
27
- end
28
-
29
- def test_hard_example
30
- path = File.join(File.dirname(__FILE__), 'hard_example.toml')
31
- parsed = TomlRB.load_file(path)
32
-
33
- assert_equal TomlRB::Examples.hard_example, parsed
34
- end
35
-
36
- def test_symbolize_keys
37
- path = File.join(File.dirname(__FILE__), 'example.toml')
38
- parsed = TomlRB.load_file(path, symbolize_keys: true)
39
-
40
- hash = {
41
- title: 'TomlRB Example',
42
-
43
- owner: {
44
- name: 'Tom Preston-Werner',
45
- organization: 'GitHub',
46
- bio: "GitHub Cofounder & CEO\nLikes tater tots and beer.",
47
- dob: Time.utc(1979, 05, 27, 07, 32, 00)
48
- },
49
-
50
- database: {
51
- server: '192.168.1.1',
52
- ports: [8001, 8001, 8002],
53
- connection_max: 5000,
54
- enabled: true
55
- },
56
-
57
- servers: {
58
- alpha: {
59
- ip: '10.0.0.1',
60
- dc: 'eqdc10'
61
- },
62
- beta: {
63
- ip: '10.0.0.2',
64
- dc: 'eqdc10'
65
- }
66
- },
67
-
68
- clients: {
69
- data: [%w(gamma delta), [1, 2]],
70
- hosts: %w(alpha omega)
71
- },
72
-
73
- amqp: {
74
- exchange: {
75
- durable: true,
76
- auto_delete: false
77
- }
78
- },
79
-
80
- products: [
81
- { name: "Hammer", sku: 738_594_937 },
82
- {},
83
- { name: "Nail", sku: 284_758_393, color: "gray" }
84
- ]
85
-
86
- }
87
-
88
- assert_equal(hash, parsed)
89
- end
90
-
91
- def test_line_break
92
- parsed = TomlRB.parse("hello = 'world'\r\nline_break = true")
93
- assert_equal({ 'hello' => 'world', 'line_break' => true }, parsed)
94
- end
95
-
96
- def compare_toml_files(folder, file = nil, &block)
97
- file ||= '*'
98
- Dir["test/examples/#{folder}/#{file}.json"].each do |json_file|
99
- toml_file = File.join(File.dirname(json_file),
100
- File.basename(json_file, '.json')) + '.toml'
101
- begin
102
- toml = TomlRB.load_file(toml_file)
103
- rescue TomlRB::Error => e
104
- assert false, "Error: #{e} in #{toml_file}"
105
- end
106
- json = JSON.parse(File.read(json_file))
107
- block.call(json, toml, toml_file)
108
- end
109
- end
110
-
111
- def test_valid_cases
112
- compare_toml_files 'valid' do |json, toml, file|
113
- assert_equal json, toml, "In file '#{file}'"
114
- end
115
- end
116
-
117
- def test_invalid_cases
118
- file = '*'
119
- Dir["test/examples/invalid/#{file}.toml"].each do |toml_file|
120
- assert_raises(TomlRB::Error, "For file #{toml_file}") do
121
- TomlRB.load_file(toml_file)
122
- end
123
- end
124
- end
125
- end
@@ -1,23 +0,0 @@
1
- Gem::Specification.new do |s|
2
- s.name = 'toml-rb'
3
- s.version = '1.1.2'
4
- s.date = Time.now.strftime('%Y-%m-%d')
5
- s.summary = 'Toml parser in ruby, for ruby.'
6
- s.description = 'A Toml parser using Citrus parsing library. '
7
- s.authors = ['Emiliano Mancuso', 'Lucas Tolchinsky']
8
- s.email = ['emiliano.mancuso@gmail.com', 'lucas.tolchinsky@gmail.com']
9
- s.homepage = 'http://github.com/emancu/toml-rb'
10
- s.license = 'MIT'
11
-
12
- s.files = Dir[
13
- 'README.md',
14
- 'Rakefile',
15
- 'lib/**/*.rb',
16
- 'lib/**/*.citrus',
17
- '*.gemspec',
18
- 'test/*.*',
19
- ]
20
-
21
- s.required_ruby_version = '>= 1.9'
22
- s.add_dependency 'citrus', '~> 3.0', '> 3.0'
23
- end