lab419_core 0.0.4 → 0.0.5
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.
@@ -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
|