toml-rb 0.1.6 → 0.2.0

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.
@@ -0,0 +1,171 @@
1
+ class TomlExamples
2
+ def self.example_v_0_3_1
3
+ {
4
+ 'Table' => {
5
+ 'key' => 'value'
6
+ },
7
+ 'dog' => {
8
+ 'tater' => {
9
+ 'type' => 'pug'
10
+ }
11
+ },
12
+ 'x' => {
13
+ 'y' => {
14
+ 'z' => {
15
+ 'w' => {}
16
+ }
17
+ }
18
+ },
19
+ 'String' => {
20
+ 'basic' => "I'm a string. \"You can quote me\". Name\tJos\\u00E9\nLocation\tSF.",
21
+ 'Multiline' => {
22
+ 'key1' => "One\nTwo",
23
+ 'key2' => "One\nTwo",
24
+ 'key3' => "One\nTwo"
25
+ },
26
+ 'Multilined' => {
27
+ 'Singleline' => {
28
+ 'key1' => 'The quick brown fox jumps over the lazy dog.',
29
+ 'key2' => 'The quick brown fox jumps over the lazy dog.',
30
+ 'key3' => 'The quick brown fox jumps over the lazy dog.'
31
+ }
32
+ },
33
+ 'Literal' => {
34
+ 'winpath' => 'C:\\Users\nodejs\templates',
35
+ 'winpath2' => "\\\\ServerX\\admin$\\system32\\",
36
+ 'quoted' => 'Tom "Dubs" Preston-Werner',
37
+ 'regex' => '<\i\c*\s*>',
38
+ 'Multiline' => {
39
+ "regex2" => "I [dw]on't need \\d{2} apples",
40
+ "lines" => "The first newline is\ntrimmed in raw strings.\n All other whitespace\n is preserved.\n"
41
+ }
42
+ }
43
+ },
44
+ "Integer" => {
45
+ "key1" => 99,
46
+ "key2" => 42,
47
+ "key3" => 0,
48
+ "key4" => -17
49
+ },
50
+ "Float" => {
51
+ "fractional" => {
52
+ "key1" => 1.0,
53
+ "key2" => 3.1415,
54
+ "key3" => -0.01
55
+ },
56
+ "both" => {
57
+ "key" => 6.626e-34
58
+ },
59
+ "exponent" => {
60
+ "key1" => 5.0e+22,
61
+ "key2" => 1000000.0,
62
+ "key3" => -0.02
63
+ }
64
+ },
65
+ "Booleans" => {
66
+ "True" => true,
67
+ "False" => false
68
+ },
69
+ "Datetime" => {
70
+ "key1" => Time.utc(1979, 05, 27, 07, 32, 0),
71
+ "key2" => Time.new(1979, 05, 27, 00, 32, 0, '-07:00'),
72
+ "key3" => Time.new(1979, 05, 27, 00, 32, 0.999999, '-07:00')
73
+ },
74
+ "Array" => {
75
+ "key1" => [1, 2, 3],
76
+ "key2" => %w(red yellow green),
77
+ "key3" => [[1, 2], [3, 4, 5]],
78
+ "key4" => [[1, 2], %w(a b c)],
79
+ "key5" => [1, 2, 3],
80
+ "key6" => [1, 2]
81
+ },
82
+ "products" => [
83
+ { "name" => "Hammer", "sku" => 738594937 },
84
+ {},
85
+ { "name" => "Nail", "sku" => 284758393, "color" => "gray" }
86
+ ],
87
+ "fruit" => [
88
+ {
89
+ "name" => "apple",
90
+ "physical" => {
91
+ "color" => "red",
92
+ "shape" => "round"
93
+ },
94
+ "variety" => [
95
+ { "name" => "red delicious" },
96
+ { "name" => "granny smith" }
97
+ ]
98
+ },
99
+ {
100
+ "name" => "banana",
101
+ "variety" => [
102
+ { "name" => "plantain" }
103
+ ]
104
+ }
105
+ ]
106
+ }
107
+ end
108
+
109
+ def self.example
110
+ {
111
+ 'title' => 'TOML Example',
112
+
113
+ 'owner' => {
114
+ 'name' => 'Tom Preston-Werner',
115
+ 'organization' => 'GitHub',
116
+ 'bio' => "GitHub Cofounder & CEO\nLikes tater tots and beer.",
117
+ 'dob' => Time.utc(1979, 05, 27, 07, 32, 00)
118
+ },
119
+
120
+ 'database' => {
121
+ 'server' => '192.168.1.1',
122
+ 'ports' => [8001, 8001, 8002],
123
+ 'connection_max' => 5000,
124
+ 'enabled' => true
125
+ },
126
+
127
+ 'servers' => {
128
+ 'alpha' => {
129
+ 'ip' => '10.0.0.1',
130
+ 'dc' => 'eqdc10'
131
+ },
132
+ 'beta' => {
133
+ 'ip' => '10.0.0.2',
134
+ 'dc' => 'eqdc10'
135
+ }
136
+ },
137
+
138
+ 'clients' => {
139
+ 'data' => [%w(gamma delta), [1, 2]],
140
+ 'hosts' => %w(alpha omega)
141
+ }
142
+ }
143
+ end
144
+
145
+ def self.hard_example
146
+ {
147
+ 'the' => {
148
+ 'test_string' => "You'll hate me after this - #",
149
+ 'hard' => {
150
+ 'test_array' => ['] ', ' # '],
151
+ 'test_array2' => ['Test #11 ]proved that', 'Experiment #9 was a success'],
152
+ 'another_test_string' => ' Same thing, but with a string #',
153
+ 'harder_test_string' => " And when \"'s are in the string, along with # \"",
154
+ 'bit#' => {
155
+ 'what?' => "You don't think some user won't do that?",
156
+ 'multi_line_array' => [']']
157
+ }
158
+ }
159
+ },
160
+ "nested" => [
161
+ {
162
+ "table" => [
163
+ {
164
+ "array" => [{}]
165
+ }
166
+ ]
167
+ }
168
+ ]
169
+ }
170
+ end
171
+ end
@@ -1,68 +1,35 @@
1
1
  require_relative 'helper'
2
+ require_relative 'toml_examples'
2
3
 
3
4
  class TomlTest < Test::Unit::TestCase
5
+ def test_file_v_0_3_1
6
+ path = File.join(File.dirname(__FILE__), 'example-v0.3.1.toml')
7
+ parsed = TOML.load_file(path)
8
+ hash = TomlExamples.example_v_0_3_1
9
+
10
+ assert_equal hash['Array'], parsed['Array']
11
+ assert_equal hash['Booleans'], parsed['Booleans']
12
+ assert_equal hash['Datetime'], parsed['Datetime']
13
+ assert_equal hash['Float'], parsed['Float']
14
+ assert_equal hash['Integer'], parsed['Integer']
15
+ assert_equal hash['String'], parsed['String']
16
+ assert_equal hash['Table'], parsed['Table']
17
+ assert_equal hash['products'], parsed['products']
18
+ assert_equal hash['fruit'], parsed['fruit']
19
+ end
20
+
4
21
  def test_file
5
22
  path = File.join(File.dirname(__FILE__), 'example.toml')
6
23
  parsed = TOML.load_file(path)
7
24
 
8
- hash = {
9
- 'title' => 'TOML Example',
10
-
11
- 'owner' => {
12
- 'name' => 'Tom Preston-Werner',
13
- 'organization' => 'GitHub',
14
- 'bio' => "GitHub Cofounder & CEO\nLikes tater tots and beer.",
15
- 'dob' => Time.utc(1979, 05, 27, 07, 32, 00)
16
- },
17
-
18
- 'database' => {
19
- 'server' => '192.168.1.1',
20
- 'ports' => [8001, 8001, 8002],
21
- 'connection_max' => 5000,
22
- 'enabled' => true
23
- },
24
-
25
- 'servers' => {
26
- 'alpha' => {
27
- 'ip' => '10.0.0.1',
28
- 'dc' => 'eqdc10'
29
- },
30
- 'beta' => {
31
- 'ip' => '10.0.0.2',
32
- 'dc' => 'eqdc10'
33
- }
34
- },
35
-
36
- 'clients' => {
37
- 'data' => [['gamma', 'delta'], [1, 2]],
38
- 'hosts' => ['alpha', 'omega']
39
- }
40
- }
41
-
42
- assert_equal(hash, parsed)
25
+ assert_equal TomlExamples.example, parsed
43
26
  end
44
27
 
45
28
  def test_hard_example
46
29
  path = File.join(File.dirname(__FILE__), 'hard_example.toml')
47
30
  parsed = TOML.load_file(path)
48
31
 
49
- hash = {
50
- 'the' => {
51
- 'test_string' => "You'll hate me after this - #",
52
- 'hard' => {
53
- 'test_array' => ['] ', ' # '],
54
- 'test_array2' => ['Test #11 ]proved that', 'Experiment #9 was a success'],
55
- 'another_test_string' => ' Same thing, but with a string #',
56
- 'harder_test_string' => " And when \"'s are in the string, along with # \"",
57
- 'bit#' => {
58
- 'what?' => "You don't think some user won't do that?",
59
- 'multi_line_array' => [']']
60
- }
61
- }
62
- }
63
- }
64
-
65
- assert_equal(hash, parsed)
32
+ assert_equal TomlExamples.hard_example, parsed
66
33
  end
67
34
 
68
35
  def test_symbolize_keys
@@ -98,8 +65,8 @@ class TomlTest < Test::Unit::TestCase
98
65
  },
99
66
 
100
67
  clients: {
101
- data: [['gamma', 'delta'], [1, 2]],
102
- hosts: ['alpha', 'omega']
68
+ data: [%w(gamma delta), [1, 2]],
69
+ hosts: %w(alpha omega)
103
70
  }
104
71
  }
105
72
 
@@ -108,6 +75,6 @@ class TomlTest < Test::Unit::TestCase
108
75
 
109
76
  def test_line_break
110
77
  parsed = TOML.parse("hello = 'world'\r\nline_break = true")
111
- assert_equal({'hello' => 'world', 'line_break' => true}, parsed)
78
+ assert_equal({ 'hello' => 'world', 'line_break' => true }, parsed)
112
79
  end
113
80
  end
@@ -1,23 +1,23 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'toml-rb'
3
- s.version = '0.1.6'
3
+ s.version = '0.2.0'
4
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"]
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
8
  s.email = ['emiliano.mancuso@gmail.com', 'lucas.tolchinsky@gmail.com']
9
9
  s.homepage = 'http://github.com/eMancu/toml-rb'
10
- s.license = "MIT"
10
+ s.license = 'MIT'
11
11
 
12
12
  s.files = Dir[
13
- "README.md",
14
- "Rakefile",
15
- "lib/**/*.rb",
16
- "lib/**/*.citrus",
17
- "*.gemspec",
18
- "test/*.*",
19
- "init.rb"
13
+ 'README.md',
14
+ 'Rakefile',
15
+ 'lib/**/*.rb',
16
+ 'lib/**/*.citrus',
17
+ '*.gemspec',
18
+ 'test/*.*',
19
+ 'init.rb'
20
20
  ]
21
21
 
22
- s.add_dependency "citrus", "~> 3.0", "> 3.0"
22
+ s.add_dependency 'citrus', '~> 3.0', '> 3.0'
23
23
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toml-rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
5
- prerelease:
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Emiliano Mancuso
@@ -10,31 +9,29 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2014-03-26 00:00:00.000000000 Z
12
+ date: 2015-01-31 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: citrus
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ~>
18
+ - - "~>"
21
19
  - !ruby/object:Gem::Version
22
20
  version: '3.0'
23
- - - ! '>'
21
+ - - ">"
24
22
  - !ruby/object:Gem::Version
25
23
  version: '3.0'
26
24
  type: :runtime
27
25
  prerelease: false
28
26
  version_requirements: !ruby/object:Gem::Requirement
29
- none: false
30
27
  requirements:
31
- - - ~>
28
+ - - "~>"
32
29
  - !ruby/object:Gem::Version
33
30
  version: '3.0'
34
- - - ! '>'
31
+ - - ">"
35
32
  - !ruby/object:Gem::Version
36
33
  version: '3.0'
37
- description: ! 'A TOML parser using Citrus parsing library. '
34
+ description: 'A TOML parser using Citrus parsing library. '
38
35
  email:
39
36
  - emiliano.mancuso@gmail.com
40
37
  - lucas.tolchinsky@gmail.com
@@ -44,48 +41,50 @@ extra_rdoc_files: []
44
41
  files:
45
42
  - README.md
46
43
  - Rakefile
47
- - lib/toml/dumper.rb
48
- - lib/toml/keygroup.rb
49
- - lib/toml/keyvalue.rb
50
- - lib/toml/parser.rb
51
- - lib/toml/string.rb
44
+ - init.rb
52
45
  - lib/toml.rb
46
+ - lib/toml/dumper.rb
53
47
  - lib/toml/grammars/array.citrus
54
48
  - lib/toml/grammars/document.citrus
55
49
  - lib/toml/grammars/helper.citrus
56
50
  - lib/toml/grammars/primitive.citrus
57
- - toml-rb.gemspec
51
+ - lib/toml/keygroup.rb
52
+ - lib/toml/keyvalue.rb
53
+ - lib/toml/parser.rb
54
+ - lib/toml/string.rb
55
+ - lib/toml/table_array.rb
58
56
  - test/dumper_test.rb
59
57
  - test/errors_test.rb
58
+ - test/example-v0.3.1.toml
60
59
  - test/example.toml
61
60
  - test/grammar_test.rb
62
61
  - test/hard_example.toml
63
62
  - test/helper.rb
63
+ - test/toml_examples.rb
64
64
  - test/toml_test.rb
65
- - init.rb
65
+ - toml-rb.gemspec
66
66
  homepage: http://github.com/eMancu/toml-rb
67
67
  licenses:
68
68
  - MIT
69
+ metadata: {}
69
70
  post_install_message:
70
71
  rdoc_options: []
71
72
  require_paths:
72
73
  - lib
73
74
  required_ruby_version: !ruby/object:Gem::Requirement
74
- none: false
75
75
  requirements:
76
- - - ! '>='
76
+ - - ">="
77
77
  - !ruby/object:Gem::Version
78
78
  version: '0'
79
79
  required_rubygems_version: !ruby/object:Gem::Requirement
80
- none: false
81
80
  requirements:
82
- - - ! '>='
81
+ - - ">="
83
82
  - !ruby/object:Gem::Version
84
83
  version: '0'
85
84
  requirements: []
86
85
  rubyforge_project:
87
- rubygems_version: 1.8.25
86
+ rubygems_version: 2.4.5
88
87
  signing_key:
89
- specification_version: 3
88
+ specification_version: 4
90
89
  summary: TOML parser in ruby, for ruby.
91
90
  test_files: []