iniparse 1.4.2 → 1.4.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 208591a4d54a9cd42aa9d47a5a4ed8ebca97723e
4
- data.tar.gz: 9c351364ea35799017d026dfd77d522e3e3bfc0b
3
+ metadata.gz: ef588e81126741da025ef4c347f46c02b6a63037
4
+ data.tar.gz: 3ecdabf11a24fc32e1241a6371e8e721cc49770a
5
5
  SHA512:
6
- metadata.gz: b3a507a45fd4a0f8191999fc688acfe8b759ec9e2885aef775c20de1a94114549753d5d2153694e93eb4aa74c0467cfb74e51bebc902fd982ddcd3307e6fc783
7
- data.tar.gz: 86ebaa68bddf947264e7359d137d758660de3d880f7c94728244d82a67782434b04918fad22b679f225a6dcde5e7dc14b3a2b08ccb8f87cd0f23d0d7c2fdbe70
6
+ metadata.gz: 74eeab1bc5dbf530b3f8655794dcdc602efbe82e5950feae867d1d3a9e775ce9c82859ec53bb1d8ea0ac64d2a707b7d6691f1767874f36e4182fa07696744648
7
+ data.tar.gz: 1158894ac7fe9d37a44a00b01b90325dbfec459e887cc343772af308407b015a482ff0c4e193dff53ee1d5caeef589d2cae6726e67001ed60c1dd9aeb4977454
@@ -12,8 +12,8 @@ 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.4.2'
16
- s.date = '2015-12-03'
15
+ s.version = '1.4.3'
16
+ s.date = '2017-06-01'
17
17
  s.rubyforge_project = 'iniparse'
18
18
 
19
19
  s.summary = 'A pure Ruby library for parsing INI documents.'
@@ -32,7 +32,7 @@ Gem::Specification.new do |s|
32
32
  s.extra_rdoc_files = %w(LICENSE README.rdoc)
33
33
 
34
34
  # Dependencies.
35
- s.add_development_dependency('rspec', '~> 2.14')
35
+ s.add_development_dependency('rspec', '~> 3.4')
36
36
 
37
37
  # = MANIFEST =
38
38
  s.files = %w[
@@ -7,7 +7,7 @@ require File.join(dir, 'lines')
7
7
  require File.join(dir, 'parser')
8
8
 
9
9
  module IniParse
10
- VERSION = '1.4.2'
10
+ VERSION = '1.4.3'
11
11
 
12
12
  # A base class for IniParse errors.
13
13
  class IniParseError < StandardError; end
@@ -111,7 +111,7 @@ module IniParse
111
111
  include LineCollection
112
112
 
113
113
  def <<(line)
114
- if line.kind_of?(IniParse::Lines::Option)
114
+ if line.kind_of?(IniParse::Lines::Option) || (has_key?('__anonymous__') && (line.blank? || line.kind_of?(IniParse::Lines::Comment)))
115
115
  option = line
116
116
  line = IniParse::Lines::AnonymousSection.new
117
117
 
@@ -11,6 +11,7 @@ module IniParse
11
11
  @comment_prefix = opts.fetch(:comment_prefix, ' ')
12
12
  @comment_offset = opts.fetch(:comment_offset, 0)
13
13
  @indent = opts.fetch(:indent, '')
14
+ @option_sep = opts.fetch(:option_sep, nil)
14
15
  end
15
16
 
16
17
  # Returns if this line has an inline comment.
@@ -54,7 +55,8 @@ module IniParse
54
55
  comment_sep: @comment_sep,
55
56
  comment_prefix: @comment_prefix,
56
57
  comment_offset: @comment_offset,
57
- indent: @indent
58
+ indent: @indent,
59
+ option_sep: @option_sep
58
60
  }
59
61
  end
60
62
  end
@@ -248,9 +250,9 @@ module IniParse
248
250
  class Option
249
251
  include Line
250
252
 
251
- @regex = /^\s*([^=]+) # Option
252
- =
253
- (.*?)$ # Value
253
+ @regex = /^\s*([^=]+?) # Option, not greedy
254
+ (\s*=\s*) # Separator, greedy
255
+ (.*?)$ # Value
254
256
  /x
255
257
 
256
258
  attr_accessor :key, :value
@@ -263,11 +265,13 @@ module IniParse
263
265
  def initialize(key, value, opts = {})
264
266
  super(opts)
265
267
  @key, @value = key.to_s, value
268
+ @option_sep = opts.fetch(:option_sep, ' = ')
266
269
  end
267
270
 
268
271
  def self.parse(line, opts)
269
272
  if m = @regex.match(line)
270
- [:option, m[1].strip, typecast(m[2].strip), opts]
273
+ opts[:option_sep] = m[2]
274
+ [:option, m[1].strip, typecast(m[3].strip), opts]
271
275
  end
272
276
  end
273
277
 
@@ -291,9 +295,9 @@ module IniParse
291
295
  # because of options key duplication
292
296
  def line_contents
293
297
  if value.kind_of?(Array)
294
- value.map { |v, i| "#{key} = #{v}" }
298
+ value.map { |v, i| "#{key}#{@option_sep}#{v}" }
295
299
  else
296
- "#{key} = #{value}"
300
+ "#{key}#{@option_sep}#{value}"
297
301
  end
298
302
  end
299
303
  end
@@ -29,7 +29,7 @@ module IniParse
29
29
  # source<String>:: The source string.
30
30
  #
31
31
  def initialize(source)
32
- @source = source.dup
32
+ @source = source.dup.sub(/\n\z/,'')
33
33
  end
34
34
 
35
35
  # Parses the source string and returns the resulting data structure.
@@ -88,8 +88,6 @@ module IniParse
88
88
  line[(m[1].length..-1)].index(m[2]) + m[1].length
89
89
 
90
90
  line = m[1]
91
- else
92
- line.rstrip!
93
91
  end
94
92
 
95
93
  [line, opts]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iniparse
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 1.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anthony Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-03 00:00:00.000000000 Z
11
+ date: 2017-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.14'
19
+ version: '3.4'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.14'
26
+ version: '3.4'
27
27
  description: A pure Ruby library for parsing INI documents. Preserves the structure
28
28
  of the original document, including whitespace and comments
29
29
  email: hi@antw.me
@@ -66,9 +66,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
66
  version: '0'
67
67
  requirements: []
68
68
  rubyforge_project: iniparse
69
- rubygems_version: 2.2.2
69
+ rubygems_version: 2.5.1
70
70
  signing_key:
71
71
  specification_version: 2
72
72
  summary: A pure Ruby library for parsing INI documents.
73
73
  test_files: []
74
- has_rdoc: