inifile 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/History.txt +5 -0
- data/lib/inifile.rb +16 -6
- data/test/test_inifile.rb +89 -31
- metadata +5 -6
- data/Manifest.txt +0 -20
data/.gitignore
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# The list of files that should be ignored by Mr Bones.
|
2
|
+
# Lines that start with '#' are comments.
|
3
|
+
#
|
4
|
+
# A .gitignore file can be used instead by setting it as the ignore
|
5
|
+
# file in your Rakefile:
|
6
|
+
#
|
7
|
+
# PROJ.ignore_file = '.gitignore'
|
8
|
+
#
|
9
|
+
# For a project with a C extension, the following would be a good set of
|
10
|
+
# exclude patterns (uncomment them if you want to use them):
|
11
|
+
# *.[oa]
|
12
|
+
*~
|
13
|
+
*.sw[op]
|
14
|
+
announcement.txt
|
15
|
+
coverage
|
16
|
+
doc
|
17
|
+
pkg
|
data/History.txt
CHANGED
data/lib/inifile.rb
CHANGED
@@ -9,7 +9,7 @@ class IniFile
|
|
9
9
|
|
10
10
|
# :stopdoc:
|
11
11
|
class Error < StandardError; end
|
12
|
-
VERSION = '0.
|
12
|
+
VERSION = '0.3.0'
|
13
13
|
# :startdoc:
|
14
14
|
|
15
15
|
#
|
@@ -64,7 +64,7 @@ class IniFile
|
|
64
64
|
def write( filename = nil )
|
65
65
|
@fn = filename unless filename.nil?
|
66
66
|
|
67
|
-
|
67
|
+
File.open(@fn, 'w') do |f|
|
68
68
|
@ini.each do |section,hash|
|
69
69
|
f.puts "[#{section}]"
|
70
70
|
hash.each {|param,val| f.puts "#{param} #{@param} #{val}"}
|
@@ -155,6 +155,16 @@ class IniFile
|
|
155
155
|
@ini[section.to_s]
|
156
156
|
end
|
157
157
|
|
158
|
+
#
|
159
|
+
# call-seq:
|
160
|
+
# ini_file[section] = hash
|
161
|
+
#
|
162
|
+
# Set the hash of parameter/value pairs for the given _section_.
|
163
|
+
#
|
164
|
+
def []=( section, value )
|
165
|
+
@ini[section.to_s] = value
|
166
|
+
end
|
167
|
+
|
158
168
|
#
|
159
169
|
# call-seq:
|
160
170
|
# has_section?( section )
|
@@ -268,19 +278,19 @@ class IniFile
|
|
268
278
|
# Parse the ini file contents.
|
269
279
|
#
|
270
280
|
def parse
|
271
|
-
return unless
|
281
|
+
return unless File.file?(@fn)
|
272
282
|
section = nil
|
273
283
|
|
274
|
-
|
284
|
+
File.open(@fn, 'r') do |f|
|
275
285
|
while line = f.gets
|
276
286
|
line = line.chomp
|
277
287
|
|
278
288
|
case line
|
279
289
|
# ignore blank lines and comment lines
|
280
|
-
when @rgxp_comment
|
290
|
+
when @rgxp_comment; next
|
281
291
|
|
282
292
|
# this is a section declaration
|
283
|
-
when @rgxp_section
|
293
|
+
when @rgxp_section; section = @ini[$1.strip]
|
284
294
|
|
285
295
|
# otherwise we have a parameter
|
286
296
|
when @rgxp_param
|
data/test/test_inifile.rb
CHANGED
@@ -9,13 +9,15 @@ rescue LoadError
|
|
9
9
|
require 'inifile'
|
10
10
|
end
|
11
11
|
|
12
|
+
require 'fileutils'
|
13
|
+
|
12
14
|
begin; require 'turn'; rescue LoadError; end
|
13
15
|
require 'test/unit' unless defined? $ZENTEST and $ZENTEST
|
14
16
|
|
15
17
|
class TestIniFile < Test::Unit::TestCase
|
16
18
|
|
17
19
|
def setup
|
18
|
-
@ini_file =
|
20
|
+
@ini_file = IniFile.new 'test/data/good.ini'
|
19
21
|
@contents = [
|
20
22
|
['section_one', 'one', '1'],
|
21
23
|
['section_one', 'two', '2'],
|
@@ -25,33 +27,40 @@ class TestIniFile < Test::Unit::TestCase
|
|
25
27
|
['section three', 'six', '6'],
|
26
28
|
['section_five', 'seven and eight', '7 & 8']
|
27
29
|
].sort
|
30
|
+
|
31
|
+
FileUtils.rm_rf "test/data/tmp.ini"
|
32
|
+
FileUtils.cp "test/data/good.ini", "test/data/tmp.ini"
|
33
|
+
end
|
34
|
+
|
35
|
+
def teardown
|
36
|
+
FileUtils.rm_rf "test/data/tmp.ini"
|
28
37
|
end
|
29
38
|
|
30
39
|
def test_class_load
|
31
|
-
ini_file =
|
32
|
-
assert_instance_of
|
40
|
+
ini_file = IniFile.load 'test/data/good.ini'
|
41
|
+
assert_instance_of IniFile, ini_file
|
33
42
|
|
34
43
|
# see if we can parse different style comments
|
35
|
-
assert_raise(
|
44
|
+
assert_raise(IniFile::Error) {IniFile.load 'test/data/comment.ini', :comment => ';'}
|
36
45
|
|
37
|
-
ini_file =
|
38
|
-
assert_instance_of
|
46
|
+
ini_file = IniFile.load 'test/data/comment.ini', :comment => '#'
|
47
|
+
assert_instance_of IniFile, ini_file
|
39
48
|
|
40
49
|
# see if we can parse mixed style comments
|
41
|
-
assert_raise(
|
50
|
+
assert_raise(IniFile::Error) {IniFile.load 'test/data/mixed_comment.ini', :comment => '#'}
|
42
51
|
|
43
|
-
ini_file =
|
44
|
-
assert_instance_of
|
52
|
+
ini_file = IniFile.load 'test/data/mixed_comment.ini', :comment => ';#'
|
53
|
+
assert_instance_of IniFile, ini_file
|
45
54
|
|
46
55
|
# see if we can parse different style param separators
|
47
|
-
assert_raise(
|
56
|
+
assert_raise(IniFile::Error) {IniFile.load 'test/data/param.ini'}
|
48
57
|
|
49
|
-
ini_file =
|
50
|
-
assert_instance_of
|
58
|
+
ini_file = IniFile.load 'test/data/param.ini', :parameter => ':'
|
59
|
+
assert_instance_of IniFile, ini_file
|
51
60
|
|
52
61
|
# make sure we error out on files with bad lines
|
53
|
-
assert_raise(
|
54
|
-
assert_raise(
|
62
|
+
assert_raise(IniFile::Error) {IniFile.load 'test/data/bad_1.ini'}
|
63
|
+
assert_raise(IniFile::Error) {IniFile.load 'test/data/bad_2.ini'}
|
55
64
|
end
|
56
65
|
|
57
66
|
def test_clone
|
@@ -123,7 +132,7 @@ class TestIniFile < Test::Unit::TestCase
|
|
123
132
|
assert_equal @contents, ary.sort
|
124
133
|
|
125
134
|
ary = []
|
126
|
-
|
135
|
+
IniFile.new('temp.ini').each {|*args| ary << args}
|
127
136
|
assert_equal [], ary
|
128
137
|
end
|
129
138
|
|
@@ -139,7 +148,7 @@ class TestIniFile < Test::Unit::TestCase
|
|
139
148
|
assert_equal expected, ary.sort
|
140
149
|
|
141
150
|
ary = []
|
142
|
-
|
151
|
+
IniFile.new('temp.ini').each_section {|section| ary << section}
|
143
152
|
assert_equal [], ary
|
144
153
|
end
|
145
154
|
|
@@ -170,7 +179,7 @@ class TestIniFile < Test::Unit::TestCase
|
|
170
179
|
assert_equal true, @ini_file.has_section?(:section_two)
|
171
180
|
assert_equal false, @ini_file.has_section?(nil)
|
172
181
|
|
173
|
-
ini_file =
|
182
|
+
ini_file = IniFile.new 'temp.ini'
|
174
183
|
assert_equal false, ini_file.has_section?('section_one')
|
175
184
|
assert_equal false, ini_file.has_section?('one')
|
176
185
|
assert_equal false, ini_file.has_section?('two')
|
@@ -205,7 +214,7 @@ class TestIniFile < Test::Unit::TestCase
|
|
205
214
|
assert_nil @ini_file[nil]
|
206
215
|
|
207
216
|
expected = {}
|
208
|
-
ini_file =
|
217
|
+
ini_file = IniFile.new 'temp.ini'
|
209
218
|
assert_equal expected, ini_file['section_one']
|
210
219
|
assert_equal expected, ini_file['one']
|
211
220
|
assert_nil ini_file[nil]
|
@@ -213,22 +222,22 @@ class TestIniFile < Test::Unit::TestCase
|
|
213
222
|
|
214
223
|
def test_initialize
|
215
224
|
# see if we can parse different style comments
|
216
|
-
#assert_raise(
|
225
|
+
#assert_raise(IniFile::Error) {IniFile.new 'test/data/comment.ini'}
|
217
226
|
|
218
|
-
ini_file =
|
227
|
+
ini_file = IniFile.new 'test/data/comment.ini', :comment => '#'
|
219
228
|
assert_equal true, ini_file.has_section?('section_one')
|
220
229
|
|
221
230
|
# see if we can parse different style param separators
|
222
|
-
assert_raise(
|
231
|
+
assert_raise(IniFile::Error) {IniFile.new 'test/data/param.ini'}
|
223
232
|
|
224
|
-
ini_file =
|
233
|
+
ini_file = IniFile.new 'test/data/param.ini', :parameter => ':'
|
225
234
|
assert_equal true, ini_file.has_section?('section_one')
|
226
235
|
assert_equal '1', ini_file['section_one']['one']
|
227
236
|
assert_equal '2', ini_file['section_one']['two']
|
228
237
|
|
229
238
|
# make sure we error out on files with bad lines
|
230
|
-
assert_raise(
|
231
|
-
assert_raise(
|
239
|
+
assert_raise(IniFile::Error) {IniFile.new 'test/data/bad_1.ini'}
|
240
|
+
assert_raise(IniFile::Error) {IniFile.new 'test/data/bad_2.ini'}
|
232
241
|
end
|
233
242
|
|
234
243
|
def test_sections
|
@@ -239,7 +248,7 @@ class TestIniFile < Test::Unit::TestCase
|
|
239
248
|
|
240
249
|
assert_equal expected, @ini_file.sections.sort
|
241
250
|
|
242
|
-
ini_file =
|
251
|
+
ini_file = IniFile.new 'temp.ini'
|
243
252
|
assert_equal [], ini_file.sections
|
244
253
|
end
|
245
254
|
|
@@ -259,18 +268,67 @@ class TestIniFile < Test::Unit::TestCase
|
|
259
268
|
|
260
269
|
def test_write
|
261
270
|
tmp = 'test/data/temp.ini'
|
262
|
-
|
271
|
+
File.delete tmp if Kernel.test(?f, tmp)
|
263
272
|
|
264
273
|
@ini_file.save tmp
|
265
|
-
assert_equal true,
|
274
|
+
assert_equal true, Kernel.test(?f, tmp)
|
266
275
|
|
267
|
-
|
276
|
+
File.delete tmp if Kernel.test(?f, tmp)
|
268
277
|
|
269
|
-
ini_file =
|
278
|
+
ini_file = IniFile.new tmp
|
270
279
|
ini_file.save
|
271
|
-
assert_nil
|
280
|
+
assert_nil Kernel.test(?s, tmp)
|
281
|
+
|
282
|
+
File.delete tmp if Kernel.test(?f, tmp)
|
283
|
+
end
|
284
|
+
|
285
|
+
def test_modifies_current_keys
|
286
|
+
ini = IniFile.load("test/data/tmp.ini")
|
287
|
+
ini["section one"]["one"] = 17
|
288
|
+
ini.save
|
289
|
+
|
290
|
+
assert File.read("test/data/tmp.ini") =~ /one = 17/
|
291
|
+
end
|
292
|
+
|
293
|
+
def test_can_add_key_to_inifile
|
294
|
+
ini_file = IniFile.new("test/data/tmp.ini")
|
295
|
+
ini_file["new_section"] = {}
|
296
|
+
ini_file.save
|
297
|
+
|
298
|
+
assert File.read("test/data/tmp.ini") =~ /\[new_section\]/
|
299
|
+
end
|
300
|
+
|
301
|
+
def test_adds_correct_key_to_inifile
|
302
|
+
ini_file = IniFile.new("test/data/tmp.ini")
|
303
|
+
ini_file["foo"] = {}
|
304
|
+
ini_file.save
|
305
|
+
|
306
|
+
assert File.read("test/data/tmp.ini") =~ /\[foo\]/
|
307
|
+
end
|
308
|
+
|
309
|
+
def test_assigns_values_to_inifile
|
310
|
+
ini_file = IniFile.new("test/data/tmp.ini")
|
311
|
+
ini_file["foo"] = {
|
312
|
+
:bar => "baz"
|
313
|
+
}
|
314
|
+
|
315
|
+
assert_equal ini_file["foo"], { :bar => "baz" }
|
316
|
+
end
|
317
|
+
|
318
|
+
def test_assigns_correct_values_to_inifile
|
319
|
+
ini_file = IniFile.new("test/data/tmp.ini")
|
320
|
+
ini_file["foo"] = {
|
321
|
+
:one => "two"
|
322
|
+
}
|
323
|
+
|
324
|
+
assert_equal ini_file["foo"], { :one => "two" }
|
325
|
+
end
|
272
326
|
|
273
|
-
|
327
|
+
def test_assignment_stringifies_key
|
328
|
+
ini_file = IniFile.new("test/data/tmp.ini")
|
329
|
+
ini_file["foo"] = {:one => :two}
|
330
|
+
ini_file[:foo] = {}
|
331
|
+
assert_equal ini_file["foo"], {}
|
274
332
|
end
|
275
333
|
end
|
276
334
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inifile
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Pease
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-12-10 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 1.
|
23
|
+
version: 1.1.1
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: bones
|
@@ -30,7 +30,7 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 3.
|
33
|
+
version: 3.2.0
|
34
34
|
version:
|
35
35
|
description: This is a native Ruby package for reading and writing INI files.
|
36
36
|
email: tim.pease@gmail.com
|
@@ -40,11 +40,10 @@ extensions: []
|
|
40
40
|
|
41
41
|
extra_rdoc_files:
|
42
42
|
- History.txt
|
43
|
-
- Manifest.txt
|
44
43
|
- README.txt
|
45
44
|
files:
|
45
|
+
- .gitignore
|
46
46
|
- History.txt
|
47
|
-
- Manifest.txt
|
48
47
|
- README.txt
|
49
48
|
- Rakefile
|
50
49
|
- lib/inifile.rb
|
data/Manifest.txt
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
History.txt
|
2
|
-
Manifest.txt
|
3
|
-
README.txt
|
4
|
-
Rakefile
|
5
|
-
lib/inifile.rb
|
6
|
-
tasks/annotations.rake
|
7
|
-
tasks/doc.rake
|
8
|
-
tasks/gem.rake
|
9
|
-
tasks/manifest.rake
|
10
|
-
tasks/rubyforge.rake
|
11
|
-
tasks/setup.rb
|
12
|
-
tasks/svn.rake
|
13
|
-
tasks/test.rake
|
14
|
-
test/data/bad_1.ini
|
15
|
-
test/data/bad_2.ini
|
16
|
-
test/data/comment.ini
|
17
|
-
test/data/good.ini
|
18
|
-
test/data/mixed_comment.ini
|
19
|
-
test/data/param.ini
|
20
|
-
test/test_inifile.rb
|