toml-rb 0.3.12 → 0.3.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/toml/dumper.rb +16 -17
- data/lib/toml/grammars/primitive.citrus +2 -2
- data/lib/toml/parser.rb +3 -0
- data/lib/toml/table_array.rb +4 -0
- data/test/dumper_test.rb +15 -0
- data/toml-rb.gemspec +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0db308aa87a4da538be12f2ce08fcfb5d84ef70c
|
4
|
+
data.tar.gz: b169b923de908e25c9d10647f97408b4a41e1bfd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce740f5eabf651cba25cc8f536f73e55ec94d40f7b8b233b654b2d44aaceff3e5db912cde59b9cae45b05edf8032f12f634f6b26d68940a3a5ac1cce58a5ea83
|
7
|
+
data.tar.gz: af784c37f85445e7659638de52363065df3e8665cfc15f092b1aa4613426633a74ff8e389ab85c5b7db3bbfb048ff1c28f0f3ce0f8dab48b7c7d1351bb882b9a
|
data/lib/toml/dumper.rb
CHANGED
@@ -11,20 +11,13 @@ module TOML
|
|
11
11
|
private
|
12
12
|
|
13
13
|
def visit(hash, prefix, extra_brackets = false)
|
14
|
-
|
15
|
-
print_prefix prefix, extra_brackets
|
16
|
-
else
|
17
|
-
simple_pairs, nested_pairs, table_array_pairs = sort_pairs hash
|
14
|
+
simple_pairs, nested_pairs, table_array_pairs = sort_pairs hash
|
18
15
|
|
19
|
-
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
# First add simple pairs, under the prefix
|
24
|
-
dump_simple_pairs simple_pairs
|
25
|
-
dump_nested_pairs nested_pairs, prefix
|
26
|
-
dump_table_array_pairs table_array_pairs, prefix
|
16
|
+
if prefix.any? && (simple_pairs.any? || hash.empty?)
|
17
|
+
print_prefix prefix, extra_brackets
|
27
18
|
end
|
19
|
+
|
20
|
+
dump_pairs simple_pairs, nested_pairs, table_array_pairs, prefix
|
28
21
|
end
|
29
22
|
|
30
23
|
def sort_pairs(hash)
|
@@ -48,6 +41,13 @@ module TOML
|
|
48
41
|
[simple_pairs, nested_pairs, table_array_pairs]
|
49
42
|
end
|
50
43
|
|
44
|
+
def dump_pairs(simple, nested, table_array, prefix = [])
|
45
|
+
# First add simple pairs, under the prefix
|
46
|
+
dump_simple_pairs simple
|
47
|
+
dump_nested_pairs nested, prefix
|
48
|
+
dump_table_array_pairs table_array, prefix
|
49
|
+
end
|
50
|
+
|
51
51
|
def dump_simple_pairs(simple_pairs)
|
52
52
|
simple_pairs.each do |key, val|
|
53
53
|
key = quote_key(key) unless bare_key? key
|
@@ -69,11 +69,10 @@ module TOML
|
|
69
69
|
aux_prefix = prefix + [key]
|
70
70
|
|
71
71
|
val.each do |child|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
end
|
72
|
+
print_prefix aux_prefix, true
|
73
|
+
args = sort_pairs(child) << aux_prefix
|
74
|
+
|
75
|
+
dump_pairs(*args)
|
77
76
|
end
|
78
77
|
end
|
79
78
|
end
|
@@ -22,11 +22,11 @@ grammar TOML::Primitive
|
|
22
22
|
end
|
23
23
|
|
24
24
|
rule multiline_string
|
25
|
-
('"""' line_break* (text:~'"""'|'') '"""' space) <TOML::MultilineString>
|
25
|
+
('"""' line_break* (text:~('"""' !'"')|'') '"""' space) <TOML::MultilineString>
|
26
26
|
end
|
27
27
|
|
28
28
|
rule multiline_literal
|
29
|
-
("'''" line_break* (text:~"'''"|'') "'''" space) <TOML::MultilineLiteral>
|
29
|
+
("'''" line_break* (text:~("'''" !"'")|'') "'''" space) <TOML::MultilineLiteral>
|
30
30
|
end
|
31
31
|
|
32
32
|
##
|
data/lib/toml/parser.rb
CHANGED
@@ -19,6 +19,9 @@ module TOML
|
|
19
19
|
# Read about the Visitor pattern
|
20
20
|
# http://en.wikipedia.org/wiki/Visitor_pattern
|
21
21
|
def visit_table_array(table_array)
|
22
|
+
table_array_key = table_array.full_key
|
23
|
+
@visited_keys.reject! { |k| k.start_with? table_array_key }
|
24
|
+
|
22
25
|
@current = table_array.navigate_keys @hash, @symbolize_keys
|
23
26
|
end
|
24
27
|
|
data/lib/toml/table_array.rb
CHANGED
data/test/dumper_test.rb
CHANGED
@@ -76,4 +76,19 @@ class DumperTest < Minitest::Test
|
|
76
76
|
|
77
77
|
assert_equal toml, dumped
|
78
78
|
end
|
79
|
+
|
80
|
+
def test_dump_array_tables
|
81
|
+
hash = { fruit: [{ physical: { color: "red" } }, { physical: { color: "blue" } }] }
|
82
|
+
dumped = TOML.dump(hash)
|
83
|
+
toml = <<-EOS.gsub(/^ {6}/, '')
|
84
|
+
[[fruit]]
|
85
|
+
[fruit.physical]
|
86
|
+
color = "red"
|
87
|
+
[[fruit]]
|
88
|
+
[fruit.physical]
|
89
|
+
color = "blue"
|
90
|
+
EOS
|
91
|
+
|
92
|
+
assert_equal toml, dumped
|
93
|
+
end
|
79
94
|
end
|
data/toml-rb.gemspec
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'toml-rb'
|
3
|
-
s.version = '0.3.
|
3
|
+
s.version = '0.3.13'
|
4
4
|
s.date = Time.now.strftime('%Y-%m-%d')
|
5
5
|
s.summary = 'TOML parser in ruby, for ruby.'
|
6
6
|
s.description = 'A TOML parser using Citrus parsing library. '
|
7
7
|
s.authors = ['Emiliano Mancuso', 'Lucas Tolchinsky']
|
8
8
|
s.email = ['emiliano.mancuso@gmail.com', 'lucas.tolchinsky@gmail.com']
|
9
|
-
s.homepage = 'http://github.com/
|
9
|
+
s.homepage = 'http://github.com/emancu/toml-rb'
|
10
10
|
s.license = 'MIT'
|
11
11
|
|
12
12
|
s.files = Dir[
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: toml-rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.13
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Emiliano Mancuso
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-04-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: citrus
|
@@ -65,7 +65,7 @@ files:
|
|
65
65
|
- test/toml_examples.rb
|
66
66
|
- test/toml_test.rb
|
67
67
|
- toml-rb.gemspec
|
68
|
-
homepage: http://github.com/
|
68
|
+
homepage: http://github.com/emancu/toml-rb
|
69
69
|
licenses:
|
70
70
|
- MIT
|
71
71
|
metadata: {}
|