sarah 2.1.0 → 2.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.
@@ -1,3 +1,7 @@
1
+ 2014-04-11 Version 2.2.0
2
+
3
+ Also allow :nsq selector for #each and #empty?.
4
+
1
5
  2014-04-10 Version 2.1.0
2
6
 
3
7
  Added :nsq (non-sequential = sparse + random) selector for
@@ -60,11 +60,11 @@
60
60
  # @author Brian Katzung (briank@kappacs.com), Kappa Computer Solutions, LLC
61
61
  # @copyright 2013-2014 Brian Katzung and Kappa Computer Solutions, LLC
62
62
  # @license MIT License
63
- # @version 2.1.0
63
+ # @version 2.2.0
64
64
 
65
65
  class Sarah
66
66
 
67
- VERSION = "2.1.0"
67
+ VERSION = "2.2.0"
68
68
 
69
69
  # Private attributes:
70
70
  # seq [Array] An array of (zero-origin) sequential values.
@@ -550,17 +550,17 @@ class Sarah
550
550
  #
551
551
  # (#each_key alias since 2.0.0)
552
552
  #
553
- # @param which [:all|:ary|:rnd|:seq|:spr] The data structures over
554
- # which to iterate. (Since 2.0.0)
553
+ # @param which [:all|:ary|:nsq|:rnd|:seq|:spr] The data structures over
554
+ # which to iterate. (Since 2.0.0; :nsq since 2.2.0)
555
555
  # @return [Sarah]
556
556
  def each (which = :all)
557
557
  case which when :all, :ary, :seq
558
558
  @seq.each_index { |i| yield i, @seq[i] }
559
559
  end
560
- case which when :all, :ary, :spr
560
+ case which when :all, :ary, :nsq, :spr
561
561
  @spr.keys.sort.each { |i| yield i, @spr[i] }
562
562
  end
563
- case which when :all, :rnd
563
+ case which when :all, :nsq, :rnd
564
564
  @rnd.each { |key, value| yield key, value }
565
565
  end
566
566
  self
@@ -574,13 +574,15 @@ class Sarah
574
574
 
575
575
  # Is the array (or are parts of it) empty?
576
576
  #
577
- # @param which [:all|:ary|:rnd|:seq|:spr] When data structures to check
577
+ # @param which [:all|:ary|:nsq|:rnd|:seq|:spr] Which data structures to
578
+ # check. (:nsq since 2.2.0)
578
579
  # @return [Boolean]
579
580
  # @since 2.0.0
580
581
  def empty? (which = :all)
581
582
  case which
582
583
  when :all then @seq.empty? && @spr.empty? && @rnd.empty?
583
584
  when :ary then @seq.empty? && @spr.empty?
585
+ when :nsq then @spr.empty? && @rnd.empty?
584
586
  when :rnd then @rnd.empty?
585
587
  when :seq then @seq.empty?
586
588
  when :spr then @spr.empty?
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "sarah"
3
- s.version = "2.1.0"
4
- s.date = "2014-04-10"
3
+ s.version = "2.2.0"
4
+ s.date = "2014-04-11"
5
5
  s.authors = ["Brian Katzung"]
6
6
  s.email = ["briank@kappacs.com"]
7
7
  s.homepage = "http://rubygems.org/gems/sarah"
@@ -0,0 +1,31 @@
1
+ require 'minitest/autorun'
2
+ require 'sarah'
3
+
4
+ # Test changes for version 2.2.0:
5
+ # :nsq for #each and #empty?
6
+
7
+ class TestSarah_16 < MiniTest::Unit::TestCase
8
+
9
+ def test_each
10
+ s = Sarah[1, 2, 5 => 'five', :a => ?a]
11
+ my_h = {}
12
+ s.each(:nsq) { |k, v| my_h[k] = v }
13
+ assert_equal s.to_h(:nsq), my_h, 'each :nsq matches to_h :nsq'
14
+ end
15
+
16
+ def test_empty
17
+ s0 = Sarah[1, 2, 5 => 'five', :a => ?a]
18
+ s = Sarah.new s0
19
+ assert_equal false, s.empty?(:nsq), 'not empty? :nsq'
20
+ s.delete_at 5
21
+ assert_equal false, s.empty?(:nsq), 'not empty? :nsq after delete 5'
22
+ s = Sarah.new s0
23
+ s.delete_at :a
24
+ assert_equal false, s.empty?(:nsq), 'not empty? :nsq after delete a'
25
+ s.delete_at 5
26
+ assert_equal true, s.empty?(:nsq), 'empty? :nsq after delete 5 and a'
27
+ end
28
+
29
+ end
30
+
31
+ # END
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 2
7
- - 1
7
+ - 2
8
8
  - 0
9
- version: 2.1.0
9
+ version: 2.2.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - Brian Katzung
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2014-04-10 00:00:00 -05:00
17
+ date: 2014-04-11 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -58,6 +58,7 @@ files:
58
58
  - test/14slice.rb
59
59
  - test/01instance.rb
60
60
  - test/12search.rb
61
+ - test/16v220.rb
61
62
  - test/07inst_attr.rb
62
63
  - test/03set_get.rb
63
64
  - test/11each.rb
@@ -107,6 +108,7 @@ test_files:
107
108
  - test/14slice.rb
108
109
  - test/01instance.rb
109
110
  - test/12search.rb
111
+ - test/16v220.rb
110
112
  - test/07inst_attr.rb
111
113
  - test/03set_get.rb
112
114
  - test/11each.rb