iniparse 1.1.3 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/History +4 -0
- data/README.rdoc +1 -1
- data/Rakefile +95 -40
- data/TODO +2 -0
- data/iniparse.gemspec +66 -0
- data/lib/iniparse.rb +1 -1
- data/lib/iniparse/lines.rb +2 -2
- data/spec/document_spec.rb +1 -1
- data/spec/fixture_spec.rb +1 -1
- data/spec/generator/method_missing_spec.rb +1 -1
- data/spec/generator/with_section_blocks_spec.rb +1 -1
- data/spec/generator/without_section_blocks_spec.rb +1 -1
- data/spec/iniparse_spec.rb +1 -1
- data/spec/line_collection_spec.rb +4 -2
- data/spec/lines_spec.rb +1 -1
- data/spec/parser/document_parsing_spec.rb +1 -1
- data/spec/parser/line_parsing_spec.rb +16 -1
- data/spec/spec_helper.rb +3 -1
- data/spec/spec_helper_spec.rb +1 -1
- metadata +22 -13
- data/VERSION +0 -1
data/History
CHANGED
data/README.rdoc
CHANGED
@@ -10,7 +10,7 @@ or you feed it an INI file which doesn't work as you'd expected, please mail
|
|
10
10
|
me at +anthony at ninecraft dot com+, ideally with a copy of the INI file in
|
11
11
|
question.
|
12
12
|
|
13
|
-
IniParse tests pass on Ruby 1.8.
|
13
|
+
IniParse tests pass on Ruby 1.8.6p399, 1.8.7p249, and 1.9.1p378, JRuby 1.4.0 and Rubinius 1.0.0 RC2.
|
14
14
|
|
15
15
|
=== Main features
|
16
16
|
|
data/Rakefile
CHANGED
@@ -1,6 +1,43 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'date'
|
4
|
+
|
1
5
|
require 'rake/clean'
|
2
6
|
require 'rake/rdoctask'
|
3
|
-
require '
|
7
|
+
require 'rspec/core/rake_task'
|
8
|
+
|
9
|
+
##############################################################################
|
10
|
+
# Helpers
|
11
|
+
##############################################################################
|
12
|
+
|
13
|
+
def name
|
14
|
+
@name ||= Dir['*.gemspec'].first.split('.').first
|
15
|
+
end
|
16
|
+
|
17
|
+
def version
|
18
|
+
line = File.read("lib/#{name}.rb")[/^\s*VERSION\s*=\s*.*/]
|
19
|
+
line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
|
20
|
+
end
|
21
|
+
|
22
|
+
def date
|
23
|
+
Date.today.to_s
|
24
|
+
end
|
25
|
+
|
26
|
+
def rubyforge_project
|
27
|
+
name
|
28
|
+
end
|
29
|
+
|
30
|
+
def gemspec_file
|
31
|
+
"#{name}.gemspec"
|
32
|
+
end
|
33
|
+
|
34
|
+
def gem_file
|
35
|
+
"#{name}-#{version}.gem"
|
36
|
+
end
|
37
|
+
|
38
|
+
def replace_header(head, header_name)
|
39
|
+
head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
|
40
|
+
end
|
4
41
|
|
5
42
|
##############################################################################
|
6
43
|
# Packaging & Installation.
|
@@ -8,33 +45,67 @@ require 'spec/rake/spectask'
|
|
8
45
|
|
9
46
|
CLEAN.include ['pkg', '*.gem', 'doc', 'coverage']
|
10
47
|
|
11
|
-
|
12
|
-
|
48
|
+
desc 'Build the gem, and push to Github'
|
49
|
+
task :release => :build do
|
50
|
+
unless `git branch` =~ /^\* master$/
|
51
|
+
puts "You must be on the master branch to release!"
|
52
|
+
exit!
|
53
|
+
end
|
54
|
+
sh "git commit --allow-empty -a -m 'Release #{version}'"
|
55
|
+
sh "git tag v#{version}"
|
56
|
+
sh "git push origin master"
|
57
|
+
sh "git push origin v#{version}"
|
58
|
+
|
59
|
+
puts "Push to Rubygems.org with"
|
60
|
+
puts " gem push pkg/#{name}-#{version}.gem"
|
61
|
+
end
|
13
62
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
gem.email = 'anthony@ninecraft.com'
|
21
|
-
gem.homepage = 'http://github.com/antw/iniparse'
|
63
|
+
desc 'Builds the IniParse gem'
|
64
|
+
task :build => :gemspec do
|
65
|
+
sh "mkdir -p pkg"
|
66
|
+
sh "gem build #{gemspec_file}"
|
67
|
+
sh "mv #{gem_file} pkg"
|
68
|
+
end
|
22
69
|
|
23
|
-
|
24
|
-
|
70
|
+
desc 'Creates a fresh gemspec'
|
71
|
+
task :gemspec => :validate do
|
72
|
+
# read spec file and split out manifest section
|
73
|
+
spec = File.read(gemspec_file)
|
74
|
+
head, manifest, tail = spec.split(" # = MANIFEST =\n")
|
25
75
|
|
26
|
-
|
27
|
-
|
28
|
-
|
76
|
+
# replace name version and date
|
77
|
+
replace_header(head, :name)
|
78
|
+
replace_header(head, :version)
|
79
|
+
replace_header(head, :date)
|
80
|
+
#comment this out if your rubyforge_project has a different name
|
81
|
+
replace_header(head, :rubyforge_project)
|
29
82
|
|
30
|
-
|
31
|
-
|
32
|
-
|
83
|
+
# determine file list from git ls-files
|
84
|
+
files = `git ls-files`.
|
85
|
+
split("\n").
|
86
|
+
sort.
|
87
|
+
reject { |file| file =~ /^\./ }.
|
88
|
+
reject { |file| file =~ /^(rdoc|pkg)/ }.
|
89
|
+
map { |file| " #{file}" }.
|
90
|
+
join("\n")
|
33
91
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
92
|
+
# piece file back together and write
|
93
|
+
manifest = " s.files = %w[\n#{files}\n ]\n"
|
94
|
+
spec = [head, manifest, tail].join(" # = MANIFEST =\n")
|
95
|
+
File.open(gemspec_file, 'w') { |io| io.write(spec) }
|
96
|
+
puts "Updated #{gemspec_file}"
|
97
|
+
end
|
98
|
+
|
99
|
+
task :validate do
|
100
|
+
libfiles = Dir['lib/*'] - ["lib/#{name}.rb", "lib/#{name}"]
|
101
|
+
unless libfiles.empty?
|
102
|
+
puts "Directory `lib` should only contain a `#{name}.rb` file and `#{name}` dir."
|
103
|
+
exit!
|
104
|
+
end
|
105
|
+
unless Dir['VERSION*'].empty?
|
106
|
+
puts "A `VERSION` file at root level violates Gem best practices."
|
107
|
+
exit!
|
108
|
+
end
|
38
109
|
end
|
39
110
|
|
40
111
|
##############################################################################
|
@@ -42,8 +113,6 @@ end
|
|
42
113
|
##############################################################################
|
43
114
|
|
44
115
|
Rake::RDocTask.new do |rdoc|
|
45
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
46
|
-
|
47
116
|
rdoc.rdoc_dir = 'rdoc'
|
48
117
|
rdoc.title = "iniparse #{version}"
|
49
118
|
rdoc.rdoc_files.include('README*')
|
@@ -54,20 +123,6 @@ end
|
|
54
123
|
# Tests & Metrics.
|
55
124
|
##############################################################################
|
56
125
|
|
57
|
-
|
58
|
-
Spec::Rake::SpecTask.new(:spec) do |spec|
|
59
|
-
spec.libs << 'lib' << 'spec'
|
60
|
-
spec.spec_files = FileList['spec/**/*_spec.rb']
|
61
|
-
spec.spec_opts = ['-c -f p']
|
62
|
-
end
|
63
|
-
|
64
|
-
desc "Run all examples with RCov"
|
65
|
-
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
66
|
-
spec.libs << 'lib' << 'spec'
|
126
|
+
RSpec::Core::RakeTask.new('spec') do |spec|
|
67
127
|
spec.pattern = 'spec/**/*_spec.rb'
|
68
|
-
spec.spec_opts = ['-c -f s']
|
69
|
-
spec.rcov = true
|
70
|
-
spec.rcov_opts = ['--exclude', 'spec']
|
71
128
|
end
|
72
|
-
|
73
|
-
task :spec => :check_dependencies
|
data/TODO
ADDED
data/iniparse.gemspec
ADDED
@@ -0,0 +1,66 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.specification_version = 2 if s.respond_to? :specification_version=
|
8
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
|
+
s.rubygems_version = '1.3.5'
|
10
|
+
|
11
|
+
## Leave these as is they will be modified for you by the rake gemspec task.
|
12
|
+
## If your rubyforge_project name is different, then edit it and comment out
|
13
|
+
## the sub! line in the Rakefile
|
14
|
+
s.name = 'iniparse'
|
15
|
+
s.version = '1.1.4'
|
16
|
+
s.date = '2010-09-02'
|
17
|
+
s.rubyforge_project = 'iniparse'
|
18
|
+
|
19
|
+
s.summary = 'A pure Ruby library for parsing INI documents.'
|
20
|
+
s.authors = ['Anthony Williams']
|
21
|
+
s.email = 'hi@antw.me'
|
22
|
+
s.homepage = 'http://github.com/antw/iniparse'
|
23
|
+
|
24
|
+
s.require_paths = %w(lib)
|
25
|
+
|
26
|
+
s.rdoc_options = ['--charset=UTF-8']
|
27
|
+
s.extra_rdoc_files = %w(History LICENSE README.rdoc)
|
28
|
+
|
29
|
+
# Dependencies.
|
30
|
+
s.add_development_dependency('rspec', '>= 2.0.0.beta.20')
|
31
|
+
|
32
|
+
# = MANIFEST =
|
33
|
+
s.files = %w[
|
34
|
+
History
|
35
|
+
LICENSE
|
36
|
+
README.rdoc
|
37
|
+
Rakefile
|
38
|
+
TODO
|
39
|
+
iniparse.gemspec
|
40
|
+
lib/iniparse.rb
|
41
|
+
lib/iniparse/document.rb
|
42
|
+
lib/iniparse/generator.rb
|
43
|
+
lib/iniparse/line_collection.rb
|
44
|
+
lib/iniparse/lines.rb
|
45
|
+
lib/iniparse/parser.rb
|
46
|
+
spec/document_spec.rb
|
47
|
+
spec/fixture_spec.rb
|
48
|
+
spec/fixtures/openttd.ini
|
49
|
+
spec/fixtures/race07.ini
|
50
|
+
spec/fixtures/smb.ini
|
51
|
+
spec/generator/method_missing_spec.rb
|
52
|
+
spec/generator/with_section_blocks_spec.rb
|
53
|
+
spec/generator/without_section_blocks_spec.rb
|
54
|
+
spec/iniparse_spec.rb
|
55
|
+
spec/line_collection_spec.rb
|
56
|
+
spec/lines_spec.rb
|
57
|
+
spec/parser/document_parsing_spec.rb
|
58
|
+
spec/parser/line_parsing_spec.rb
|
59
|
+
spec/spec_fixtures.rb
|
60
|
+
spec/spec_helper.rb
|
61
|
+
spec/spec_helper_spec.rb
|
62
|
+
]
|
63
|
+
# = MANIFEST =
|
64
|
+
|
65
|
+
s.test_files = s.files.select { |path| path =~ /^spec\/.*\.rb/ }
|
66
|
+
end
|
data/lib/iniparse.rb
CHANGED
@@ -7,7 +7,7 @@ require File.join(dir, 'lines')
|
|
7
7
|
require File.join(dir, 'parser')
|
8
8
|
|
9
9
|
module IniParse
|
10
|
-
VERSION =
|
10
|
+
VERSION = '1.1.4'
|
11
11
|
|
12
12
|
# A base class for IniParse errors.
|
13
13
|
class IniParseError < StandardError; end
|
data/lib/iniparse/lines.rb
CHANGED
data/spec/document_spec.rb
CHANGED
data/spec/fixture_spec.rb
CHANGED
data/spec/iniparse_spec.rb
CHANGED
@@ -1,10 +1,10 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
# ----------------------------------------------------------------------------
|
4
4
|
# Shared specs for all Collection types...
|
5
5
|
# ----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
|
7
|
+
share_examples_for "LineCollection" do
|
8
8
|
before(:each) do
|
9
9
|
@collection << (@c1 = IniParse::Lines::Comment.new)
|
10
10
|
@collection << @i1
|
@@ -180,6 +180,7 @@ describe 'IniParse::OptionCollection' do
|
|
180
180
|
|
181
181
|
describe '#keys' do
|
182
182
|
it 'should handle duplicates' do
|
183
|
+
@collection << @i1 << @i2 << @i3
|
183
184
|
@collection << IniParse::Lines::Option.new('first', 'v5')
|
184
185
|
@collection.keys.should == ['first', 'second', 'third']
|
185
186
|
end
|
@@ -205,6 +206,7 @@ describe 'IniParse::SectionCollection' do
|
|
205
206
|
|
206
207
|
it 'should add merge Section with the other, if it is a duplicate' do
|
207
208
|
new_section = IniParse::Lines::Section.new('first')
|
209
|
+
@collection << @i1
|
208
210
|
@i1.should_receive(:merge!).with(new_section).once
|
209
211
|
@collection << new_section
|
210
212
|
end
|
data/spec/lines_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
# Tests parsing of individual, out of context, line types using #parse_line.
|
4
4
|
|
@@ -154,6 +154,21 @@ describe 'Parsing a line' do
|
|
154
154
|
end
|
155
155
|
end
|
156
156
|
|
157
|
+
|
158
|
+
describe 'with "key = EEjDDJJjDJDJD233232=="' do
|
159
|
+
it 'should include the "equals" in the option value' do
|
160
|
+
IniParse::Parser.parse_line('key = EEjDDJJjDJDJD233232==').should \
|
161
|
+
be_option_tuple('key', 'EEjDDJJjDJDJD233232==')
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
describe 'with "key = ==EEjDDJJjDJDJD233232"' do
|
166
|
+
it 'should include the "equals" in the option value' do
|
167
|
+
IniParse::Parser.parse_line('key = ==EEjDDJJjDJDJD233232').should \
|
168
|
+
be_option_tuple('key', '==EEjDDJJjDJDJD233232')
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
157
172
|
describe 'with "key.two = value"' do
|
158
173
|
it 'should return an option tuple with the correct key' do
|
159
174
|
IniParse::Parser.parse_line('key.two = value').should \
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
$:.push File.join(File.dirname(__FILE__), '..', 'lib')
|
2
2
|
|
3
3
|
require 'rubygems'
|
4
|
+
require 'rspec'
|
5
|
+
|
4
6
|
require 'iniparse'
|
5
7
|
require File.join(File.dirname(__FILE__), 'spec_fixtures')
|
6
8
|
|
@@ -161,6 +163,6 @@ module IniParse
|
|
161
163
|
end
|
162
164
|
end
|
163
165
|
|
164
|
-
|
166
|
+
RSpec.configure do |config|
|
165
167
|
config.include(IniParse::Test::Helpers)
|
166
168
|
end
|
data/spec/spec_helper_spec.rb
CHANGED
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iniparse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 1
|
7
8
|
- 1
|
8
|
-
-
|
9
|
-
version: 1.1.
|
9
|
+
- 4
|
10
|
+
version: 1.1.4
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- Anthony Williams
|
@@ -14,25 +15,29 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2010-
|
18
|
+
date: 2010-09-02 00:00:00 +01:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: rspec
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
24
26
|
requirements:
|
25
27
|
- - ">="
|
26
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 62196427
|
27
30
|
segments:
|
28
|
-
- 1
|
29
31
|
- 2
|
30
32
|
- 0
|
31
|
-
|
33
|
+
- 0
|
34
|
+
- beta
|
35
|
+
- 20
|
36
|
+
version: 2.0.0.beta.20
|
32
37
|
type: :development
|
33
38
|
version_requirements: *id001
|
34
|
-
description:
|
35
|
-
email:
|
39
|
+
description:
|
40
|
+
email: hi@antw.me
|
36
41
|
executables: []
|
37
42
|
|
38
43
|
extensions: []
|
@@ -41,12 +46,13 @@ extra_rdoc_files:
|
|
41
46
|
- History
|
42
47
|
- LICENSE
|
43
48
|
- README.rdoc
|
44
|
-
- VERSION
|
45
49
|
files:
|
50
|
+
- History
|
46
51
|
- LICENSE
|
47
52
|
- README.rdoc
|
48
53
|
- Rakefile
|
49
|
-
-
|
54
|
+
- TODO
|
55
|
+
- iniparse.gemspec
|
50
56
|
- lib/iniparse.rb
|
51
57
|
- lib/iniparse/document.rb
|
52
58
|
- lib/iniparse/generator.rb
|
@@ -69,7 +75,6 @@ files:
|
|
69
75
|
- spec/spec_fixtures.rb
|
70
76
|
- spec/spec_helper.rb
|
71
77
|
- spec/spec_helper_spec.rb
|
72
|
-
- History
|
73
78
|
has_rdoc: true
|
74
79
|
homepage: http://github.com/antw/iniparse
|
75
80
|
licenses: []
|
@@ -80,25 +85,29 @@ rdoc_options:
|
|
80
85
|
require_paths:
|
81
86
|
- lib
|
82
87
|
required_ruby_version: !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
83
89
|
requirements:
|
84
90
|
- - ">="
|
85
91
|
- !ruby/object:Gem::Version
|
92
|
+
hash: 3
|
86
93
|
segments:
|
87
94
|
- 0
|
88
95
|
version: "0"
|
89
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
90
98
|
requirements:
|
91
99
|
- - ">="
|
92
100
|
- !ruby/object:Gem::Version
|
101
|
+
hash: 3
|
93
102
|
segments:
|
94
103
|
- 0
|
95
104
|
version: "0"
|
96
105
|
requirements: []
|
97
106
|
|
98
|
-
rubyforge_project:
|
99
|
-
rubygems_version: 1.3.
|
107
|
+
rubyforge_project: iniparse
|
108
|
+
rubygems_version: 1.3.7
|
100
109
|
signing_key:
|
101
|
-
specification_version:
|
110
|
+
specification_version: 2
|
102
111
|
summary: A pure Ruby library for parsing INI documents.
|
103
112
|
test_files:
|
104
113
|
- spec/document_spec.rb
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
1.1.3
|