referential 0.0.1
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.
- checksums.yaml +7 -0
- data/lib/referential.rb +37 -0
- data/lib/referential/version.rb +3 -0
- metadata +64 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5aed682ab59945b291dc8364e4ba4b6426c897cbc328e90cdf15337a85a7cfba
|
4
|
+
data.tar.gz: ec3ff2a63295730849ed6b5d004277c7f74ecd2574c93fcb5588577de8aa0fb8
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2c17b0665018a78c8405f17191bf81691ffd04b94bf1380e656c5d2440cfb499191e1fc413a4e77c658568ed25aedd0557e83eabd34549e5436777056e109232
|
7
|
+
data.tar.gz: 33963af4b3b374d067d02d5ad23f8172707021c9293572a247423220d92436b0f59fce513a41cd6884ca4dadb941e683ec3a0b5db029b3a6333f1284307245d9
|
data/lib/referential.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative 'referential/version'
|
2
|
+
|
3
|
+
module Referential
|
4
|
+
def ref(method_name)
|
5
|
+
redefine!(self, method_name, instance_method(method_name).arity)
|
6
|
+
end
|
7
|
+
|
8
|
+
def cref(method_name)
|
9
|
+
redefine!(singleton_class, method_name, method(method_name).arity)
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def redefine!(context, method_name, arity)
|
15
|
+
raise 'Cannot compose methods with splat, keyword or default arguments!' if arity < 0
|
16
|
+
|
17
|
+
context.alias_method new_name(method_name), method_name
|
18
|
+
context.undef_method method_name
|
19
|
+
|
20
|
+
context.define_method(
|
21
|
+
method_name,
|
22
|
+
&reference_block(new_name(method_name), arity)
|
23
|
+
)
|
24
|
+
end
|
25
|
+
|
26
|
+
def new_name(method_name)
|
27
|
+
"fun_#{method_name}".to_sym
|
28
|
+
end
|
29
|
+
|
30
|
+
def reference_block(new_name, arity)
|
31
|
+
proc do |*args|
|
32
|
+
proc { |*args| method(new_name).call(*args) }
|
33
|
+
.curry(arity)
|
34
|
+
.call(*args)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
metadata
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: referential
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Danielius Visockas
|
8
|
+
- Lukas Kairevičius
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2021-08-09 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - "~>"
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '3.10'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - "~>"
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '3.10'
|
28
|
+
description:
|
29
|
+
email:
|
30
|
+
- danieliusvisockas@gmail.com
|
31
|
+
- lumzdas@gmail.com
|
32
|
+
executables: []
|
33
|
+
extensions: []
|
34
|
+
extra_rdoc_files: []
|
35
|
+
files:
|
36
|
+
- lib/referential.rb
|
37
|
+
- lib/referential/version.rb
|
38
|
+
homepage: https://github.com/dvisockas/referential
|
39
|
+
licenses:
|
40
|
+
- MIT
|
41
|
+
metadata:
|
42
|
+
homepage_uri: https://github.com/dvisockas/referential
|
43
|
+
source_code_uri: https://github.com/dvisockas/referential
|
44
|
+
changelog_uri: https://github.com/dvisockas/referential/blob/master/CHANGELOG.md
|
45
|
+
post_install_message:
|
46
|
+
rdoc_options: []
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 2.4.0
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '0'
|
59
|
+
requirements: []
|
60
|
+
rubygems_version: 3.2.15
|
61
|
+
signing_key:
|
62
|
+
specification_version: 4
|
63
|
+
summary: Turns your methods into curryable procs
|
64
|
+
test_files: []
|