iniparse 1.1.6 → 1.2.0
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.
- checksums.yaml +7 -0
- data/Gemfile +1 -1
- data/README.rdoc +16 -0
- data/Rakefile +1 -1
- data/iniparse.gemspec +8 -21
- data/lib/iniparse.rb +1 -1
- data/lib/iniparse/line_collection.rb +4 -2
- data/lib/iniparse/lines.rb +24 -1
- data/lib/iniparse/parser.rb +4 -3
- metadata +16 -47
- data/spec/document_spec.rb +0 -88
- data/spec/fixture_spec.rb +0 -166
- data/spec/fixtures/openttd.ini +0 -397
- data/spec/fixtures/race07.ini +0 -133
- data/spec/fixtures/smb.ini +0 -102
- data/spec/generator/method_missing_spec.rb +0 -104
- data/spec/generator/with_section_blocks_spec.rb +0 -322
- data/spec/generator/without_section_blocks_spec.rb +0 -136
- data/spec/iniparse_spec.rb +0 -21
- data/spec/line_collection_spec.rb +0 -214
- data/spec/lines_spec.rb +0 -407
- data/spec/parser/document_parsing_spec.rb +0 -82
- data/spec/parser/line_parsing_spec.rb +0 -382
- data/spec/spec_fixtures.rb +0 -62
- data/spec/spec_helper.rb +0 -168
- data/spec/spec_helper_spec.rb +0 -201
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b3fc88cab6fd9b214be0c4baa4b5d3b6729add3e
|
4
|
+
data.tar.gz: 006036392b16391ab8b80394b22607975144cf73
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 83b9c5fb87539797e3cda761063bbbc5d7c26fe5eda392d7d19d60e99e7f5f2833e5744887bef07ed6bc3d2c474337922334b12b1c9e8526dda00a6a8e9eba62
|
7
|
+
data.tar.gz: a4858ba30df58a5bf5c10a9928f6ccaf44bc7f9ade77f8e53effed28b31c4230f4d63391231ff5180c532fe8dfab6a16465774e82c1d4f1809a87158d1151e9c
|
data/Gemfile
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
gemspec
|
data/README.rdoc
CHANGED
@@ -64,6 +64,22 @@ be supplied to you.
|
|
64
64
|
document['my_section']['key']
|
65
65
|
# => ['value', 'another value', 'third value']
|
66
66
|
|
67
|
+
Options which appear before the first section will be added to a section called
|
68
|
+
"__anonymous__".
|
69
|
+
|
70
|
+
document = IniParse.parse <<-EOS
|
71
|
+
driver = true
|
72
|
+
|
73
|
+
[driver]
|
74
|
+
key = value
|
75
|
+
EOS
|
76
|
+
|
77
|
+
document['__anonymous__']['driver']
|
78
|
+
# => true
|
79
|
+
|
80
|
+
document['driver']['key']
|
81
|
+
# => 'value'
|
82
|
+
|
67
83
|
=== Updating an INI file
|
68
84
|
|
69
85
|
document['a_section']['an_option']
|
data/Rakefile
CHANGED
data/iniparse.gemspec
CHANGED
@@ -12,14 +12,19 @@ Gem::Specification.new do |s|
|
|
12
12
|
## If your rubyforge_project name is different, then edit it and comment out
|
13
13
|
## the sub! line in the Rakefile
|
14
14
|
s.name = 'iniparse'
|
15
|
-
s.version = '1.
|
16
|
-
s.date = '
|
15
|
+
s.version = '1.2.0'
|
16
|
+
s.date = '2014-04-08'
|
17
17
|
s.rubyforge_project = 'iniparse'
|
18
18
|
|
19
19
|
s.summary = 'A pure Ruby library for parsing INI documents.'
|
20
20
|
s.authors = ['Anthony Williams']
|
21
21
|
s.email = 'hi@antw.me'
|
22
22
|
s.homepage = 'http://github.com/antw/iniparse'
|
23
|
+
s.licenses = ['MIT']
|
24
|
+
|
25
|
+
s.description = 'A pure Ruby library for parsing INI documents. ' \
|
26
|
+
'Preserves the structure of the original document, ' \
|
27
|
+
'including whitespace and comments'
|
23
28
|
|
24
29
|
s.require_paths = %w(lib)
|
25
30
|
|
@@ -27,7 +32,7 @@ Gem::Specification.new do |s|
|
|
27
32
|
s.extra_rdoc_files = %w(History LICENSE README.rdoc)
|
28
33
|
|
29
34
|
# Dependencies.
|
30
|
-
s.add_development_dependency('rspec', '
|
35
|
+
s.add_development_dependency('rspec', '~> 2.14')
|
31
36
|
|
32
37
|
# = MANIFEST =
|
33
38
|
s.files = %w[
|
@@ -44,24 +49,6 @@ Gem::Specification.new do |s|
|
|
44
49
|
lib/iniparse/line_collection.rb
|
45
50
|
lib/iniparse/lines.rb
|
46
51
|
lib/iniparse/parser.rb
|
47
|
-
spec/document_spec.rb
|
48
|
-
spec/fixture_spec.rb
|
49
|
-
spec/fixtures/openttd.ini
|
50
|
-
spec/fixtures/race07.ini
|
51
|
-
spec/fixtures/smb.ini
|
52
|
-
spec/generator/method_missing_spec.rb
|
53
|
-
spec/generator/with_section_blocks_spec.rb
|
54
|
-
spec/generator/without_section_blocks_spec.rb
|
55
|
-
spec/iniparse_spec.rb
|
56
|
-
spec/line_collection_spec.rb
|
57
|
-
spec/lines_spec.rb
|
58
|
-
spec/parser/document_parsing_spec.rb
|
59
|
-
spec/parser/line_parsing_spec.rb
|
60
|
-
spec/spec_fixtures.rb
|
61
|
-
spec/spec_helper.rb
|
62
|
-
spec/spec_helper_spec.rb
|
63
52
|
]
|
64
53
|
# = MANIFEST =
|
65
|
-
|
66
|
-
s.test_files = s.files.select { |path| path =~ /^spec\/.*\.rb/ }
|
67
54
|
end
|
data/lib/iniparse.rb
CHANGED
@@ -110,8 +110,10 @@ module IniParse
|
|
110
110
|
|
111
111
|
def <<(line)
|
112
112
|
if line.kind_of?(IniParse::Lines::Option)
|
113
|
-
|
114
|
-
|
113
|
+
option = line
|
114
|
+
line = IniParse::Lines::AnonymousSection.new
|
115
|
+
|
116
|
+
line.lines << option if option
|
115
117
|
end
|
116
118
|
|
117
119
|
if line.blank? || (! has_key?(line.key))
|
data/lib/iniparse/lines.rb
CHANGED
@@ -8,6 +8,7 @@ module IniParse
|
|
8
8
|
def initialize(opts = {})
|
9
9
|
@comment = opts.fetch(:comment, nil)
|
10
10
|
@comment_sep = opts.fetch(:comment_sep, ';')
|
11
|
+
@comment_prefix = opts.fetch(:comment_prefix, ' ')
|
11
12
|
@comment_offset = opts.fetch(:comment_offset, 0)
|
12
13
|
@indent = opts.fetch(:indent, '')
|
13
14
|
end
|
@@ -40,7 +41,7 @@ module IniParse
|
|
40
41
|
# Returns the inline comment for this line. Includes the comment
|
41
42
|
# separator at the beginning of the string.
|
42
43
|
def comment
|
43
|
-
|
44
|
+
"#{ @comment_sep }#{ @comment_prefix }#{ @comment }"
|
44
45
|
end
|
45
46
|
|
46
47
|
# Returns whether this is a line which has no data.
|
@@ -192,6 +193,28 @@ module IniParse
|
|
192
193
|
end
|
193
194
|
end
|
194
195
|
|
196
|
+
# Stores options which appear at the beginning of a file, without a
|
197
|
+
# preceding section.
|
198
|
+
class AnonymousSection < Section
|
199
|
+
def initialize
|
200
|
+
super('__anonymous__')
|
201
|
+
end
|
202
|
+
|
203
|
+
def to_ini
|
204
|
+
# Remove the leading space which is added by joining the blank line
|
205
|
+
# content with the options.
|
206
|
+
super.gsub(/\A\n/, '')
|
207
|
+
end
|
208
|
+
|
209
|
+
#######
|
210
|
+
private
|
211
|
+
#######
|
212
|
+
|
213
|
+
def line_contents
|
214
|
+
''
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
195
218
|
# Represents probably the most common type of line in an INI document:
|
196
219
|
# an option. Consists of a key and value, usually separated with an =.
|
197
220
|
#
|
data/lib/iniparse/parser.rb
CHANGED
@@ -77,9 +77,10 @@ module IniParse
|
|
77
77
|
# Strips in inline comment from a line (or value), removes trailing
|
78
78
|
# whitespace and sets the comment options as applicable.
|
79
79
|
def strip_comment(line, opts)
|
80
|
-
if m = /^(^)(?:(;|\#)\s*(.*))$$/.match(line) ||
|
81
|
-
m = /^(.*?)(?:\s+(;|\#)\s*(.*))$/.match(line) # Comment lines.
|
82
|
-
opts[:comment] = m[
|
80
|
+
if m = /^(^)(?:(;|\#)(\s*)(.*))$$/.match(line) ||
|
81
|
+
m = /^(.*?)(?:\s+(;|\#)(\s*)(.*))$/.match(line) # Comment lines.
|
82
|
+
opts[:comment] = m[4].rstrip
|
83
|
+
opts[:comment_prefix] = m[3]
|
83
84
|
opts[:comment_sep] = m[2]
|
84
85
|
# Remove the line content (since an option value may contain a
|
85
86
|
# semi-colon) _then_ get the index of the comment separator.
|
metadata
CHANGED
@@ -1,33 +1,31 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iniparse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Anthony Williams
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-04-08 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: rspec
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 2.
|
19
|
+
version: '2.14'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: 2.
|
30
|
-
description:
|
26
|
+
version: '2.14'
|
27
|
+
description: A pure Ruby library for parsing INI documents. Preserves the structure
|
28
|
+
of the original document, including whitespace and comments
|
31
29
|
email: hi@antw.me
|
32
30
|
executables: []
|
33
31
|
extensions: []
|
@@ -49,59 +47,30 @@ files:
|
|
49
47
|
- lib/iniparse/line_collection.rb
|
50
48
|
- lib/iniparse/lines.rb
|
51
49
|
- lib/iniparse/parser.rb
|
52
|
-
- spec/document_spec.rb
|
53
|
-
- spec/fixture_spec.rb
|
54
|
-
- spec/fixtures/openttd.ini
|
55
|
-
- spec/fixtures/race07.ini
|
56
|
-
- spec/fixtures/smb.ini
|
57
|
-
- spec/generator/method_missing_spec.rb
|
58
|
-
- spec/generator/with_section_blocks_spec.rb
|
59
|
-
- spec/generator/without_section_blocks_spec.rb
|
60
|
-
- spec/iniparse_spec.rb
|
61
|
-
- spec/line_collection_spec.rb
|
62
|
-
- spec/lines_spec.rb
|
63
|
-
- spec/parser/document_parsing_spec.rb
|
64
|
-
- spec/parser/line_parsing_spec.rb
|
65
|
-
- spec/spec_fixtures.rb
|
66
|
-
- spec/spec_helper.rb
|
67
|
-
- spec/spec_helper_spec.rb
|
68
50
|
homepage: http://github.com/antw/iniparse
|
69
|
-
licenses:
|
51
|
+
licenses:
|
52
|
+
- MIT
|
53
|
+
metadata: {}
|
70
54
|
post_install_message:
|
71
55
|
rdoc_options:
|
72
|
-
- --charset=UTF-8
|
56
|
+
- "--charset=UTF-8"
|
73
57
|
require_paths:
|
74
58
|
- lib
|
75
59
|
required_ruby_version: !ruby/object:Gem::Requirement
|
76
|
-
none: false
|
77
60
|
requirements:
|
78
|
-
- -
|
61
|
+
- - ">="
|
79
62
|
- !ruby/object:Gem::Version
|
80
63
|
version: '0'
|
81
64
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
65
|
requirements:
|
84
|
-
- -
|
66
|
+
- - ">="
|
85
67
|
- !ruby/object:Gem::Version
|
86
68
|
version: '0'
|
87
69
|
requirements: []
|
88
70
|
rubyforge_project: iniparse
|
89
|
-
rubygems_version:
|
71
|
+
rubygems_version: 2.2.2
|
90
72
|
signing_key:
|
91
73
|
specification_version: 2
|
92
74
|
summary: A pure Ruby library for parsing INI documents.
|
93
|
-
test_files:
|
94
|
-
- spec/document_spec.rb
|
95
|
-
- spec/fixture_spec.rb
|
96
|
-
- spec/generator/method_missing_spec.rb
|
97
|
-
- spec/generator/with_section_blocks_spec.rb
|
98
|
-
- spec/generator/without_section_blocks_spec.rb
|
99
|
-
- spec/iniparse_spec.rb
|
100
|
-
- spec/line_collection_spec.rb
|
101
|
-
- spec/lines_spec.rb
|
102
|
-
- spec/parser/document_parsing_spec.rb
|
103
|
-
- spec/parser/line_parsing_spec.rb
|
104
|
-
- spec/spec_fixtures.rb
|
105
|
-
- spec/spec_helper.rb
|
106
|
-
- spec/spec_helper_spec.rb
|
75
|
+
test_files: []
|
107
76
|
has_rdoc:
|
data/spec/document_spec.rb
DELETED
@@ -1,88 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "IniParse::Document" do
|
4
|
-
it 'should have a +lines+ reader' do
|
5
|
-
methods = IniParse::Document.instance_methods.map { |m| m.to_sym }
|
6
|
-
methods.should include(:lines)
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'should not have a +lines+ writer' do
|
10
|
-
methods = IniParse::Document.instance_methods.map { |m| m.to_sym }
|
11
|
-
methods.should_not include(:lines=)
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'should delegate #[] to +lines+' do
|
15
|
-
doc = IniParse::Document.new
|
16
|
-
doc.lines.should_receive(:[]).with('key')
|
17
|
-
doc['key']
|
18
|
-
end
|
19
|
-
|
20
|
-
it 'should call #each to +lines+' do
|
21
|
-
doc = IniParse::Document.new
|
22
|
-
doc.lines.should_receive(:each)
|
23
|
-
doc.each { |l| }
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'should be enumerable' do
|
27
|
-
IniParse::Document.included_modules.should include(Enumerable)
|
28
|
-
|
29
|
-
sections = [
|
30
|
-
IniParse::Lines::Section.new('first section'),
|
31
|
-
IniParse::Lines::Section.new('second section')
|
32
|
-
]
|
33
|
-
|
34
|
-
doc = IniParse::Document.new
|
35
|
-
doc.lines << sections[0] << sections[1]
|
36
|
-
|
37
|
-
doc.map { |line| line }.should == sections
|
38
|
-
end
|
39
|
-
|
40
|
-
describe '#has_section?' do
|
41
|
-
before(:all) do
|
42
|
-
@doc = IniParse::Document.new
|
43
|
-
@doc.lines << IniParse::Lines::Section.new('first section')
|
44
|
-
end
|
45
|
-
|
46
|
-
it 'should return true if a section with the given key exists' do
|
47
|
-
@doc.should have_section('first section')
|
48
|
-
end
|
49
|
-
|
50
|
-
it 'should return true if no section with the given key exists' do
|
51
|
-
@doc.should_not have_section('second section')
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
describe '#save' do
|
56
|
-
describe 'when no path is given to save' do
|
57
|
-
it 'should save the INI document if a path was given when initialized' do
|
58
|
-
doc = IniParse::Document.new('/a/path/to/a/file.ini')
|
59
|
-
File.should_receive(:open).with('/a/path/to/a/file.ini', 'w')
|
60
|
-
doc.save
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'should raise IniParseError if no path was given when initialized' do
|
64
|
-
lambda { IniParse::Document.new.save }.should \
|
65
|
-
raise_error(IniParse::IniParseError)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
describe 'when a path is given to save' do
|
70
|
-
it "should update the document's +path+" do
|
71
|
-
File.stub!(:open).and_return(true)
|
72
|
-
doc = IniParse::Document.new('/a/path/to/a/file.ini')
|
73
|
-
doc.save('/a/new/path.ini')
|
74
|
-
doc.path.should == '/a/new/path.ini'
|
75
|
-
end
|
76
|
-
|
77
|
-
it 'should save the INI document to the given path' do
|
78
|
-
File.should_receive(:open).with('/a/new/path.ini', 'w')
|
79
|
-
IniParse::Document.new('/a/path/to/a/file.ini').save('/a/new/path.ini')
|
80
|
-
end
|
81
|
-
|
82
|
-
it 'should raise IniParseError if no path was given when initialized' do
|
83
|
-
lambda { IniParse::Document.new.save }.should \
|
84
|
-
raise_error(IniParse::IniParseError)
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
data/spec/fixture_spec.rb
DELETED
@@ -1,166 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "IniParse" do
|
4
|
-
describe 'openttd.ini fixture' do
|
5
|
-
before(:all) do
|
6
|
-
@fixture = fixture('openttd.ini')
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'should parse without any errors' do
|
10
|
-
lambda { IniParse.parse(@fixture) }.should_not raise_error
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'should have the correct sections' do
|
14
|
-
IniParse.parse(fixture('openttd.ini')).lines.keys.should == [
|
15
|
-
'misc', 'music', 'difficulty', 'game_creation', 'vehicle',
|
16
|
-
'construction', 'station', 'economy', 'pf', 'order', 'gui', 'ai',
|
17
|
-
'locale', 'network', 'currency', 'servers', 'bans', 'news_display',
|
18
|
-
'version', 'preset-J', 'newgrf', 'newgrf-static'
|
19
|
-
]
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'should have the correct options' do
|
23
|
-
# Test the keys from one section.
|
24
|
-
doc = IniParse.parse(@fixture)
|
25
|
-
section = doc['misc']
|
26
|
-
|
27
|
-
section.lines.keys.should == [
|
28
|
-
'display_opt', 'news_ticker_sound', 'fullscreen', 'language',
|
29
|
-
'resolution', 'screenshot_format', 'savegame_format',
|
30
|
-
'rightclick_emulate', 'small_font', 'medium_font', 'large_font',
|
31
|
-
'small_size', 'medium_size', 'large_size', 'small_aa', 'medium_aa',
|
32
|
-
'large_aa', 'sprite_cache_size', 'player_face',
|
33
|
-
'transparency_options', 'transparency_locks', 'invisibility_options',
|
34
|
-
'keyboard', 'keyboard_caps'
|
35
|
-
]
|
36
|
-
|
37
|
-
# Test some of the options.
|
38
|
-
section['display_opt'].should == 'SHOW_TOWN_NAMES|SHOW_STATION_NAMES|SHOW_SIGNS|FULL_ANIMATION|FULL_DETAIL|WAYPOINTS'
|
39
|
-
section['news_ticker_sound'].should be_false
|
40
|
-
section['language'].should == 'english_US.lng'
|
41
|
-
section['resolution'].should == '1680,936'
|
42
|
-
section['large_size'].should == 16
|
43
|
-
|
44
|
-
# Test some other options.
|
45
|
-
doc['currency']['suffix'].should == '" credits"'
|
46
|
-
doc['news_display']['production_nobody'].should == 'summarized'
|
47
|
-
doc['version']['version_number'].should == '070039B0'
|
48
|
-
|
49
|
-
doc['preset-J']['gcf/1_other/BlackCC/mauvetoblackw.grf'].should be_nil
|
50
|
-
doc['preset-J']['gcf/1_other/OpenGFX/OpenGFX_-_newFaces_v0.1.grf'].should be_nil
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'should be identical to the original when calling #to_ini' do
|
54
|
-
IniParse.parse(@fixture).to_ini.should == @fixture
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
describe 'race07.ini fixture' do
|
59
|
-
before(:all) do
|
60
|
-
@fixture = fixture('race07.ini')
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'should parse without any errors' do
|
64
|
-
lambda { IniParse.parse(@fixture) }.should_not raise_error
|
65
|
-
end
|
66
|
-
|
67
|
-
it 'should have the correct sections' do
|
68
|
-
IniParse.parse(fixture('race07.ini')).lines.keys.should == [
|
69
|
-
'Header', 'Race', 'Slot010', 'Slot016', 'Slot013', 'Slot018',
|
70
|
-
'Slot002', 'END'
|
71
|
-
]
|
72
|
-
end
|
73
|
-
|
74
|
-
it 'should have the correct options' do
|
75
|
-
# Test the keys from one section.
|
76
|
-
doc = IniParse.parse(@fixture)
|
77
|
-
section = doc['Slot010']
|
78
|
-
|
79
|
-
section.lines.keys.should == [
|
80
|
-
'Driver', 'SteamUser', 'SteamId', 'Vehicle', 'Team', 'QualTime',
|
81
|
-
'Laps', 'Lap', 'LapDistanceTravelled', 'BestLap', 'RaceTime'
|
82
|
-
]
|
83
|
-
|
84
|
-
# Test some of the options.
|
85
|
-
section['Driver'].should == 'Mark Voss'
|
86
|
-
section['SteamUser'].should == 'mvoss'
|
87
|
-
section['SteamId'].should == 1865369
|
88
|
-
section['Vehicle'].should == 'Chevrolet Lacetti 2007'
|
89
|
-
section['Team'].should == 'TEMPLATE_TEAM'
|
90
|
-
section['QualTime'].should == '1:37.839'
|
91
|
-
section['Laps'].should == 13
|
92
|
-
section['LapDistanceTravelled'].should == 3857.750244
|
93
|
-
section['BestLap'].should == '1:38.031'
|
94
|
-
section['RaceTime'].should == '0:21:38.988'
|
95
|
-
|
96
|
-
section['Lap'].should == [
|
97
|
-
'(0, -1.000, 1:48.697)', '(1, 89.397, 1:39.455)',
|
98
|
-
'(2, 198.095, 1:38.060)', '(3, 297.550, 1:38.632)',
|
99
|
-
'(4, 395.610, 1:38.031)', '(5, 494.242, 1:39.562)',
|
100
|
-
'(6, 592.273, 1:39.950)', '(7, 691.835, 1:38.366)',
|
101
|
-
'(8, 791.785, 1:39.889)', '(9, 890.151, 1:39.420)',
|
102
|
-
'(10, 990.040, 1:39.401)', '(11, 1089.460, 1:39.506)',
|
103
|
-
'(12, 1188.862, 1:40.017)'
|
104
|
-
]
|
105
|
-
|
106
|
-
doc['Header']['Version'].should == '1.1.1.14'
|
107
|
-
doc['Header']['TimeString'].should == '2008/09/13 23:26:32'
|
108
|
-
doc['Header']['Aids'].should == '0,0,0,0,0,1,1,0,0'
|
109
|
-
|
110
|
-
doc['Race']['AIDB'].should == 'GameData\Locations\Anderstorp_2007\2007_ANDERSTORP.AIW'
|
111
|
-
doc['Race']['Race Length'].should == 0.1
|
112
|
-
end
|
113
|
-
|
114
|
-
it 'should be identical to the original when calling #to_ini' do
|
115
|
-
pending('awaiting presevation (or lack) of whitespace around =') do
|
116
|
-
IniParse.parse(@fixture).to_ini.should == @fixture
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
describe 'smb.ini fixture' do
|
122
|
-
before(:all) do
|
123
|
-
@fixture = fixture('smb.ini')
|
124
|
-
end
|
125
|
-
|
126
|
-
it 'should parse without any errors' do
|
127
|
-
lambda { IniParse.parse(@fixture) }.should_not raise_error
|
128
|
-
end
|
129
|
-
|
130
|
-
it 'should have the correct sections' do
|
131
|
-
IniParse.parse(@fixture).lines.keys.should == [
|
132
|
-
'global', 'printers'
|
133
|
-
]
|
134
|
-
end
|
135
|
-
|
136
|
-
it 'should have the correct options' do
|
137
|
-
# Test the keys from one section.
|
138
|
-
doc = IniParse.parse(@fixture)
|
139
|
-
section = doc['global']
|
140
|
-
|
141
|
-
section.lines.keys.should == [
|
142
|
-
'debug pid', 'log level', 'server string', 'printcap name',
|
143
|
-
'printing', 'encrypt passwords', 'use spnego', 'passdb backend',
|
144
|
-
'idmap domains', 'idmap config default: default',
|
145
|
-
'idmap config default: backend', 'idmap alloc backend',
|
146
|
-
'idmap negative cache time', 'map to guest', 'guest account',
|
147
|
-
'unix charset', 'display charset', 'dos charset', 'vfs objects',
|
148
|
-
'os level', 'domain master', 'max xmit', 'use sendfile',
|
149
|
-
'stream support', 'ea support', 'darwin_streams:brlm',
|
150
|
-
'enable core files', 'usershare max shares', 'usershare path',
|
151
|
-
'usershare owner only', 'usershare allow guests',
|
152
|
-
'usershare allow full config', 'com.apple:filter shares by access',
|
153
|
-
'obey pam restrictions', 'acl check permissions',
|
154
|
-
'name resolve order', 'include'
|
155
|
-
]
|
156
|
-
|
157
|
-
section['display charset'].should == 'UTF-8-MAC'
|
158
|
-
section['vfs objects'].should == 'darwinacl,darwin_streams'
|
159
|
-
section['usershare path'].should == '/var/samba/shares'
|
160
|
-
end
|
161
|
-
|
162
|
-
it 'should be identical to the original when calling #to_ini' do
|
163
|
-
IniParse.parse(@fixture).to_ini.should == @fixture
|
164
|
-
end
|
165
|
-
end
|
166
|
-
end
|