attributes 3.5.0 → 3.6.0

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.
File without changes
data/gemspec.rb CHANGED
@@ -18,7 +18,7 @@ Gem::Specification::new do |spec|
18
18
 
19
19
  spec.has_rdoc = File::exist? "doc"
20
20
  spec.test_suite_file = "test/#{ lib }.rb" if File::directory? "test"
21
- spec.add_dependency 'pervasives', '>= 0'
21
+ spec.add_dependency 'pervasives', '>= 1.0'
22
22
 
23
23
  spec.extensions << "extconf.rb" if File::exists? "extconf.rb"
24
24
 
@@ -1,7 +1,5 @@
1
- require 'pervasives'
2
-
3
1
  module Attributes
4
- VERSION = '3.5.0'
2
+ VERSION = '3.6.0'
5
3
  def self.version() VERSION end
6
4
 
7
5
  def attributes *a, &b
@@ -17,6 +15,8 @@ module Attributes
17
15
  ivar, getter, setter, query, banger =
18
16
  "@#{ name }", "#{ name }", "#{ name }=", "#{ name }?", "#{ name }!"
19
17
 
18
+ raise NameError, "bad instance variable name '#{ ivar }'" if ivar =~ %r/[!?=]$/o
19
+
20
20
  define_method(setter) do |value|
21
21
  __pervasive__('instance_variable_set', ivar, value)
22
22
  end
@@ -77,3 +77,47 @@ end
77
77
  class Module
78
78
  include Attributes
79
79
  end
80
+
81
+ BEGIN {
82
+ unless defined? Pervasives
83
+ begin
84
+ require 'pervasives'
85
+ rescue LoadError
86
+ module Pervasives
87
+ VERSION = "1.0.0"
88
+ def self.version() VERSION end
89
+ class ::Class
90
+ def __pervasive__ m, *a, &b
91
+ (( Class.instance_method(m) rescue
92
+ Module.instance_method(m) rescue
93
+ Object.instance_method(m) )).bind(self).call(*a, &b)
94
+ end
95
+ end
96
+ class ::Module
97
+ def __pervasive__ m, *a, &b
98
+ (( Module.instance_method(m) rescue
99
+ Object.instance_method(m) )).bind(self).call(*a, &b)
100
+ end
101
+ end
102
+ class ::Object
103
+ def __pervasive__ m, *a, &b
104
+ (( Object.instance_method(m) )).bind(self).call(*a, &b)
105
+ end
106
+ end
107
+
108
+ class Proxy
109
+ instance_methods.each{|m| undef_method m unless m[%r/__/]}
110
+ def initialize obj
111
+ @obj = obj
112
+ end
113
+ def method_missing m, *a, &b
114
+ @obj.__pervasive__ m, *a, &b
115
+ end
116
+ def __obj__
117
+ @obj
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
123
+ }
data/lib/attributes.rb CHANGED
@@ -1,7 +1,5 @@
1
- require 'pervasives'
2
-
3
1
  module Attributes
4
- VERSION = '3.5.0'
2
+ VERSION = '3.6.0'
5
3
  def self.version() VERSION end
6
4
 
7
5
  def attributes *a, &b
@@ -17,6 +15,8 @@ module Attributes
17
15
  ivar, getter, setter, query, banger =
18
16
  "@#{ name }", "#{ name }", "#{ name }=", "#{ name }?", "#{ name }!"
19
17
 
18
+ raise NameError, "bad instance variable name '#{ ivar }'" if ivar =~ %r/[!?=]$/o
19
+
20
20
  define_method(setter) do |value|
21
21
  __pervasive__('instance_variable_set', ivar, value)
22
22
  end
@@ -77,3 +77,47 @@ end
77
77
  class Module
78
78
  include Attributes
79
79
  end
80
+
81
+ BEGIN {
82
+ unless defined? Pervasives
83
+ begin
84
+ require 'pervasives'
85
+ rescue LoadError
86
+ module Pervasives
87
+ VERSION = "1.0.0"
88
+ def self.version() VERSION end
89
+ class ::Class
90
+ def __pervasive__ m, *a, &b
91
+ (( Class.instance_method(m) rescue
92
+ Module.instance_method(m) rescue
93
+ Object.instance_method(m) )).bind(self).call(*a, &b)
94
+ end
95
+ end
96
+ class ::Module
97
+ def __pervasive__ m, *a, &b
98
+ (( Module.instance_method(m) rescue
99
+ Object.instance_method(m) )).bind(self).call(*a, &b)
100
+ end
101
+ end
102
+ class ::Object
103
+ def __pervasive__ m, *a, &b
104
+ (( Object.instance_method(m) )).bind(self).call(*a, &b)
105
+ end
106
+ end
107
+
108
+ class Proxy
109
+ instance_methods.each{|m| undef_method m unless m[%r/__/]}
110
+ def initialize obj
111
+ @obj = obj
112
+ end
113
+ def method_missing m, *a, &b
114
+ @obj.__pervasive__ m, *a, &b
115
+ end
116
+ def __obj__
117
+ @obj
118
+ end
119
+ end
120
+ end
121
+ end
122
+ end
123
+ }
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: attributes
5
5
  version: !ruby/object:Gem::Version
6
- version: 3.5.0
7
- date: 2007-07-02 00:00:00 -06:00
6
+ version: 3.6.0
7
+ date: 2007-09-08 00:00:00 -06:00
8
8
  summary: attributes
9
9
  require_paths:
10
10
  - lib
@@ -29,13 +29,12 @@ post_install_message:
29
29
  authors:
30
30
  - Ara T. Howard
31
31
  files:
32
- - a.rb
33
- - attributes-3.5.0.gem
32
+ - attributes-3.6.0.gem
34
33
  - gemspec.rb
35
34
  - gen_readme.rb
36
35
  - install.rb
37
36
  - lib
38
- - lib/attributes-3.5.0.rb
37
+ - lib/attributes-3.6.0.rb
39
38
  - lib/attributes.rb
40
39
  - README
41
40
  - README.tmpl
@@ -65,5 +64,5 @@ dependencies:
65
64
  requirements:
66
65
  - - ">="
67
66
  - !ruby/object:Gem::Version
68
- version: "0"
67
+ version: "1.0"
69
68
  version:
data/a.rb DELETED
@@ -1,14 +0,0 @@
1
- require 'attributes'
2
-
3
- class A
4
- attribute 'a'
5
- end
6
-
7
- class B < A
8
- attribute 'b'
9
- end
10
-
11
- p A.attributes
12
- p A.new.attributes
13
- p B.attributes
14
- p B.new.attributes