inidol 1.1.1 → 1.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/inidol.rb +33 -9
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4a210656292325922a490e94132fc8f0af77d842
4
- data.tar.gz: 137a76d65bf0ba946625a6de3bd82ae1052c2d7f
3
+ metadata.gz: 34b81768e0e3a7c6b7f8ccba6caea3dbb590d6fc
4
+ data.tar.gz: 3d848d947252d17175ebd5398d00b5a7bebeb59e
5
5
  SHA512:
6
- metadata.gz: c6fadb6fa6505390d2449c733d4b1340e92e01da449475bac8de64302f5ba39b20c60409f650ecb3866a6b7f3b9e44f0d025e8b93e5b836ae448435dba57e281
7
- data.tar.gz: 12c03c2a758d591addd37bb7c8b1d8dcff8e42347347289d2ec7fd3bdcc17368b51c1eb92d81b97ee2693d1c2c975f1ba0e90d08b7b97e9d1cea25fdd9db4b92
6
+ metadata.gz: d77c89595b8b9074ae5f9f4533d07e8e8ac1541d1a18f105c8d0fd9af8253a412a521794460c6d1d1cc81405aec62f8f0a891a153158271eabe45b80ac3eaaaf
7
+ data.tar.gz: efe7e8cb8a50298ae476d68f7cb4a5fe5632d5df292fc539d7501003392018cdeec36eadf7527a36152a1698ddb3893d1849f477b3f316475d2a6e3c3dadffcf
@@ -47,15 +47,20 @@ class INIHash < BabelBridge::Parser
47
47
  end
48
48
  end
49
49
 
50
- rule :property, :name, '=', :values, :comment? do
50
+ rule :property, :names, '=', :types, :comment? do
51
51
  def evaluate
52
- value = values.evaluate
53
- parser.current?[name.evaluate] = value.size <= 1 ? value[0] : value
52
+ current = parser.current?[names.evaluate]
53
+
54
+ if current.instance_of?(Array)
55
+ current << types.evaluate
56
+ else
57
+ parser.current?[names.evaluate] = types.evaluate
58
+ end
54
59
  end
55
60
  end
56
61
 
57
- rule :values, any(:array, :types)
58
- rule :types, any(:int, :bool, :string, :content)
62
+ rule :names, any(:array, :name)
63
+ rule :types, any(:float, :int, :bool, :string, :content)
59
64
 
60
65
  rule :int,/[-]?[0-9]+/ do
61
66
  def evaluate
@@ -63,6 +68,24 @@ class INIHash < BabelBridge::Parser
63
68
  end
64
69
  end
65
70
 
71
+ rule :dot_digits, many(/\.[0-9]+/) do
72
+ def evaluate
73
+ to_s.split(".")[1..-1]
74
+ end
75
+ end
76
+
77
+ rule :float, :int, :dot_digits do
78
+ def evaluate
79
+ after_dot = dot_digits.evaluate
80
+
81
+ if after_dot.size <= 1
82
+ (int.evaluate.to_s + "." + after_dot[0]).to_f
83
+ else
84
+ int.evaluate.to_s + "." + after_dot.join('.')
85
+ end
86
+ end
87
+ end
88
+
66
89
  rule :bool, /true|false/ do
67
90
  def evaluate
68
91
  to_s == 'true'
@@ -75,15 +98,16 @@ class INIHash < BabelBridge::Parser
75
98
  end
76
99
  end
77
100
 
78
- rule :content, /[^\n\=\[\]";#,]+/ do
101
+ rule :content, /[^\n\=\[\]";#]+/ do
79
102
  def evaluate
80
- to_s.chomp
103
+ to_s.chomp.strip
81
104
  end
82
105
  end
83
106
 
84
- rule :array, many(:types, ',') do
107
+ rule :array, :name, '[]' do
85
108
  def evaluate
86
- types.map { |value| value.evaluate }
109
+ parser.current?[name.evaluate] = [] if not parser.current?[name.evaluate].instance_of?(Array)
110
+ name.evaluate.to_sym
87
111
  end
88
112
  end
89
113
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inidol
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - homonoid
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-16 00:00:00.000000000 Z
11
+ date: 2017-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: babel_bridge
@@ -24,7 +24,7 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- description: Inidol is for Hash -> INI converting
27
+ description: Inidol is for Hash -> INI and back converting
28
28
  email:
29
29
  executables: []
30
30
  extensions: []