proc_for_case_equality 0.1

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.
data.tar.gz.sig ADDED
Binary file
data/CHANGELOG ADDED
@@ -0,0 +1 @@
1
+ v0.1. First release
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2012 Maurizio De Santis <desantis.maurizio at gmail.com>
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/Manifest ADDED
@@ -0,0 +1,10 @@
1
+ CHANGELOG
2
+ LICENSE
3
+ README.rdoc
4
+ Rakefile
5
+ lib/proc_for_case_equality.rb
6
+ lib/proc_for_case_equality/pfce.rb
7
+ spec/pfce_spec.rb
8
+ spec/proc_for_case_equality_spec.rb
9
+ spec/spec_helper.rb
10
+ Manifest
data/README.rdoc ADDED
@@ -0,0 +1,52 @@
1
+ = ProcForCaseEquality.new { puts 'procs in case statements are cool!' }
2
+
3
+ == Features
4
+
5
+ Simple yet powerful: it lets you use procs for case comparisons (see the example below).
6
+
7
+ == How
8
+
9
+ +case+ statements call the <tt>===</tt> method, so I wrote a +ProcForCaseEquality+ class
10
+ that inherits from +Proc+ and overrides <tt>===</tt>, letting the case statement call the proc
11
+ passing the value of the case as argument.
12
+
13
+ The source code is so simple that I can put it in full here:
14
+
15
+ class ProcForCaseEquality < Proc
16
+ def ===(*params)
17
+ self.call *params
18
+ end
19
+ end
20
+
21
+ 5 LOCs :P
22
+
23
+ == Installation
24
+
25
+ <tt>gem install proc_for_case_equality</tt> *COMING*
26
+
27
+ == Usage / Examples
28
+
29
+ require 'proc_for_case_equality' # OR:
30
+ require 'proc_for_case_equality/pfce' # if you want PFCE constant to point to ProcForCaseEquality
31
+
32
+ # Define some procs
33
+ all_multiples_of_3 = ProcWithCaseEquality.new { |numbers| numbers.all? { |number| number.modulo(3).zero? } }
34
+ any_multiple_of_3 = ProcWithCaseEquality.new { |numbers| numbers.any? { |number| number.modulo(3).zero? } }
35
+
36
+ # Here we come
37
+ case [1, 2, 3]
38
+ when all_multiples_of_3
39
+ puts 'all numbers are multiples of 3'
40
+ when any_multiple_of_3
41
+ puts 'at least one number is multiple of 3'
42
+ else
43
+ puts 'no multiples of 3'
44
+ end
45
+
46
+ == Inspired by
47
+
48
+ {This article}[http://www.aimred.com/news/developers/2008/08/14/unlocking_the_power_of_case_equality_proc/]
49
+
50
+ == License
51
+
52
+ MIT (see {LICENSE}[https://github.com/ProGNOMmers/proc_for_case_equality/blob/master/LICENSE])
data/Rakefile ADDED
@@ -0,0 +1,27 @@
1
+ require 'psych'
2
+ require 'echoe'
3
+
4
+ Echoe.new("proc_for_case_equality") do |p|
5
+ p.project = 'proc_for_case_equality'
6
+ p.author = "De Santis Maurizio"
7
+ p.email = 'desantis.maurizio@gmail.com'
8
+ p.description = "proc_for_case_equality - For using procs in case comparisons"
9
+ p.url = "https://github.com/ProGNOMmers/proc_for_case_equality"
10
+ p.summary = "It lets you use procs for case comparisons. Example:
11
+ all_multiples_of_3 = ProcForCaseEquality.new { |numbers| numbers.all? { |number| number.modulo(3).zero? } }
12
+ any_multiple_of_3 = ProcForCaseEquality.new { |numbers| numbers.any? { |number| number.modulo(3).zero? } }
13
+ case [1, 2, 3]
14
+ when all_multiples_of_3 then puts 'all numbers are multiples of 3'
15
+ when any_multiple_of_3 then puts 'at least one number is multiple of 3'
16
+ else puts 'no multiples of 3'
17
+ end"
18
+ end
19
+
20
+ desc 'IRB console'
21
+ task :irb do
22
+ $LOAD_PATH << "#{Dir.pwd}/lib"
23
+ require 'proc_for_case_equality/pfce'
24
+ require 'irb'
25
+ ARGV.clear
26
+ IRB.start
27
+ end
@@ -0,0 +1,12 @@
1
+ # This class inherits from +Proc+ and overrides its +===+ method
2
+ # letting you use proc instances in +case+ statements (see the {file:README.rdoc README})
3
+ class ProcForCaseEquality < Proc
4
+ # It calls +Proc#call+ in order to get used together in
5
+ # the +case+ statement.
6
+ #
7
+ # @param *params Any object.
8
+ # @return the proc calling using its argument(s) as argument(s)
9
+ def ===(*params)
10
+ self.call *params
11
+ end
12
+ end
@@ -0,0 +1,4 @@
1
+ require 'proc_for_case_equality'
2
+
3
+ # Alias of {ProcForCaseEquality}.
4
+ PFCE = ProcForCaseEquality
@@ -0,0 +1,31 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "proc_for_case_equality"
5
+ s.version = "0.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["De Santis Maurizio"]
9
+ s.cert_chain = ["/home/mau/.gem_keys/gem-public_cert.pem"]
10
+ s.date = "2012-01-20"
11
+ s.description = "proc_for_case_equality - For using procs in case comparisons"
12
+ s.email = "desantis.maurizio@gmail.com"
13
+ s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README.rdoc", "lib/proc_for_case_equality.rb", "lib/proc_for_case_equality/pfce.rb"]
14
+ s.files = ["CHANGELOG", "LICENSE", "README.rdoc", "Rakefile", "lib/proc_for_case_equality.rb", "lib/proc_for_case_equality/pfce.rb", "spec/pfce_spec.rb", "spec/proc_for_case_equality_spec.rb", "spec/spec_helper.rb", "Manifest", "proc_for_case_equality.gemspec"]
15
+ s.homepage = "https://github.com/ProGNOMmers/proc_for_case_equality"
16
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Proc_for_case_equality", "--main", "README.rdoc"]
17
+ s.require_paths = ["lib"]
18
+ s.rubyforge_project = "proc_for_case_equality"
19
+ s.rubygems_version = "1.8.15"
20
+ s.signing_key = "/home/mau/.gem_keys/gem-private_key.pem"
21
+ s.summary = "It lets you use procs for case comparisons. Example: all_multiples_of_3 = ProcForCaseEquality.new { |numbers| numbers.all? { |number| number.modulo(3).zero? } } any_multiple_of_3 = ProcForCaseEquality.new { |numbers| numbers.any? { |number| number.modulo(3).zero? } } case [1, 2, 3] when all_multiples_of_3 then puts 'all numbers are multiples of 3' when any_multiple_of_3 then puts 'at least one number is multiple of 3' else puts 'no multiples of 3' end"
22
+
23
+ if s.respond_to? :specification_version then
24
+ s.specification_version = 3
25
+
26
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
27
+ else
28
+ end
29
+ else
30
+ end
31
+ end
data/spec/pfce_spec.rb ADDED
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require File.expand_path('../../lib/proc_for_case_equality/pfce', __FILE__)
3
+
4
+ describe PFCE do
5
+ it 'should point to ProcForCaseEquality' do
6
+ PFCE.should == ProcForCaseEquality
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+ require File.expand_path('../../lib/proc_for_case_equality', __FILE__)
3
+
4
+ describe ProcForCaseEquality, '#===' do
5
+ it 'should return the result of the proc' do
6
+ p = ProcForCaseEquality.new{ |i| i }
7
+ p.send(:===, 'foo').should == 'foo'
8
+ end
9
+ end
@@ -0,0 +1 @@
1
+ require 'rspec'
metadata ADDED
@@ -0,0 +1,112 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: proc_for_case_equality
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - De Santis Maurizio
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain:
12
+ - ! '-----BEGIN CERTIFICATE-----
13
+
14
+ MIIDRDCCAiygAwIBAgIBADANBgkqhkiG9w0BAQUFADBIMRowGAYDVQQDDBFkZXNh
15
+
16
+ bnRpcy5tYXVyaXppbzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
17
+
18
+ LGQBGRYDY29tMB4XDTExMDYzMDExMjIyOVoXDTEyMDYyOTExMjIyOVowSDEaMBgG
19
+
20
+ A1UEAwwRZGVzYW50aXMubWF1cml6aW8xFTATBgoJkiaJk/IsZAEZFgVnbWFpbDET
21
+
22
+ MBEGCgmSJomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
23
+
24
+ ggEBANa1yrC8nNkg8hfVU5LNqgh6WwaXSh6tGPn6V0XtMIyMiHF1ess24NPQqPpl
25
+
26
+ 43t4hWOEGrcfwmnQso1sJsK+TiQ29dyC9upfRz4H0BxzIUUQNQae2F1d2BfptnUg
27
+
28
+ xPFPBhBztkpL9I6O1MeZn8zyCczqEHwV18dwbeLssxbJLloVEIpVQFvOI6DSZB1r
29
+
30
+ v4T8EieG79jsS2pf2yK9gWuyTnxq27RlTQxHghC0Xnu79b8TrUkiJt8sbjgGP2Ax
31
+
32
+ g08RtZP/owHzNWgLCT4exO68gEnRct/34ju0VL7zaG7TbA1cUFBWEtDR/YQw06+x
33
+
34
+ LseG3fuRWZIuENeXUJFLUkLF/Z8CAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4E
35
+
36
+ FgQUcbnTN20o+PJYFy32iMllDe8CuE0wCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEB
37
+
38
+ BQUAA4IBAQBCkfsLuziCNp2uBRWwyr4b0/Yct172ftsAcgGQilVkaGx3VYu9G3WZ
39
+
40
+ uxLoofO1c1pgvPqbjLAKq0EUqLxna54ILER6WVaPk70RtIQc2d3Rkj7CEpTI+veW
41
+
42
+ ki7IL2OzjVD5Mxad5PEEyCLWrC5Ky2I8OqP8HfwnG0a19YfZRhxAH9XOkQX5HB3O
43
+
44
+ t7xlgHGYIHKHfIFCo3UZfaqn354vtbetA0Omt52ZHjt88PsVG0rTrovNctkh61Vq
45
+
46
+ 99PUQdKGcIRcEsw4zQN3XgwJEqRVV5F6gGQyUY2LIeyyf+58kuHL2UkpVJU7b+7d
47
+
48
+ 1qFkvs/eJXM+w3TkQ2vaW9KFXQkIewZs
49
+
50
+ -----END CERTIFICATE-----
51
+
52
+ '
53
+ date: 2012-01-20 00:00:00.000000000 Z
54
+ dependencies: []
55
+ description: proc_for_case_equality - For using procs in case comparisons
56
+ email: desantis.maurizio@gmail.com
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files:
60
+ - CHANGELOG
61
+ - LICENSE
62
+ - README.rdoc
63
+ - lib/proc_for_case_equality.rb
64
+ - lib/proc_for_case_equality/pfce.rb
65
+ files:
66
+ - CHANGELOG
67
+ - LICENSE
68
+ - README.rdoc
69
+ - Rakefile
70
+ - lib/proc_for_case_equality.rb
71
+ - lib/proc_for_case_equality/pfce.rb
72
+ - spec/pfce_spec.rb
73
+ - spec/proc_for_case_equality_spec.rb
74
+ - spec/spec_helper.rb
75
+ - Manifest
76
+ - proc_for_case_equality.gemspec
77
+ homepage: https://github.com/ProGNOMmers/proc_for_case_equality
78
+ licenses: []
79
+ post_install_message:
80
+ rdoc_options:
81
+ - --line-numbers
82
+ - --inline-source
83
+ - --title
84
+ - Proc_for_case_equality
85
+ - --main
86
+ - README.rdoc
87
+ require_paths:
88
+ - lib
89
+ required_ruby_version: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ required_rubygems_version: !ruby/object:Gem::Requirement
96
+ none: false
97
+ requirements:
98
+ - - ! '>='
99
+ - !ruby/object:Gem::Version
100
+ version: '1.2'
101
+ requirements: []
102
+ rubyforge_project: proc_for_case_equality
103
+ rubygems_version: 1.8.15
104
+ signing_key:
105
+ specification_version: 3
106
+ summary: ! 'It lets you use procs for case comparisons. Example: all_multiples_of_3
107
+ = ProcForCaseEquality.new { |numbers| numbers.all? { |number| number.modulo(3).zero?
108
+ } } any_multiple_of_3 = ProcForCaseEquality.new { |numbers| numbers.any? { |number|
109
+ number.modulo(3).zero? } } case [1, 2, 3] when all_multiples_of_3 then puts ''all
110
+ numbers are multiples of 3'' when any_multiple_of_3 then puts ''at least one number
111
+ is multiple of 3'' else puts ''no multiples of 3'' end'
112
+ test_files: []
metadata.gz.sig ADDED
Binary file