mug 0.5.6 → 0.6.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
2
  SHA1:
3
- metadata.gz: 50b01316cc71f852a0b9486ea5b1109af29c8ca3
4
- data.tar.gz: 92aec72f54e066f73de67d743a29218029f1c872
3
+ metadata.gz: '099f5dcdef17223ed727bdb9bbada095e03e50b1'
4
+ data.tar.gz: 6fc2e5c009d42588a4f67dc58a70296f901a85da
5
5
  SHA512:
6
- metadata.gz: 19fd297cf043985f9abd55bf7863dfa859744ee1acc7941673c2796b523e92e27c67e3fd563212c36f70913dc927a37a4b91765cb861f51e82627ed73cfe797a
7
- data.tar.gz: d60fc6a2152527708ff79a297f1feb2e84a1842d0eeef0ac580d6a8ac67040506f4cbcd27c9f93df90dd6654ae4c8bd0436a094f41b07e9a57b602fa374c339b
6
+ metadata.gz: 9ba248b6dd8eb1e107c0b4deeeef20cbc7d0084ef6395b5ddc8cc9a80e17b47f6d27da3b075aedb80b67a1505a26e8051da5c66f40b63d852e74d1882b037e25
7
+ data.tar.gz: 31d95dead76d1da9a6bbeec45ecef85260d45f6d651396e2adb4ade8a5a78ff404a77587c6077bbfab5c024152f98a05ed2477e911cf259a650930211bd7a81b
data/lib/mug.rb CHANGED
@@ -13,6 +13,7 @@ require_relative 'mug/fragile-method-chain'
13
13
  require_relative 'mug/hash/map'
14
14
  require_relative 'mug/hash/merge'
15
15
  require_relative 'mug/hash/operations'
16
+ require_relative 'mug/hash/when'
16
17
  require_relative 'mug/iterator/for'
17
18
  require_relative 'mug/iterator/method'
18
19
  require_relative 'mug/loop-with'
data/lib/mug/hash.rb CHANGED
@@ -1,3 +1,4 @@
1
1
  require_relative 'hash/map'
2
2
  require_relative 'hash/merge'
3
3
  require_relative 'hash/operations'
4
+ require_relative 'hash/when'
@@ -52,3 +52,19 @@ class Hash
52
52
  end
53
53
  end
54
54
 
55
+ =begin
56
+ Copyright (c) 2017, Matthew Kerwin <matthew@kerwin.net.au>
57
+
58
+ Permission to use, copy, modify, and/or distribute this software for any
59
+ purpose with or without fee is hereby granted, provided that the above
60
+ copyright notice and this permission notice appear in all copies.
61
+
62
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
63
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
64
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
65
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
66
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
67
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
68
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
69
+ =end
70
+
@@ -0,0 +1,46 @@
1
+
2
+ class Hash
3
+
4
+ #
5
+ # Use a Hash like a case statement.
6
+ #
7
+ # case key
8
+ # when /foo/ then "FOO"
9
+ # when /bar/ then "BAR"
10
+ # else "DEFAULT"
11
+ # end
12
+ #
13
+ # becomes:
14
+ #
15
+ # h = {
16
+ # /foo/ => "FOO",
17
+ # /bar/ => "BAR",
18
+ # }
19
+ # h.default = "DEFAULT"
20
+ # h[key]
21
+ #
22
+ def when o
23
+ each_pair do |k, v|
24
+ return v if k === o
25
+ end
26
+ default o
27
+ end
28
+
29
+ end
30
+
31
+ =begin
32
+ Copyright (c) 2017, Matthew Kerwin <matthew@kerwin.net.au>
33
+
34
+ Permission to use, copy, modify, and/or distribute this software for any
35
+ purpose with or without fee is hereby granted, provided that the above
36
+ copyright notice and this permission notice appear in all copies.
37
+
38
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
39
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
40
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
41
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
42
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
43
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
44
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
45
+ =end
46
+
@@ -0,0 +1,27 @@
1
+ require 'test/unit'
2
+ $VERBOSE = true
3
+
4
+ require_relative '../lib/mug/hash/when'
5
+ class Test_hashwhen < Test::Unit::TestCase
6
+ def test_hashwhen
7
+ h = {
8
+ /foo/ => "FOO",
9
+ /bar/ => "BAR",
10
+ }
11
+ h.default = "DEFAULT"
12
+
13
+ assert_equal( 'FOO', h.when("xfoob") )
14
+ assert_equal( 'BAR', h.when("barbar") )
15
+ assert_equal( 'DEFAULT', h.when("qux") )
16
+ end
17
+ def test_hashwhen_proc
18
+ h = Hash.new {|h,k| k.to_s.upcase }
19
+ h[/foo/] = 'FOO'
20
+ h[/bar/] = 'BAR'
21
+
22
+ assert_equal( 'FOO', h.when("xfoob") )
23
+ assert_equal( 'BAR', h.when("barbar") )
24
+ assert_equal( 'QUX', h.when("qux") )
25
+ end
26
+ end
27
+
@@ -107,8 +107,8 @@ class Test_loop_with < Test::Unit::TestCase
107
107
  assert( y.equal?(o), "should return `obj`" )
108
108
 
109
109
  c = []
110
- loop_with_object(c).with_index do |a, i|
111
- a << i
110
+ loop_with_object(c).with_index do |d, i|
111
+ d << i
112
112
  break if i >= 2
113
113
  end
114
114
  assert_equal( [0,1,2], c )
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mug
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.6
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Kerwin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-10 00:00:00.000000000 Z
11
+ date: 2017-03-08 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  == MUG: Matty's Ultimate Gem
@@ -39,6 +39,7 @@ files:
39
39
  - lib/mug/hash/map.rb
40
40
  - lib/mug/hash/merge.rb
41
41
  - lib/mug/hash/operations.rb
42
+ - lib/mug/hash/when.rb
42
43
  - lib/mug/hashmap.rb
43
44
  - lib/mug/hashop.rb
44
45
  - lib/mug/iterator.rb
@@ -72,6 +73,7 @@ files:
72
73
  - test/test-hashmap.rb
73
74
  - test/test-hashmerge.rb
74
75
  - test/test-hashop.rb
76
+ - test/test-hashwhen.rb
75
77
  - test/test-iterator-for.rb
76
78
  - test/test-iterator-method.rb
77
79
  - test/test-loop-with.rb
@@ -105,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
105
107
  version: '0'
106
108
  requirements: []
107
109
  rubyforge_project:
108
- rubygems_version: 2.6.2
110
+ rubygems_version: 2.6.8
109
111
  signing_key:
110
112
  specification_version: 4
111
113
  summary: 'MUG: Matty''s Ultimate Gem'
@@ -127,6 +129,7 @@ test_files:
127
129
  - test/test-clamp.rb
128
130
  - test/test-iterator-for.rb
129
131
  - test/test-bittest.rb
132
+ - test/test-hashwhen.rb
130
133
  - test/test-negativity.rb
131
134
  - test/test-matchdata_hash.rb
132
135
  - test/test-self.rb