defp 0.0.1 → 0.0.2
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.
- checksums.yaml +13 -5
- data/.travis.yml +12 -0
- data/README.md +13 -12
- data/defp.gemspec +3 -2
- data/lib/defp.rb +4 -2
- data/lib/defp/version.rb +1 -1
- data/test/test_defp.rb +0 -2
- metadata +30 -17
- data/test.rb +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MzRhODZkODM2YTZiOWM3OTM5ODkxY2U2NjQ1ZDEyYWNkYTRkZDQ1Yg==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZWJlMDk3NDMzNjUwZWU0ODRhNGYwMTEyMGQ3MDVhZjhkMGE4MmViZg==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
ZTRhMjQ4MzUyOTE5MGUzZGEzNzg0ZDRjMjIwMTA1YWU2ZTU5Yzc0OTE3ZTgz
|
10
|
+
NzQ2NTNmZGM0YmVkZjA3MzUyNDEyMWZjOWYzYzZjNzQyNDU1NzdhODBkNTk1
|
11
|
+
OGM0ZDg2NDM1NDEwZDgyZDYxNWRjN2RmZThjMzU4ZGVlZjY0ZmY=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
YzgzM2RlODM0OTE3NmM4YWNkYWNhMjljNDhmNjc4M2YwMGM4YmRjZTM0Y2Fl
|
14
|
+
MDE5NmUwZjRkNjljMjdiOGYxYTgxZTMwZjUyOGMwNTZhNGIzMjk3NzQzMjFj
|
15
|
+
OWU2MGY0ZjUxYzM3MjUzM2U1MGExNTVjNDAwZTI4YmRlOGIwMDI=
|
data/.travis.yml
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
language: ruby
|
2
|
+
rvm:
|
3
|
+
- 2.1.0
|
4
|
+
deploy:
|
5
|
+
provider: rubygems
|
6
|
+
api_key:
|
7
|
+
secure: UxH7NRGSSdTbNlrylAWiHOhuO3CAXnBUFjghCiKcf2jxfRdP79QpWsJvH8dSUs6auwDfO3Sp/g3hVbPGhrUbZgpw2Q3cCwMXg6okAFv6+4txhg9bpo5edT1i89mk7ekCJ+RTtC++UnGe1mojR9EV7Pcj/pJc7bwtJhjnUdMC9oU=
|
8
|
+
gem: defp
|
9
|
+
on:
|
10
|
+
all_branches: true
|
11
|
+
tags: true
|
12
|
+
repo: doodzik/defp
|
data/README.md
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
# Defp
|
2
2
|
|
3
|
-
|
3
|
+
[](https://travis-ci.org/doodzik/defp)
|
4
|
+
|
5
|
+
An pattern matching implementation in ruby inspired by haskell.
|
6
|
+
If you want to know about the inner workings of defp [check out this blog post](http://dudzik.co/blog/2014/10/27/i-went-on-a-journey-to-haskell-and-all-i-got-was-a-pattern-matcher-for-ruby/).
|
4
7
|
|
5
8
|
## Installation
|
6
9
|
|
@@ -19,7 +22,6 @@ And then execute:
|
|
19
22
|
Or install it yourself as:
|
20
23
|
|
21
24
|
$ gem install defp
|
22
|
-
$ gem install CallBaecker
|
23
25
|
|
24
26
|
## Usage
|
25
27
|
|
@@ -27,27 +29,26 @@ Or install it yourself as:
|
|
27
29
|
class Example
|
28
30
|
# please extend/include in this order
|
29
31
|
extend Defp
|
30
|
-
include CallBaecker
|
31
32
|
|
32
33
|
# With normal params
|
33
|
-
def
|
34
|
-
defp('hallo', _) == 'bubu1'
|
35
|
-
defp(_, 'hallo') == ->
|
34
|
+
def normal_params(value1, value2)
|
35
|
+
defp ('hallo', _ ) == 'bubu1'
|
36
|
+
defp (_, 'hallo' ) == -> do
|
36
37
|
'bubu2'
|
37
|
-
|
38
|
+
end
|
38
39
|
'bubu3'
|
39
40
|
end
|
40
41
|
|
41
42
|
# With keyword arguments
|
42
43
|
def self.keyword_params(value1: ,value2:)
|
43
|
-
|
44
|
-
|
45
|
-
|
44
|
+
defp(value1: 'hallo', value2: _) == 'bubu1' # you can specify blank vars
|
45
|
+
defp(value2: 'hallo') == -> { 'bubu2' } # or not specifying them at all
|
46
|
+
'bubu3'
|
46
47
|
end
|
47
48
|
|
48
49
|
# With mixed params
|
49
50
|
def self.mixed_params(value1 = {}, value2, value3)
|
50
|
-
|
51
|
+
defp({value2: 'hallo'}, 'dud', _) == 'bubu1'
|
51
52
|
'bubu2'
|
52
53
|
end
|
53
54
|
end
|
@@ -55,7 +56,7 @@ end
|
|
55
56
|
|
56
57
|
## Contributing
|
57
58
|
|
58
|
-
1. Fork it ( https://github.com/
|
59
|
+
1. Fork it ( https://github.com/doodzik/defp/fork )
|
59
60
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
60
61
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
61
62
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/defp.gemspec
CHANGED
@@ -17,7 +17,8 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
-
spec.add_development_dependency "bundler", "~> 1.
|
20
|
+
spec.add_development_dependency "bundler", "~> 1.6"
|
21
21
|
spec.add_development_dependency "rake", "~> 10.0"
|
22
|
-
spec.add_development_dependency "
|
22
|
+
spec.add_development_dependency "minitest"
|
23
|
+
spec.add_dependency "CallBaecker", '0.0.3'
|
23
24
|
end
|
data/lib/defp.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
require "defp/version"
|
2
|
+
require 'CallBaecker'
|
2
3
|
|
3
4
|
module Defp
|
4
5
|
def self.extended(base)
|
5
6
|
base.send :include, DefpMethods
|
6
7
|
base.extend DefpMethods
|
8
|
+
base.include CallBaecker
|
7
9
|
end
|
8
10
|
|
9
11
|
module DefpMethods
|
@@ -19,7 +21,7 @@ module Defp
|
|
19
21
|
.all? do |arg|
|
20
22
|
# TODO cleanup
|
21
23
|
if arg[0].is_a? Hash
|
22
|
-
pattern_args = arg[0].reject {|
|
24
|
+
pattern_args = arg[0].reject {|_,v| !v}
|
23
25
|
pattern_args.keys.all? { |key| arg[1][key] == arg[0][key] }
|
24
26
|
else
|
25
27
|
arg[0] == arg[1]
|
@@ -33,7 +35,7 @@ module Defp
|
|
33
35
|
end
|
34
36
|
|
35
37
|
class NullBetween
|
36
|
-
def ==(
|
38
|
+
def ==(_)
|
37
39
|
nil
|
38
40
|
end
|
39
41
|
end
|
data/lib/defp/version.rb
CHANGED
data/test/test_defp.rb
CHANGED
metadata
CHANGED
@@ -1,57 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: defp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- doodzik
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.6'
|
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: '1.
|
26
|
+
version: '1.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '10.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ! '>='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ! '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: CallBaecker
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.0.3
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.0.3
|
55
69
|
description:
|
56
70
|
email:
|
57
71
|
- 4004blog@gmail.com
|
@@ -59,7 +73,8 @@ executables: []
|
|
59
73
|
extensions: []
|
60
74
|
extra_rdoc_files: []
|
61
75
|
files:
|
62
|
-
-
|
76
|
+
- .gitignore
|
77
|
+
- .travis.yml
|
63
78
|
- Gemfile
|
64
79
|
- LICENSE.txt
|
65
80
|
- README.md
|
@@ -67,7 +82,6 @@ files:
|
|
67
82
|
- defp.gemspec
|
68
83
|
- lib/defp.rb
|
69
84
|
- lib/defp/version.rb
|
70
|
-
- test.rb
|
71
85
|
- test/test_defp.rb
|
72
86
|
homepage: https://github.com/doodzik/defp.git
|
73
87
|
licenses:
|
@@ -79,20 +93,19 @@ require_paths:
|
|
79
93
|
- lib
|
80
94
|
required_ruby_version: !ruby/object:Gem::Requirement
|
81
95
|
requirements:
|
82
|
-
- -
|
96
|
+
- - ! '>='
|
83
97
|
- !ruby/object:Gem::Version
|
84
98
|
version: '0'
|
85
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
|
-
- -
|
101
|
+
- - ! '>='
|
88
102
|
- !ruby/object:Gem::Version
|
89
103
|
version: '0'
|
90
104
|
requirements: []
|
91
105
|
rubyforge_project:
|
92
|
-
rubygems_version: 2.
|
106
|
+
rubygems_version: 2.4.2
|
93
107
|
signing_key:
|
94
108
|
specification_version: 4
|
95
109
|
summary: Pattern matching for ruby
|
96
110
|
test_files:
|
97
111
|
- test/test_defp.rb
|
98
|
-
has_rdoc:
|