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
@@ -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