opal-forwardable 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.
- data/.gitignore +1 -0
- data/README.md +2 -0
- data/Rakefile +14 -0
- data/lib/opal/forwardable.rb +81 -0
- data/opal-forwardable.gemspec +16 -0
- metadata +60 -0
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
/build
|
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'opal'
|
3
|
+
|
4
|
+
desc 'Build specified dependencies to build dir'
|
5
|
+
task :dependencies do
|
6
|
+
Opal::DependencyBuilder.new(out: 'build').build
|
7
|
+
end
|
8
|
+
|
9
|
+
desc 'Build latest opal-forwardable to build dir'
|
10
|
+
task :build => :dependencies do
|
11
|
+
Opal::Builder.new('lib', join: 'build/opal-forwardable.js').build
|
12
|
+
end
|
13
|
+
|
14
|
+
task :default => :build
|
@@ -0,0 +1,81 @@
|
|
1
|
+
#--
|
2
|
+
# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
3
|
+
# Version 2, December 2004
|
4
|
+
#
|
5
|
+
# DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
6
|
+
# TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
7
|
+
#
|
8
|
+
# 0. You just DO WHAT THE FUCK YOU WANT TO.
|
9
|
+
#++
|
10
|
+
|
11
|
+
module Forwardable
|
12
|
+
def instance_delegate(hash)
|
13
|
+
hash.each {|methods, accessor|
|
14
|
+
methods = [methods] unless methods.respond_to?(:each)
|
15
|
+
|
16
|
+
methods.each {|method|
|
17
|
+
def_instance_delegator(accessor, method)
|
18
|
+
}
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
def def_instance_delegators(accessor, *methods)
|
23
|
+
methods.each {|method|
|
24
|
+
next if [:__send__, :__id__].member?(method)
|
25
|
+
|
26
|
+
def_instance_delegator(accessor, method)
|
27
|
+
}
|
28
|
+
end
|
29
|
+
|
30
|
+
def def_instance_delegator(accessor, method, ali = method)
|
31
|
+
if accessor.to_s.start_with?('@')
|
32
|
+
define_method ali do |*args, &block|
|
33
|
+
instance_variable_get(accessor).__send__(method, *args, &block)
|
34
|
+
end
|
35
|
+
else
|
36
|
+
define_method ali do |*args, &block|
|
37
|
+
__send__(accessor).__send__(method, *args, &block)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
alias delegate instance_delegate
|
43
|
+
alias def_delegators def_instance_delegators
|
44
|
+
alias def_delegator def_instance_delegator
|
45
|
+
end
|
46
|
+
|
47
|
+
module SingleForwardable
|
48
|
+
def single_delegate(hash)
|
49
|
+
hash.each {|methods, accessor|
|
50
|
+
methods = [methods] unless methods.respond_to?(:each)
|
51
|
+
|
52
|
+
methods.each {|method|
|
53
|
+
def_single_delegator(accessor, method)
|
54
|
+
}
|
55
|
+
}
|
56
|
+
end
|
57
|
+
|
58
|
+
def def_single_delegators(accessor, *methods)
|
59
|
+
methods.each {|method|
|
60
|
+
next if [:__send__, :__id__].member?(method)
|
61
|
+
|
62
|
+
def_single_delegator(accessor, method)
|
63
|
+
}
|
64
|
+
end
|
65
|
+
|
66
|
+
def def_single_delegator(accessor, method, ali = method)
|
67
|
+
if accessor.to_s.start_with?('@')
|
68
|
+
define_singleton_method ali do |*args, &block|
|
69
|
+
instance_variable_get(accessor).__send__(method, *args, &block)
|
70
|
+
end
|
71
|
+
else
|
72
|
+
define_singleton_method ali do |*args, &block|
|
73
|
+
__send__(accessor).__send__(method, *args, &block)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
alias delegate single_delegate
|
79
|
+
alias def_delegators def_single_delegators
|
80
|
+
alias def_delegator def_single_delegator
|
81
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
Gem::Specification.new {|s|
|
2
|
+
s.name = 'opal-forwardable'
|
3
|
+
s.version = '0.0.1'
|
4
|
+
s.author = 'meh.'
|
5
|
+
s.email = 'meh@paranoici.org'
|
6
|
+
s.homepage = 'http://github.com/opal/opal-forwardable'
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.summary = 'Opal implementation of forwardable'
|
9
|
+
|
10
|
+
s.files = `git ls-files`.split("\n")
|
11
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
12
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
13
|
+
s.require_paths = ['lib']
|
14
|
+
|
15
|
+
s.add_dependency 'opal'
|
16
|
+
}
|
metadata
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: opal-forwardable
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- meh.
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-10 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: opal
|
16
|
+
requirement: &6737940 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *6737940
|
25
|
+
description:
|
26
|
+
email: meh@paranoici.org
|
27
|
+
executables: []
|
28
|
+
extensions: []
|
29
|
+
extra_rdoc_files: []
|
30
|
+
files:
|
31
|
+
- .gitignore
|
32
|
+
- README.md
|
33
|
+
- Rakefile
|
34
|
+
- lib/opal/forwardable.rb
|
35
|
+
- opal-forwardable.gemspec
|
36
|
+
homepage: http://github.com/opal/opal-forwardable
|
37
|
+
licenses: []
|
38
|
+
post_install_message:
|
39
|
+
rdoc_options: []
|
40
|
+
require_paths:
|
41
|
+
- lib
|
42
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
43
|
+
none: false
|
44
|
+
requirements:
|
45
|
+
- - ! '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
requirements: []
|
55
|
+
rubyforge_project:
|
56
|
+
rubygems_version: 1.8.10
|
57
|
+
signing_key:
|
58
|
+
specification_version: 3
|
59
|
+
summary: Opal implementation of forwardable
|
60
|
+
test_files: []
|