lab419_core 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1 @@
|
|
1
|
+
require 'lab419/core/comparable/operators'
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Comparable
|
2
|
+
class << self
|
3
|
+
|
4
|
+
LessThan = ->(*args){
|
5
|
+
args.first < args.last
|
6
|
+
}
|
7
|
+
def < arg=nil
|
8
|
+
if arg
|
9
|
+
curried_less_than arg
|
10
|
+
else
|
11
|
+
LessThan
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
GreaterThan = ->(*args){
|
16
|
+
args.first > args.last
|
17
|
+
}
|
18
|
+
def > arg=nil
|
19
|
+
if arg
|
20
|
+
curried_greater_than arg
|
21
|
+
else
|
22
|
+
GreaterThan
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
private
|
28
|
+
def curried_greater_than arg
|
29
|
+
->(rhs){ arg < rhs }
|
30
|
+
end
|
31
|
+
def curried_less_than arg
|
32
|
+
->(rhs){ arg > rhs }
|
33
|
+
end
|
34
|
+
end # class << self
|
35
|
+
end # module Comparable
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'lab419/core/proc'
|
2
|
+
class ComposableProc
|
3
|
+
attr_reader :my_lambda
|
4
|
+
|
5
|
+
def and lmbda=nil, &block
|
6
|
+
raise ArgumentError, "either use a lambda or a block" if !!block == !!lmbda
|
7
|
+
self.class.new do | *args, &blk |
|
8
|
+
nxt = lmbda || block
|
9
|
+
results = my_lambda.( *args, &blk )
|
10
|
+
if Array === results
|
11
|
+
if nxt.arity < 0 || nxt.arity == results.size
|
12
|
+
nxt.( *results )
|
13
|
+
elsif nxt.arity.zero?
|
14
|
+
nxt.()
|
15
|
+
else
|
16
|
+
nxt.( results )
|
17
|
+
end
|
18
|
+
else
|
19
|
+
nxt.( results )
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
alias_method :+, :and
|
24
|
+
|
25
|
+
def arity; my_lambda.arity end
|
26
|
+
|
27
|
+
def call *args, &blk
|
28
|
+
my_lambda.call( *args, &blk )
|
29
|
+
end
|
30
|
+
alias_method :[], :call
|
31
|
+
|
32
|
+
def to_proc; my_lambda.to_proc end
|
33
|
+
|
34
|
+
class << self
|
35
|
+
def identity; Proc.identity end
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
def initialize lmbda=nil, &block
|
40
|
+
raise ArgumentError, "either use a lambda or a block" if !!block == !!lmbda
|
41
|
+
@my_lambda = lmbda || block
|
42
|
+
end
|
43
|
+
end
|
data/lib/lab419/core/kernel.rb
CHANGED
@@ -1,14 +1,15 @@
|
|
1
|
+
require 'lab419/core/extensions/composable_proc'
|
1
2
|
module Kernel
|
2
3
|
|
3
4
|
def applying *args
|
4
5
|
msg_or_lambda = args.shift
|
5
6
|
case msg_or_lambda
|
6
7
|
when String, Symbol
|
7
|
-
|
8
|
+
ComposableProc.new do |*a|
|
8
9
|
send( msg_or_lambda, *(args + a) )
|
9
10
|
end
|
10
11
|
when Proc
|
11
|
-
|
12
|
+
ComposableProc.new do |*a|
|
12
13
|
msg_or_lambda.( *(args + a) )
|
13
14
|
end
|
14
15
|
else
|
@@ -16,14 +17,8 @@ module Kernel
|
|
16
17
|
end
|
17
18
|
end
|
18
19
|
|
19
|
-
# DEPRECATE: applyto ASAP
|
20
|
-
def applyto *args
|
21
|
-
warn "DEPRECATED: please use applying instead of applyo, it will go away in 0.1"
|
22
|
-
applying( *args )
|
23
|
-
end
|
24
|
-
|
25
20
|
def sendmsg *args, &blk
|
26
|
-
|
21
|
+
ComposableProc.new do |receiver|
|
27
22
|
receiver.send( *args, &blk )
|
28
23
|
end
|
29
24
|
end
|
data/lib/lab419/core/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lab419_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-19 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ruby-debug19
|
16
|
-
requirement: &
|
16
|
+
requirement: &79668970 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0.11'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *79668970
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &79668390 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.9.2.2
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *79668390
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &79668160 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 2.9.0
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *79668160
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: maruku
|
49
|
-
requirement: &
|
49
|
+
requirement: &79667870 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 0.6.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *79667870
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: wirble
|
60
|
-
requirement: &
|
60
|
+
requirement: &79656360 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,14 +65,17 @@ dependencies:
|
|
65
65
|
version: 0.1.3
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *79656360
|
69
69
|
description: Coming Soon
|
70
70
|
email: robert.dober@gmail.com
|
71
71
|
executables: []
|
72
72
|
extensions: []
|
73
73
|
extra_rdoc_files: []
|
74
74
|
files:
|
75
|
+
- lib/lab419/core/extensions/composable_proc.rb
|
75
76
|
- lib/lab419/core/object.rb
|
77
|
+
- lib/lab419/core/comparable.rb
|
78
|
+
- lib/lab419/core/comparable/operators.rb
|
76
79
|
- lib/lab419/core/array/flatten_once.rb
|
77
80
|
- lib/lab419/core/integer/operators.rb
|
78
81
|
- lib/lab419/core/integer/instance_methods.rb
|