object2module 0.5.0-i386-mswin32 → 0.5.1-i386-mswin32

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.
@@ -51,7 +51,9 @@ example: gen_extend()
51
51
  How it works
52
52
  --------------
53
53
 
54
- Object2module simply removes the check for `T_MODULE` from `rb_include_module()`
54
+ Object2module removes the check for `T_MODULE` from
55
+ `rb_include_module()` and prevents inclusion of classes above Object
56
+ (or meta^n(Object) for singleton classes).
55
57
 
56
58
  Companion Libraries
57
59
  --------------------
@@ -65,6 +67,7 @@ the language, see also:
65
67
  module singleton classes during an include. No more ugly ClassMethods and included() hook hacks.
66
68
  * [Prepend](http://github.com/banister/prepend) - Prepends modules in front of a class; so method lookup starts with the module
67
69
  * [GenEval](http://github.com/banister/gen_eval) - A strange new breed of instance_eval
70
+ * [LocalEval](http://github.com/banister/local_eval) - instance_eval without changing self
68
71
 
69
72
  Contact
70
73
  -------
data/Rakefile CHANGED
@@ -60,8 +60,11 @@ namespace :ruby do
60
60
  end
61
61
  end
62
62
 
63
+ directories = ["#{direc}/lib/1.8", "#{direc}/lib/1.9"]
64
+ directories.each { |d| directory d }
65
+
63
66
  desc "build the 1.8 and 1.9 binaries from source and copy to lib/"
64
- task :compile do
67
+ task :compile => [:clean, *directories] do
65
68
  build_for = proc do |pik_ver, ver|
66
69
  sh %{ \
67
70
  c:\\devkit\\devkitvars.bat && \
@@ -80,7 +83,7 @@ task :compile do
80
83
  end
81
84
 
82
85
  desc "build all platform gems at once"
83
- task :gems => [:rmgems, "mingw32:gem", "mswin32:gem", "ruby:gem"]
86
+ task :gems => [:clean, :rmgems, "mingw32:gem", "mswin32:gem", "ruby:gem"]
84
87
 
85
88
  desc "remove all platform gems"
86
89
  task :rmgems => ["ruby:clobber_package"]
@@ -6,37 +6,6 @@
6
6
  #include <ruby.h>
7
7
  #include "compat.h"
8
8
 
9
- static VALUE
10
- class_to_s(VALUE self)
11
- {
12
- if (!rb_obj_is_kind_of(self, rb_cModule) || self == Qnil)
13
- return rb_str_new2("Anon");
14
-
15
- VALUE attached = rb_iv_get(self, "__attached__");
16
- VALUE name;
17
-
18
- if (attached) {
19
- VALUE val = rb_iv_get(attached, "__module__");
20
- /* if (NIL_P(val)) */
21
- /* return rb_str_new2("Anon"); */
22
-
23
- name = rb_mod_name(val);
24
- }
25
- else {
26
- VALUE val = rb_iv_get(attached, "__module__");
27
- /* if (NIL_P(val)) */
28
- /* return rb_str_new2("Anon"); */
29
-
30
- name = rb_mod_name(val);
31
- }
32
-
33
- /* if module does not have a name, return "Anon" */
34
- if (NIL_P(name) || RSTRING_LEN(name) == 0)
35
- return rb_str_new2("Anon");
36
- else
37
- return name;
38
- }
39
-
40
9
  // also returns true for receiver
41
10
  static VALUE
42
11
  is_meta_singleton_of(VALUE self, VALUE obj)
@@ -65,9 +34,6 @@ include_class_new(VALUE module, VALUE super)
65
34
  module = RBASIC(module)->klass;
66
35
  }
67
36
 
68
- // rb_define_singleton_method(module, "to_s", class_to_s, 0);
69
- // rb_define_method(module, "to_s", class_to_s, 0);
70
-
71
37
  if (!RCLASS_IV_TBL(module)) {
72
38
  RCLASS_IV_TBL(module) = st_init_numtable();
73
39
  }
@@ -106,7 +72,7 @@ rb_gen_include_one(VALUE klass, VALUE module)
106
72
  c = klass;
107
73
 
108
74
  // loop until superclass is 0 (for modules) or superclass is a meta^n singleton of Object (for classes)
109
- while (module && !rb_is_meta_singleton_of(module, rb_cObject)) {
75
+ while (module && !is_meta_singleton_of(module, rb_cObject)) {
110
76
  int superclass_seen = FALSE;
111
77
 
112
78
  if (RCLASS_M_TBL(klass) == RCLASS_M_TBL(module))
Binary file
Binary file
@@ -1,3 +1,3 @@
1
1
  module Object2module
2
- VERSION = "0.5.0"
2
+ VERSION = "0.5.1"
3
3
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 5
8
- - 0
9
- version: 0.5.0
8
+ - 1
9
+ version: 0.5.1
10
10
  platform: i386-mswin32
11
11
  authors:
12
12
  - John Mair (banisterfiend)
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-11-17 00:00:00 +13:00
17
+ date: 2010-11-18 00:00:00 +13:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -33,7 +33,6 @@ files:
33
33
  - lib/object2module/version.rb
34
34
  - lib/object2module.rb
35
35
  - test/test.rb
36
- - test/test_flymake.rb
37
36
  - test/test_simple.rb
38
37
  - test/test_stress.rb
39
38
  - test/test_with_remix.rb
@@ -1,166 +0,0 @@
1
- direc = File.dirname(__FILE__)
2
- require 'rubygems'
3
- require 'bacon'
4
- require "#{direc}/../lib/object2module"
5
-
6
- class Module
7
- public :include, :remove_const
8
- end
9
-
10
- puts "testing Object2module version #{Object2module::VERSION}..."
11
-
12
- describe Object2module do
13
- before do
14
- class A
15
- def a
16
- :a
17
- end
18
- end
19
-
20
- class B
21
- def b
22
- :b
23
- end
24
- end
25
-
26
- module M
27
- def m
28
- :m
29
- end
30
- end
31
-
32
- O = Object.new
33
- class << O
34
- def o
35
- :o
36
- end
37
- end
38
-
39
- C = Class.new
40
- end
41
-
42
- after do
43
- Object.remove_const(:A)
44
- Object.remove_const(:B)
45
- Object.remove_const(:C)
46
- Object.remove_const(:M)
47
- Object.remove_const(:O)
48
- end
49
-
50
- describe 'gen_include' do
51
- it 'includes a module' do
52
- C.gen_include M
53
- C.new.m.should == :m
54
- end
55
-
56
- it 'includes a class' do
57
- C.gen_include A
58
- C.new.a.should == :a
59
- end
60
-
61
- it 'includes an object' do
62
- C.gen_include O
63
- C.new.o.should == :o
64
- end
65
-
66
- it 'includes a class that includes a class' do
67
- A.gen_include B
68
- C.gen_include A
69
- C.new.b.should == :b
70
- C.new.a.should == :a
71
- end
72
-
73
- it 'includes an object that includes a class that includes a class' do
74
- A.gen_include B
75
- O.gen_extend A
76
- C.gen_include O
77
- C.new.o.should == :o
78
- C.new.a.should == :a
79
- C.new.b.should == :b
80
- end
81
-
82
- it 'includes an object that includes an object' do
83
- n = Object.new
84
- class << n
85
- def n
86
- :n
87
- end
88
- end
89
-
90
- l = Object.new
91
- class << l
92
- def l
93
- :l
94
- end
95
- self
96
- end.gen_include n
97
-
98
- C.gen_include l
99
- C.new.l.should == :l
100
- C.new.n.should == :n
101
- end
102
- end
103
-
104
- describe 'gen_extend' do
105
- it 'extends a module' do
106
- O.gen_extend M
107
- O.m.should == :m
108
- end
109
-
110
- it 'extends a class' do
111
- O.gen_extend A
112
- O.a.should == :a
113
- end
114
-
115
- it 'extends an object' do
116
- n = Object.new
117
- class << n
118
- def n
119
- :n
120
- end
121
- end
122
- O.gen_extend n
123
- O.n.should == :n
124
- end
125
-
126
- it 'extends a class that includes a class' do
127
- A.gen_include B
128
- O.gen_extend A
129
- O.b.should == :b
130
- O.a.should == :a
131
- end
132
-
133
- it 'extends an object that includes a class that includes a class' do
134
- A.gen_include B
135
- C.gen_include A
136
- O.gen_extend C
137
- O.o.should == :o
138
- O.a.should == :a
139
- O.b.should == :b
140
- end
141
-
142
- it 'extends an object that extends an object' do
143
- n = Object.new
144
- class << n
145
- def n
146
- :n
147
- end
148
- end
149
-
150
- l = Object.new
151
- class << l
152
- def l
153
- :l
154
- end
155
- self
156
- end
157
-
158
- l.gen_extend n
159
-
160
- O.gen_extend l
161
- O.l.should == :l
162
- O.n.should == :n
163
- end
164
- end
165
- end
166
-