inidol 1.1.1 → 1.1.2

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.
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: []