ini_file 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +104 -0
- data/lib/ini_file/content.rb +2 -2
- data/lib/ini_file/version.rb +1 -1
- data/spec/ini_file/content_spec.rb +4 -4
- data/spec/ini_file/parser_spec.rb +0 -15
- metadata +62 -39
- data/README.rdoc +0 -1
- data/Rakefile +0 -16
- data/tasks/rcov.rake +0 -11
data/README.md
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
# INI File
|
2
|
+
[![Build Status](https://secure.travis-ci.org/jdantonio/ini_file.png)](http://travis-ci.org/jdantonio/ini_file?branch=master) [![Dependency Status](https://gemnasium.com/jdantonio/ini_file.png)](https://gemnasium.com/jdantonio/ini_file)
|
3
|
+
|
4
|
+
A simple gem for reading INI files. Originally written because I wanted to read
|
5
|
+
my Git config file in Ruby programs. Now supports virtually all features described
|
6
|
+
in the [Wikipedia page](http://en.wikipedia.org/wiki/INI_file). Key/value pairs
|
7
|
+
can be accessed from the +IniFile+ object using both hash syntax and attribute
|
8
|
+
reader syntax.
|
9
|
+
|
10
|
+
The project is hosted on the following sites:
|
11
|
+
|
12
|
+
* [RubyGems project page](https://rubygems.org/gems/ini_file)
|
13
|
+
* [Source code on GitHub](https://github.com/jdantonio/ini_file)
|
14
|
+
* [YARD documentation on RubyDoc.org](http://rubydoc.info/github/jdantonio/ini_file/)
|
15
|
+
* [Continuous integration on Travis-CI](https://travis-ci.org/jdantonio/ini_file)
|
16
|
+
* [Dependency tracking on Gemnasium](https://gemnasium.com/jdantonio/ini_file)
|
17
|
+
* [Follow me on Twitter](https://twitter.com/jerrydantonio)
|
18
|
+
|
19
|
+
## Supported Ruby Versions
|
20
|
+
|
21
|
+
* ruby-1.9.2
|
22
|
+
* ruby-1.9.3
|
23
|
+
* ruby-2.0.0
|
24
|
+
* jruby-1.7.0
|
25
|
+
|
26
|
+
## Installation
|
27
|
+
|
28
|
+
Install from RubyGems:
|
29
|
+
|
30
|
+
gem install ini_file
|
31
|
+
|
32
|
+
or add the following line to Gemfile:
|
33
|
+
|
34
|
+
gem 'ini_file'
|
35
|
+
|
36
|
+
and run *bundle install* from your shell.
|
37
|
+
|
38
|
+
## Usage
|
39
|
+
|
40
|
+
Require INI File within your Ruby project:
|
41
|
+
|
42
|
+
require 'ini_file'
|
43
|
+
|
44
|
+
then use it:
|
45
|
+
|
46
|
+
ini = IniFile.load('~/.gitconfig')
|
47
|
+
|
48
|
+
ini[:user][:name] #=> "Jerry D'Antonio"
|
49
|
+
ini.user.name #=> "Jerry D'Antonio"
|
50
|
+
|
51
|
+
ini[:user].empty? #=> false
|
52
|
+
ini.user.empty? #=> false
|
53
|
+
|
54
|
+
ini.color.each do |key, value|
|
55
|
+
puts "#{key} is set to #{value}"
|
56
|
+
end
|
57
|
+
#=> branch is set to auto
|
58
|
+
#=> diff is set to auto
|
59
|
+
#=> interactive is set to auto
|
60
|
+
#=> status is set to auto
|
61
|
+
|
62
|
+
ini.each_section do |section|
|
63
|
+
puts section.__name__
|
64
|
+
end
|
65
|
+
#=> user
|
66
|
+
#=> alias
|
67
|
+
#=> color
|
68
|
+
#=> core
|
69
|
+
#=> giggle
|
70
|
+
|
71
|
+
ini[:core].to_hash #=> {:editor=>"vim", :excludesfile=>"~/.gitignore"}
|
72
|
+
ini.core.to_hash #=> {:editor=>"vim", :excludesfile=>"~/.gitignore"}
|
73
|
+
|
74
|
+
ini.to_hash #=> {:user=>{:name=>"Jerry D'Antonio", ...
|
75
|
+
|
76
|
+
## Copyright
|
77
|
+
|
78
|
+
Copyright © 2013 [Jerry D'Antonio](https://twitter.com/jerrydantonio).
|
79
|
+
It is free software and may be redistributed under the terms specified in
|
80
|
+
the LICENSE file.
|
81
|
+
|
82
|
+
## License
|
83
|
+
|
84
|
+
Released under the MIT license.
|
85
|
+
|
86
|
+
http://www.opensource.org/licenses/mit-license.php
|
87
|
+
|
88
|
+
> Permission is hereby granted, free of charge, to any person obtaining a copy
|
89
|
+
> of this software and associated documentation files (the "Software"), to deal
|
90
|
+
> in the Software without restriction, including without limitation the rights
|
91
|
+
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
92
|
+
> copies of the Software, and to permit persons to whom the Software is
|
93
|
+
> furnished to do so, subject to the following conditions:
|
94
|
+
>
|
95
|
+
> The above copyright notice and this permission notice shall be included in
|
96
|
+
> all copies or substantial portions of the Software.
|
97
|
+
>
|
98
|
+
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
99
|
+
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
100
|
+
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
101
|
+
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
102
|
+
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
103
|
+
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
104
|
+
> THE SOFTWARE.
|
data/lib/ini_file/content.rb
CHANGED
@@ -4,7 +4,7 @@ module IniFile
|
|
4
4
|
|
5
5
|
class Content
|
6
6
|
|
7
|
-
attr_reader :
|
7
|
+
attr_reader :__name__
|
8
8
|
|
9
9
|
def empty?
|
10
10
|
return @content.empty?
|
@@ -62,7 +62,7 @@ module IniFile
|
|
62
62
|
private
|
63
63
|
|
64
64
|
def initialize(name = nil)
|
65
|
-
@
|
65
|
+
@__name__ = name
|
66
66
|
@content = {}
|
67
67
|
end
|
68
68
|
|
data/lib/ini_file/version.rb
CHANGED
@@ -268,7 +268,7 @@ module IniFile
|
|
268
268
|
|
269
269
|
it 'iterates over each section in the root' do
|
270
270
|
subject.each_section do |section|
|
271
|
-
sections.should include section.
|
271
|
+
sections.should include section.__name__
|
272
272
|
end
|
273
273
|
end
|
274
274
|
|
@@ -280,7 +280,7 @@ module IniFile
|
|
280
280
|
|
281
281
|
it 'does not iterate over properties at the root' do
|
282
282
|
subject.each_section do |section|
|
283
|
-
keys.should_not include section.
|
283
|
+
keys.should_not include section.__name__
|
284
284
|
end
|
285
285
|
end
|
286
286
|
|
@@ -312,7 +312,7 @@ module IniFile
|
|
312
312
|
|
313
313
|
it 'iterates over each section in the root' do
|
314
314
|
subject.section_1.each_section do |section|
|
315
|
-
subsections.should include section.
|
315
|
+
subsections.should include section.__name__
|
316
316
|
end
|
317
317
|
end
|
318
318
|
|
@@ -324,7 +324,7 @@ module IniFile
|
|
324
324
|
|
325
325
|
it 'does not iterate over properties at the root' do
|
326
326
|
subject.section_1.each_section do |section|
|
327
|
-
subsection_keys.should_not include section.
|
327
|
+
subsection_keys.should_not include section.__name__
|
328
328
|
end
|
329
329
|
end
|
330
330
|
|
@@ -31,7 +31,6 @@ module IniFile
|
|
31
31
|
it 'throws an exception if the first argument is not a string' do
|
32
32
|
lambda { subject.parse(123) }.should raise_error(ArgumentError)
|
33
33
|
end
|
34
|
-
|
35
34
|
end
|
36
35
|
|
37
36
|
context 'return value' do
|
@@ -43,7 +42,6 @@ module IniFile
|
|
43
42
|
it 'is an empty hash when the content is only comments' do
|
44
43
|
subject.parse('; this is a comment').should be_empty
|
45
44
|
end
|
46
|
-
|
47
45
|
end
|
48
46
|
|
49
47
|
context 'content' do
|
@@ -163,13 +161,6 @@ module IniFile
|
|
163
161
|
ini = subject.parse('key=This is the VALUE')
|
164
162
|
ini[:key].should eq 'This is the VALUE'
|
165
163
|
end
|
166
|
-
|
167
|
-
it 'allows line continuation when a line ends with a backslash' do
|
168
|
-
pending
|
169
|
-
ini = subject.parse("key=this\\\nvalue")
|
170
|
-
ini[:key].should eq 'this value'
|
171
|
-
end
|
172
|
-
|
173
164
|
end
|
174
165
|
|
175
166
|
context 'escape sequences' do
|
@@ -228,7 +219,6 @@ module IniFile
|
|
228
219
|
ini = subject.parse("key=this\\u1234value")
|
229
220
|
ini[:key].should eq "this\u1234value"
|
230
221
|
end
|
231
|
-
|
232
222
|
end
|
233
223
|
|
234
224
|
context 'comments' do
|
@@ -289,7 +279,6 @@ module IniFile
|
|
289
279
|
ini[:key1].should eq 'value1'
|
290
280
|
ini[:key2].should eq 'value2'
|
291
281
|
end
|
292
|
-
|
293
282
|
end
|
294
283
|
|
295
284
|
context 'sections' do
|
@@ -444,7 +433,6 @@ module IniFile
|
|
444
433
|
subject.parse("[this.is\\the/section,header]")
|
445
434
|
}.should raise_error(IniFormatError)
|
446
435
|
end
|
447
|
-
|
448
436
|
end
|
449
437
|
|
450
438
|
context 'multiple lines' do
|
@@ -465,7 +453,6 @@ module IniFile
|
|
465
453
|
ini[:key1].should eq 'value1'
|
466
454
|
ini[:key2].should eq 'value2'
|
467
455
|
end
|
468
|
-
|
469
456
|
end
|
470
457
|
|
471
458
|
context 'garbage' do
|
@@ -475,7 +462,6 @@ module IniFile
|
|
475
462
|
subject.parse('this line is garbage')
|
476
463
|
}.should raise_error(IniFormatError)
|
477
464
|
end
|
478
|
-
|
479
465
|
end
|
480
466
|
|
481
467
|
context 'property data types' do
|
@@ -492,7 +478,6 @@ module IniFile
|
|
492
478
|
ini[:key1].should be_within(0.1).of(123.45)
|
493
479
|
end
|
494
480
|
end
|
495
|
-
|
496
481
|
end
|
497
482
|
end
|
498
483
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ini_file
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,14 +9,14 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-02-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
@@ -24,15 +24,15 @@ dependencies:
|
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
31
|
+
name: rake
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
|
-
- -
|
35
|
+
- - '>='
|
36
36
|
- !ruby/object:Gem::Version
|
37
37
|
version: '0'
|
38
38
|
type: :development
|
@@ -40,15 +40,15 @@ dependencies:
|
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
47
|
+
name: simplecov
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - '>='
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0'
|
54
54
|
type: :development
|
@@ -56,15 +56,15 @@ dependencies:
|
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
63
|
+
name: rspec
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
65
65
|
none: false
|
66
66
|
requirements:
|
67
|
-
- -
|
67
|
+
- - '>='
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: '0'
|
70
70
|
type: :development
|
@@ -72,15 +72,15 @@ dependencies:
|
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
73
|
none: false
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: '0'
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
|
-
name:
|
79
|
+
name: fakefs
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
81
81
|
none: false
|
82
82
|
requirements:
|
83
|
-
- -
|
83
|
+
- - '>='
|
84
84
|
- !ruby/object:Gem::Version
|
85
85
|
version: '0'
|
86
86
|
type: :development
|
@@ -88,15 +88,15 @@ dependencies:
|
|
88
88
|
version_requirements: !ruby/object:Gem::Requirement
|
89
89
|
none: false
|
90
90
|
requirements:
|
91
|
-
- -
|
91
|
+
- - '>='
|
92
92
|
- !ruby/object:Gem::Version
|
93
93
|
version: '0'
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
|
-
name:
|
95
|
+
name: yard
|
96
96
|
requirement: !ruby/object:Gem::Requirement
|
97
97
|
none: false
|
98
98
|
requirements:
|
99
|
-
- -
|
99
|
+
- - '>='
|
100
100
|
- !ruby/object:Gem::Version
|
101
101
|
version: '0'
|
102
102
|
type: :development
|
@@ -104,33 +104,52 @@ dependencies:
|
|
104
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
|
-
- -
|
107
|
+
- - '>='
|
108
108
|
- !ruby/object:Gem::Version
|
109
109
|
version: '0'
|
110
|
-
|
111
|
-
|
112
|
-
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: redcarpet
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
description: |2
|
127
|
+
The INI file format is an informal standard for configuration files
|
128
|
+
for some platforms or software. INI files are simple text files with
|
129
|
+
a basic structure composed of 'sections' and 'properties'.' - Wikipedia
|
113
130
|
email:
|
114
131
|
- jerry.dantonio@gmail.com
|
115
132
|
executables: []
|
116
133
|
extensions: []
|
117
|
-
extra_rdoc_files:
|
134
|
+
extra_rdoc_files:
|
135
|
+
- README.md
|
136
|
+
- LICENSE
|
118
137
|
files:
|
119
|
-
-
|
120
|
-
- README.rdoc
|
138
|
+
- README.md
|
121
139
|
- LICENSE
|
122
|
-
- lib/ini_file.rb
|
123
|
-
- lib/ini_file/version.rb
|
124
|
-
- lib/ini_file/parser.rb
|
125
140
|
- lib/ini_file/content.rb
|
126
|
-
-
|
127
|
-
-
|
141
|
+
- lib/ini_file/parser.rb
|
142
|
+
- lib/ini_file/version.rb
|
143
|
+
- lib/ini_file.rb
|
128
144
|
- spec/ini_file/content_spec.rb
|
129
145
|
- spec/ini_file/parser_spec.rb
|
130
|
-
-
|
146
|
+
- spec/ini_file_spec.rb
|
147
|
+
- spec/spec_helper.rb
|
131
148
|
homepage: https://github.com/jdantonio/ini_file
|
132
|
-
licenses:
|
133
|
-
|
149
|
+
licenses:
|
150
|
+
- MIT
|
151
|
+
post_install_message: |2
|
152
|
+
Alright you primitive screwheads, listen up. See this? This is my boomstick!'
|
134
153
|
rdoc_options: []
|
135
154
|
require_paths:
|
136
155
|
- lib
|
@@ -138,23 +157,27 @@ require_paths:
|
|
138
157
|
required_ruby_version: !ruby/object:Gem::Requirement
|
139
158
|
none: false
|
140
159
|
requirements:
|
141
|
-
- -
|
160
|
+
- - '>='
|
142
161
|
- !ruby/object:Gem::Version
|
143
|
-
version:
|
162
|
+
version: 1.9.2
|
144
163
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
164
|
none: false
|
146
165
|
requirements:
|
147
|
-
- -
|
166
|
+
- - '>='
|
148
167
|
- !ruby/object:Gem::Version
|
149
168
|
version: '0'
|
169
|
+
segments:
|
170
|
+
- 0
|
171
|
+
hash: -1783671089307373917
|
150
172
|
requirements: []
|
151
173
|
rubyforge_project:
|
152
|
-
rubygems_version: 1.8.
|
174
|
+
rubygems_version: 1.8.25
|
153
175
|
signing_key:
|
154
176
|
specification_version: 3
|
155
177
|
summary: Manage simple INI files.
|
156
178
|
test_files:
|
157
|
-
- spec/ini_file_spec.rb
|
158
|
-
- spec/spec_helper.rb
|
159
179
|
- spec/ini_file/content_spec.rb
|
160
180
|
- spec/ini_file/parser_spec.rb
|
181
|
+
- spec/ini_file_spec.rb
|
182
|
+
- spec/spec_helper.rb
|
183
|
+
has_rdoc:
|
data/README.rdoc
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
README for ini_file
|
data/Rakefile
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
require "rubygems"
|
2
|
-
require "bundler/gem_tasks"
|
3
|
-
require "rspec"
|
4
|
-
require "rspec/core/rake_task"
|
5
|
-
|
6
|
-
$:.unshift 'tasks'
|
7
|
-
Dir.glob('tasks/**/*.rake').each do|rakefile|
|
8
|
-
load rakefile
|
9
|
-
end
|
10
|
-
|
11
|
-
Bundler::GemHelper.install_tasks
|
12
|
-
RSpec::Core::RakeTask.new(:spec) do |t|
|
13
|
-
t.rspec_opts = '-fd --color'
|
14
|
-
end
|
15
|
-
|
16
|
-
#task :default => [:default_task]
|
data/tasks/rcov.rake
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
namespace :rcov do
|
2
|
-
|
3
|
-
RSpec::Core::RakeTask.new(:rspec) do |t|
|
4
|
-
rm "coverage.data" if File.exist?("coverage.data")
|
5
|
-
t.pattern = 'spec/**/*_spec.rb'
|
6
|
-
t.rcov = true
|
7
|
-
t.rcov_opts = %w{--exclude osx\/objc,Users\/,gems\/,spec\/,teamcity}
|
8
|
-
t.verbose = true
|
9
|
-
end
|
10
|
-
|
11
|
-
end
|