pervasives 0.0.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/README CHANGED
@@ -72,7 +72,7 @@ SAMPLES
72
72
 
73
73
  {"instance_eval"=>42, "send"=>42, "object_id"=>42}
74
74
  42
75
- -609487514
75
+ 174950
76
76
  42
77
77
  "value"
78
78
  42
@@ -105,7 +105,7 @@ SAMPLES
105
105
  ~ > ruby samples/b.rb
106
106
 
107
107
  42
108
- -609489100
108
+ 177470
109
109
 
110
110
 
111
111
  <========< samples/c.rb >========>
@@ -130,7 +130,7 @@ SAMPLES
130
130
  ~ > ruby samples/c.rb
131
131
 
132
132
  42
133
- -609486982
133
+ 177540
134
134
 
135
135
 
136
136
  <========< samples/d.rb >========>
data/README.tmpl CHANGED
@@ -16,6 +16,13 @@ URIS
16
16
  http://rubyforge.org/projects/codeforpeople/
17
17
  http://codeforpeople.com/lib/ruby
18
18
 
19
+ HISTORY
20
+
21
+ 1.0.0
22
+
23
+ is NOT backward compatible with any other pervasives version. the new
24
+ library is __greatly__ simplified
25
+
19
26
  SAMPLES
20
27
 
21
28
  @samples
@@ -0,0 +1,32 @@
1
+ module Pervasives
2
+ VERSION = "1.0.0"
3
+ def self.version() VERSION end
4
+ class ::Class
5
+ def __pervasive__ m, *a, &b
6
+ (( Class.instance_method(m) rescue Module.instance_method(m) rescue Object.instance_method(m) )).bind(self).call(*a, &b)
7
+ end
8
+ end
9
+ class ::Module
10
+ def __pervasive__ m, *a, &b
11
+ (( Module.instance_method(m) rescue Object.instance_method(m) )).bind(self).call(*a, &b)
12
+ end
13
+ end
14
+ class ::Object
15
+ def __pervasive__ m, *a, &b
16
+ (( Object.instance_method(m) )).bind(self).call(*a, &b)
17
+ end
18
+ end
19
+
20
+ class Proxy
21
+ instance_methods.each{|m| undef_method m unless m[%r/__/]}
22
+ def initialize obj
23
+ @obj = obj
24
+ end
25
+ def method_missing m, *a, &b
26
+ @obj.__pervasive__ m, *a, &b
27
+ end
28
+ def __obj__
29
+ @obj
30
+ end
31
+ end
32
+ end
data/lib/pervasives.rb CHANGED
@@ -1,61 +1,32 @@
1
- class Pervasives
2
- VERSION = "0.0.1"
3
-
4
- METHODS = Hash.new{|h,k| h[k] = {}}
5
-
6
- [Module, Class, Object].each do |type|
7
- type.instance_methods.each do |mname|
8
- m = type.instance_method mname
9
- METHODS[type][mname.to_s] = m
1
+ module Pervasives
2
+ VERSION = "1.0.0"
3
+ def self.version() VERSION end
4
+ class ::Class
5
+ def __pervasive__ m, *a, &b
6
+ (( Class.instance_method(m) rescue Module.instance_method(m) rescue Object.instance_method(m) )).bind(self).call(*a, &b)
10
7
  end
11
8
  end
12
-
13
- class << self
14
- mnames = METHODS[Module].keys + METHODS[Class].keys + METHODS[Object].keys
15
-
16
- mnames.each do |mname|
17
- next if mname['__']
18
- module_eval <<-code
19
- def #{ mname } obj, *argv, &block
20
- search_path = case obj
21
- when Class
22
- [Class, Module, Object]
23
- when Module
24
- [Module, Object]
25
- else
26
- [Object]
27
- end
28
- type = search_path.detect{|type| METHODS[type]['#{ mname }']}
29
- m = METHODS[type]['#{ mname }']
30
- m.bind( obj ).call( *argv, &block )
31
- end
32
- code
9
+ class ::Module
10
+ def __pervasive__ m, *a, &b
11
+ (( Module.instance_method(m) rescue Object.instance_method(m) )).bind(self).call(*a, &b)
12
+ end
13
+ end
14
+ class ::Object
15
+ def __pervasive__ m, *a, &b
16
+ (( Object.instance_method(m) )).bind(self).call(*a, &b)
33
17
  end
34
18
  end
35
19
 
36
20
  class Proxy
37
- alias_method "__class__", "class"
38
- alias_method "__instance_eval__", "instance_eval"
39
21
  instance_methods.each{|m| undef_method m unless m[%r/__/]}
40
22
  def initialize obj
41
23
  @obj = obj
42
24
  end
43
25
  def method_missing m, *a, &b
44
- Pervasives.__send__ m, @obj, *a, &b
26
+ @obj.__pervasive__ m, *a, &b
27
+ end
28
+ def __obj__
29
+ @obj
45
30
  end
46
- end
47
- end
48
-
49
-
50
-
51
-
52
- module Kernel
53
- def __ obj, &b
54
- proxy = Pervasives::Proxy.new obj
55
- b ? proxy.__instance_eval__(&b) : proxy
56
- end
57
- def __! obj, &b
58
- proxy = Pervasives::Proxy.new obj
59
- b ? proxy.__instance_eval__(&b) : proxy
60
31
  end
61
32
  end
File without changes
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.11
2
+ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: pervasives
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.1
7
- date: 2007-01-05 00:00:00.000000 -07:00
6
+ version: 1.0.0
7
+ date: 2007-09-08 00:00:00 -06:00
8
8
  summary: pervasives
9
9
  require_paths:
10
- - lib
10
+ - lib
11
11
  email: ara.t.howard@noaa.gov
12
12
  homepage: http://codeforpeople.com/lib/ruby/pervasives/
13
13
  rubyforge_project:
@@ -18,37 +18,44 @@ bindir: bin
18
18
  has_rdoc: false
19
19
  required_ruby_version: !ruby/object:Gem::Version::Requirement
20
20
  requirements:
21
- -
22
- - ">"
23
- - !ruby/object:Gem::Version
24
- version: 0.0.0
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
25
24
  version:
26
25
  platform: ruby
27
26
  signing_key:
28
27
  cert_chain:
28
+ post_install_message:
29
29
  authors:
30
- - Ara T. Howard
30
+ - Ara T. Howard
31
31
  files:
32
- - lib
33
- - test
34
- - gemspec.rb
35
- - install.rb
36
- - samples
37
- - gen_readme.rb
38
- - README
39
- - README.tmpl
40
- - lib/pervasives-0.0.1.rb
41
- - lib/pervasives.rb
42
- - test/pervasives.rb
43
- - samples/a.rb
44
- - samples/b.rb
45
- - samples/c.rb
46
- - samples/d.rb
32
+ - gemspec.rb
33
+ - gen_readme.rb
34
+ - install.rb
35
+ - lib
36
+ - lib/pervasives-1.0.0.rb
37
+ - lib/pervasives.rb
38
+ - pervasives-1.0.0.gem
39
+ - README
40
+ - README.tmpl
41
+ - samples
42
+ - samples/a.rb
43
+ - samples/b.rb
44
+ - samples/c.rb
45
+ - samples/d.rb
46
+ - test
47
+ - test/pervasives.rb
47
48
  test_files:
48
- - test/pervasives.rb
49
+ - test/pervasives.rb
49
50
  rdoc_options: []
51
+
50
52
  extra_rdoc_files: []
53
+
51
54
  executables: []
55
+
52
56
  extensions: []
57
+
53
58
  requirements: []
54
- dependencies: []
59
+
60
+ dependencies: []
61
+
@@ -1,61 +0,0 @@
1
- class Pervasives
2
- VERSION = "0.0.1"
3
-
4
- METHODS = Hash.new{|h,k| h[k] = {}}
5
-
6
- [Module, Class, Object].each do |type|
7
- type.instance_methods.each do |mname|
8
- m = type.instance_method mname
9
- METHODS[type][mname.to_s] = m
10
- end
11
- end
12
-
13
- class << self
14
- mnames = METHODS[Module].keys + METHODS[Class].keys + METHODS[Object].keys
15
-
16
- mnames.each do |mname|
17
- next if mname['__']
18
- module_eval <<-code
19
- def #{ mname } obj, *argv, &block
20
- search_path = case obj
21
- when Class
22
- [Class, Module, Object]
23
- when Module
24
- [Module, Object]
25
- else
26
- [Object]
27
- end
28
- type = search_path.detect{|type| METHODS[type]['#{ mname }']}
29
- m = METHODS[type]['#{ mname }']
30
- m.bind( obj ).call( *argv, &block )
31
- end
32
- code
33
- end
34
- end
35
-
36
- class Proxy
37
- alias_method "__class__", "class"
38
- alias_method "__instance_eval__", "instance_eval"
39
- instance_methods.each{|m| undef_method m unless m[%r/__/]}
40
- def initialize obj
41
- @obj = obj
42
- end
43
- def method_missing m, *a, &b
44
- Pervasives.__send__ m, @obj, *a, &b
45
- end
46
- end
47
- end
48
-
49
-
50
-
51
-
52
- module Kernel
53
- def __ obj, &b
54
- proxy = Pervasives::Proxy.new obj
55
- b ? proxy.__instance_eval__(&b) : proxy
56
- end
57
- def __! obj, &b
58
- proxy = Pervasives::Proxy.new obj
59
- b ? proxy.__instance_eval__(&b) : proxy
60
- end
61
- end