lab42_core 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 23fa2e410ba0d5674710a2c25c39b47b763f8516
4
- data.tar.gz: 1af39297215e537342b4f1cc0adb303c2ac2dedb
3
+ metadata.gz: d7f5a0cfaf9792e16c822da9826afaca6cb96cdf
4
+ data.tar.gz: 194ffc45ea41e84095afa8c0bca479425cf73616
5
5
  SHA512:
6
- metadata.gz: 0fba1ca8777e5a2055bd637774e0cb295aca6743beb009efebd2268696ab14270adf7068cceb58e9b2d9a96ae8c9f978549f923cb34c666f9924d010163c986b
7
- data.tar.gz: 45dbba0a834330f0f22d6c8edf8bea149ff83cf3c5d2462ed5cbfb61ea3d5840d052da0bfd15322ac3718528e718f20f9a17ba01678561a4efa44de664afd5d9
6
+ metadata.gz: 71a8af599ac63a9a52c416f8d9aa964cf95f91f6558e5560f5fbe1fbc40679d98f4aa89937011636fdb85cd1d18caaffa8e8593b0f42fb21617c866cbd1ce6b0
7
+ data.tar.gz: 02f3fa3eeef659ff44f6f552f1f8b47123bbc0484a5df35398041a0b6ec0efcb94b7bee96195495fb8e48e4ac229c11049e5179be9b6a53be52b2374ddac8a20
data/README.md CHANGED
@@ -21,3 +21,19 @@ Ruby Core Module Extensions (in the spirit of lab419/core)
21
21
  ```ruby
22
22
  {a: 42, b: 43}.only :a, :c # ===> {a: 42}
23
23
  ```
24
+
25
+ ## Fn
26
+
27
+ Must be required specifically!
28
+
29
+ ```ruby
30
+ require 'lab42/core/fn'
31
+
32
+ # Get method of an object
33
+ printer = Kernel.fn.puts
34
+ printer.( 42 )
35
+ 2.times(&printer)
36
+
37
+ # It also extends some enumerable methods for easier execution
38
+ %w{hello world}.each printer
39
+ ```
@@ -0,0 +1,5 @@
1
+ require 'lab42/core/fn/iterator_reimpl'
2
+
3
+ class Array
4
+ include Lab42::Core::IteratorReimpl
5
+ end
@@ -0,0 +1,27 @@
1
+ module Lab42
2
+ module Core
3
+ class Fn < BasicObject
4
+ private
5
+ def initialize source
6
+ @source = source
7
+ end
8
+
9
+ def method_missing *args, &blk
10
+ @source.method args.first
11
+ end
12
+ end # class Fn
13
+ class Fm < BasicObject
14
+ private
15
+ def initialize source
16
+ @source = source
17
+ end
18
+
19
+ def method_missing *args, &blk
20
+ m = @source.instance_method args.first
21
+ -> receiver, *a, &b do
22
+ m.bind( receiver ).(*a, &b)
23
+ end
24
+ end
25
+ end # class Fn
26
+ end # module Core
27
+ end # module Lab42
@@ -0,0 +1,5 @@
1
+ require 'lab42/core/fn/iterator_reimpl'
2
+
3
+ module Enumerable
4
+ include Lab42::Core::IteratorReimpl
5
+ end
@@ -0,0 +1,7 @@
1
+ require 'lab42/core/fn/iterator_reimpl'
2
+
3
+ class Enumerator
4
+ class Lazy
5
+ include Lab42::Core::IteratorReimpl
6
+ end # class Lazy
7
+ end # class Enumerator
File without changes
@@ -0,0 +1,31 @@
1
+ module Lab42
2
+ module Core
3
+ module IteratorReimpl
4
+ def self.included into
5
+ into.module_eval do
6
+ alias_method :__lab42_core_iterator_map__, :map
7
+ def map behavior=nil, &blk
8
+ __lab42_core_iterator_map__(&(behavior||blk))
9
+ end
10
+ alias_method :__lab42_core_iterator_reduce__, :reduce
11
+ def reduce behavior=nil, &blk
12
+ if Symbol === behavior
13
+ __lab42_core_iterator_reduce__ behavior
14
+ else
15
+ __lab42_core_iterator_reduce__(&(behavior||blk))
16
+ end
17
+ end
18
+
19
+ alias_method :__lab42_core_iterator_inject__, :inject
20
+ def inject value, behavior=nil, &blk
21
+ if Symbol === behavior
22
+ __lab42_core_iterator_inject__ value, behavior
23
+ else
24
+ __lab42_core_iterator_inject__(value, &(behavior||blk))
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end # module Core
31
+ end # module Lab42
@@ -0,0 +1,21 @@
1
+ require 'lab42/core/fn/basic_object'
2
+ require 'lab42/core/fn/array'
3
+ require 'lab42/core/fn/enumerable'
4
+ require 'lab42/core/fn/enumerator/lazy'
5
+
6
+ class Object
7
+ def fn
8
+ # There can only be one (per instance)
9
+ @__lab42_core_fn__ ||= Lab42::Core::Fn.new self
10
+ # But caching in frozen objects is not an option
11
+ rescue
12
+ Lab42::Core::Fn.new self
13
+ end
14
+
15
+ def fm
16
+ @__lab42_core_fm__ ||= Lab42::Core::Fm.new self
17
+ # But caching in frozen objects is not an option
18
+ rescue
19
+ Lab42::Core::Fn.new self
20
+ end
21
+ end # class Object
@@ -1,5 +1,5 @@
1
1
  module Lab42
2
2
  module Core
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end # module Core
5
5
  end # module Lab42
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lab42_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Dober
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-18 00:00:00.000000000 Z
11
+ date: 2013-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.9.12
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
26
  version: 0.9.12
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 2.13.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: 2.13.0
41
41
  description: Hash, Dir and more extensions
@@ -45,8 +45,15 @@ extensions: []
45
45
  extra_rdoc_files: []
46
46
  files:
47
47
  - lib/lab42/core.rb
48
+ - lib/lab42/core/fn/array.rb
49
+ - lib/lab42/core/fn/basic_object.rb
50
+ - lib/lab42/core/fn/enumerator/lazy.rb
51
+ - lib/lab42/core/fn/fm.rb
52
+ - lib/lab42/core/fn/iterator_reimpl.rb
53
+ - lib/lab42/core/fn/enumerable.rb
48
54
  - lib/lab42/core/dir.rb
49
55
  - lib/lab42/core/version.rb
56
+ - lib/lab42/core/fn.rb
50
57
  - lib/lab42/core/hash.rb
51
58
  - lib/lab42/core/kernel.rb
52
59
  - lib/lab42/core/enumerable.rb
@@ -62,17 +69,17 @@ require_paths:
62
69
  - lib
63
70
  required_ruby_version: !ruby/object:Gem::Requirement
64
71
  requirements:
65
- - - '>='
72
+ - - ">="
66
73
  - !ruby/object:Gem::Version
67
74
  version: 2.0.0
68
75
  required_rubygems_version: !ruby/object:Gem::Requirement
69
76
  requirements:
70
- - - '>='
77
+ - - ">="
71
78
  - !ruby/object:Gem::Version
72
79
  version: '0'
73
80
  requirements: []
74
81
  rubyforge_project:
75
- rubygems_version: 2.1.3
82
+ rubygems_version: 2.1.5
76
83
  signing_key:
77
84
  specification_version: 4
78
85
  summary: What I am missing in Ruby