iniparse 1.4.4 → 1.5.0

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
- SHA1:
3
- metadata.gz: 68ca74b2d2a47beb58775462ebd3c928038ce47e
4
- data.tar.gz: a135ace378ac6fc2d7ac02c0d5994fccbbb618cc
2
+ SHA256:
3
+ metadata.gz: 54777f2c94d29a5e70dd169e7c29b22cfe9d4ff5950e11fcfc29de8598d133ec
4
+ data.tar.gz: 10cbe66f1aae3b50bbbeab08e49e507cb72641baf6363f408376cedf83bf987c
5
5
  SHA512:
6
- metadata.gz: 4bc926b7837a569f77b57a8149185fce5d30e70b0bb135c71d86ff2a5732d6a3a72ef875719d6d1664083f85c1eb7a5f28b4bb6ddf153d394883ecada093af76
7
- data.tar.gz: c5755e73204068b68df3f72ee72de32ec852972aaa531818b8e23075d0ee87a860c96bbf5711eb9e4dfe05009bc3c29ec760098a58a62b0c0cef66e4e1ed6eb6
6
+ metadata.gz: a948e61819671e50baa31ab3546326609d9c8e806d44dc0b76a4edc99cb3403224b4238762edb4d539c47e8a163e66e2f4c6705e6952d77cc4956898884783a2
7
+ data.tar.gz: 00b9a86378d0d1592914237e9c307bcc7804723293d834d440aaa9a23c552192b4961bae904433bd90851b8037d25bfb73c2aef350179c1577710f978472c1e7
@@ -0,0 +1,41 @@
1
+ ### 1.5.0
2
+
3
+ * OptionCollection no longer yields duplicate keys as an array, but instead yields each key in turn.
4
+
5
+ For example, given an INI file:
6
+
7
+ [test]
8
+ a = 1
9
+ a = 2
10
+ b = 3
11
+
12
+ IniParse would previously yield a single "a" key: an array containing two `Line`s:
13
+
14
+ doc['test'].map { |line| line }
15
+ # => [[<a = 1>, <a = 2>], <b = 3>]
16
+
17
+ Instead, each key/value pair will be yielded in turn:
18
+
19
+ doc['test'].map { |line| line }
20
+ # => [<a = 1>, <a = 2>, <b = 3>]
21
+
22
+ Directly accessing values via `[]` will still return an array of values as before:
23
+
24
+ doc['test']['a']
25
+ # => [1, 2]
26
+
27
+ * LineCollection#each may be called without a block, returning an Enumerator.
28
+
29
+ doc = IniParse.parse(<<~EOF)
30
+ [test]
31
+ a = x
32
+ b = y
33
+ EOF
34
+
35
+ doc[test].each
36
+ # => #<Enumerator: ...>
37
+
38
+ This allows for chaining as in the standard library:
39
+
40
+ doc['test'].map.with_index { |a, i| { index: i, value: a.value } }
41
+ # => [{ index: 0, value: 'x' }, { index: 1, value: 'y' }]
data/Rakefile CHANGED
@@ -23,10 +23,6 @@ def date
23
23
  Date.today.to_s
24
24
  end
25
25
 
26
- def rubyforge_project
27
- name
28
- end
29
-
30
26
  def gemspec_file
31
27
  "#{name}.gemspec"
32
28
  end
@@ -77,8 +73,6 @@ task :gemspec => :validate do
77
73
  replace_header(head, :name)
78
74
  replace_header(head, :version)
79
75
  replace_header(head, :date)
80
- #comment this out if your rubyforge_project has a different name
81
- replace_header(head, :rubyforge_project)
82
76
 
83
77
  # determine file list from git ls-files
84
78
  files = `git ls-files`.
@@ -12,9 +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.4'
16
- s.date = '2017-07-04'
17
- s.rubyforge_project = 'iniparse'
15
+ s.version = '1.5.0'
16
+ s.date = '2020-02-27'
18
17
 
19
18
  s.summary = 'A pure Ruby library for parsing INI documents.'
20
19
  s.authors = ['Anthony Williams']
@@ -36,6 +35,7 @@ Gem::Specification.new do |s|
36
35
 
37
36
  # = MANIFEST =
38
37
  s.files = %w[
38
+ CHANGELOG.md
39
39
  Gemfile
40
40
  LICENSE
41
41
  README.rdoc
@@ -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.4'
10
+ VERSION = '1.5.0'.freeze
11
11
 
12
12
  # A base class for IniParse errors.
13
13
  class IniParseError < StandardError; end
@@ -57,6 +57,8 @@ module IniParse
57
57
  # include_blank<Boolean>:: Include blank/comment lines?
58
58
  #
59
59
  def each(include_blank = false)
60
+ return enum_for(:each, include_blank) unless block_given?
61
+
60
62
  @lines.each do |line|
61
63
  if include_blank || ! (line.is_a?(Array) ? line.empty? : line.blank?)
62
64
  yield(line)
@@ -161,10 +163,22 @@ module IniParse
161
163
  self
162
164
  end
163
165
 
166
+ def each(*args)
167
+ return enum_for(:each, *args) unless block_given?
168
+
169
+ super(*args) do |value|
170
+ if value.is_a?(Array)
171
+ value.each { |item| yield(item) }
172
+ else
173
+ yield value
174
+ end
175
+ end
176
+ end
177
+
164
178
  # Return an array containing the keys for the lines added to this
165
179
  # collection.
166
180
  def keys
167
- map { |line| line.kind_of?(Array) ? line.first.key : line.key }
181
+ map(&:key).uniq
168
182
  end
169
183
  end
170
184
  end
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.4
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anthony Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-04 00:00:00.000000000 Z
11
+ date: 2020-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -33,6 +33,7 @@ extra_rdoc_files:
33
33
  - LICENSE
34
34
  - README.rdoc
35
35
  files:
36
+ - CHANGELOG.md
36
37
  - Gemfile
37
38
  - LICENSE
38
39
  - README.rdoc
@@ -65,8 +66,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
66
  - !ruby/object:Gem::Version
66
67
  version: '0'
67
68
  requirements: []
68
- rubyforge_project: iniparse
69
- rubygems_version: 2.5.1
69
+ rubygems_version: 3.0.3
70
70
  signing_key:
71
71
  specification_version: 2
72
72
  summary: A pure Ruby library for parsing INI documents.