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
@@ -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
- -> *a do
8
+ ComposableProc.new do |*a|
8
9
  send( msg_or_lambda, *(args + a) )
9
10
  end
10
11
  when Proc
11
- -> *a do
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
- -> receiver do
21
+ ComposableProc.new do |receiver|
27
22
  receiver.send( *args, &blk )
28
23
  end
29
24
  end
@@ -1,5 +1,5 @@
1
1
  module Lab419
2
2
  module Core
3
- VERSION = "0.0.4"
3
+ VERSION = "0.0.5"
4
4
  end # module Core
5
5
  end # module Lab419
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
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: 2012-05-06 00:00:00.000000000Z
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: &74427640 !ruby/object:Gem::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: *74427640
24
+ version_requirements: *79668970
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &74427380 !ruby/object:Gem::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: *74427380
35
+ version_requirements: *79668390
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &74427130 !ruby/object:Gem::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: *74427130
46
+ version_requirements: *79668160
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: maruku
49
- requirement: &74426860 !ruby/object:Gem::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: *74426860
57
+ version_requirements: *79667870
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: wirble
60
- requirement: &74415330 !ruby/object:Gem::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: *74415330
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