attributes 4.1.0 → 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README +58 -1
- data/README.tmpl +57 -0
- data/b.rb +47 -0
- data/lib/{attributes-4.1.0.rb → attributes-5.0.0.rb} +9 -7
- data/lib/attributes.rb +9 -7
- metadata +5 -4
data/README
CHANGED
@@ -45,6 +45,63 @@ SYNOPSIS
|
|
45
45
|
all this in < 100 lines of code
|
46
46
|
|
47
47
|
HISTORY
|
48
|
+
5.0.0
|
49
|
+
- added support for block caching. for example
|
50
|
+
|
51
|
+
- simple block caching:
|
52
|
+
|
53
|
+
class Filter
|
54
|
+
attribute :process
|
55
|
+
end
|
56
|
+
|
57
|
+
(( filter = Filter.new )).process{|line| line.upcase}
|
58
|
+
|
59
|
+
lines.each do |line|
|
60
|
+
p filter.process.call(line)
|
61
|
+
end
|
62
|
+
|
63
|
+
- using block caching to delay block evaluation/class-factory:
|
64
|
+
|
65
|
+
module MigrationDSL
|
66
|
+
attribute :migration
|
67
|
+
|
68
|
+
def migration_class
|
69
|
+
model = self
|
70
|
+
Class.new(::ActiveRecord::Migration) do
|
71
|
+
singleton_class =
|
72
|
+
class << self
|
73
|
+
self
|
74
|
+
end
|
75
|
+
singleton_class.module_eval{ attribute :model => model }
|
76
|
+
singleton_class.module_eval &model.migration
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
class Table < ActiveRecord::Base
|
82
|
+
extend MigrationDSL
|
83
|
+
end
|
84
|
+
|
85
|
+
class Jobs < Table
|
86
|
+
migration do
|
87
|
+
def up
|
88
|
+
create_table model.table_name, :primary_key => model.primary_key do |t|
|
89
|
+
t.column 'rockin', :text
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def down
|
94
|
+
create_table model.table_name
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
...
|
100
|
+
|
101
|
+
JobsMigration = Jobs.migration_class
|
102
|
+
|
103
|
+
- cleaned up some warnings under 'ruby -d'
|
104
|
+
|
48
105
|
4.1.0
|
49
106
|
- 4.0.0 introduced a bug where a query (foo?) would not initialize a var -
|
50
107
|
4.1.0 fixes that
|
@@ -230,7 +287,7 @@ SAMPLES
|
|
230
287
|
|
231
288
|
~ > ruby samples/e.rb
|
232
289
|
|
233
|
-
#<Config:
|
290
|
+
#<Config:0x1fb58 @port=80, @host="codeforpeople.org">
|
234
291
|
|
235
292
|
|
236
293
|
<========< samples/f.rb >========>
|
data/README.tmpl
CHANGED
@@ -45,6 +45,63 @@ SYNOPSIS
|
|
45
45
|
all this in < 100 lines of code
|
46
46
|
|
47
47
|
HISTORY
|
48
|
+
5.0.0
|
49
|
+
- added support for block caching. for example
|
50
|
+
|
51
|
+
- simple block caching:
|
52
|
+
|
53
|
+
class Filter
|
54
|
+
attribute :process
|
55
|
+
end
|
56
|
+
|
57
|
+
(( filter = Filter.new )).process{|line| line.upcase}
|
58
|
+
|
59
|
+
lines.each do |line|
|
60
|
+
p filter.process.call(line)
|
61
|
+
end
|
62
|
+
|
63
|
+
- using block caching to delay block evaluation/class-factory:
|
64
|
+
|
65
|
+
module MigrationDSL
|
66
|
+
attribute :migration
|
67
|
+
|
68
|
+
def migration_class
|
69
|
+
model = self
|
70
|
+
Class.new(::ActiveRecord::Migration) do
|
71
|
+
singleton_class =
|
72
|
+
class << self
|
73
|
+
self
|
74
|
+
end
|
75
|
+
singleton_class.module_eval{ attribute :model => model }
|
76
|
+
singleton_class.module_eval &model.migration
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
class Table < ActiveRecord::Base
|
82
|
+
extend MigrationDSL
|
83
|
+
end
|
84
|
+
|
85
|
+
class Jobs < Table
|
86
|
+
migration do
|
87
|
+
def up
|
88
|
+
create_table model.table_name, :primary_key => model.primary_key do |t|
|
89
|
+
t.column 'rockin', :text
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def down
|
94
|
+
create_table model.table_name
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
99
|
+
...
|
100
|
+
|
101
|
+
JobsMigration = Jobs.migration_class
|
102
|
+
|
103
|
+
- cleaned up some warnings under 'ruby -d'
|
104
|
+
|
48
105
|
4.1.0
|
49
106
|
- 4.0.0 introduced a bug where a query (foo?) would not initialize a var -
|
50
107
|
4.1.0 fixes that
|
data/b.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'lib/attributes.rb'
|
2
|
+
require 'rubygems'
|
3
|
+
require 'active_record'
|
4
|
+
require 'yaml'
|
5
|
+
|
6
|
+
options = YAML.load <<-txt
|
7
|
+
adapter: postgresql
|
8
|
+
database: votelink
|
9
|
+
username: www
|
10
|
+
host: localhost
|
11
|
+
encoding: UTF8
|
12
|
+
txt
|
13
|
+
ActiveRecord::Base.establish_connection options
|
14
|
+
|
15
|
+
module MigrationDSL
|
16
|
+
attribute :migration
|
17
|
+
|
18
|
+
def migration_class
|
19
|
+
model = self
|
20
|
+
Class.new(::ActiveRecord::Migration) do
|
21
|
+
singleton_class =
|
22
|
+
class << self
|
23
|
+
self
|
24
|
+
end
|
25
|
+
singleton_class.module_eval{ attribute :model => model }
|
26
|
+
singleton_class.module_eval &model.migration
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class Table < ActiveRecord::Base
|
32
|
+
extend MigrationDSL
|
33
|
+
end
|
34
|
+
|
35
|
+
class Jobs < Table
|
36
|
+
migration do
|
37
|
+
def up
|
38
|
+
create_table model.table_name, :primary_key => model.primary_key do |t|
|
39
|
+
t.column 'rockin', :text
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def down
|
44
|
+
create_table model.table_name
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Attributes
|
2
|
-
Attributes::VERSION = '
|
2
|
+
Attributes::VERSION = '5.0.0' unless defined? Attributes::VERSION
|
3
3
|
def self.version() Attributes::VERSION end
|
4
4
|
|
5
5
|
class List < ::Array
|
@@ -40,20 +40,22 @@ module Attributes
|
|
40
40
|
|
41
41
|
initialize = b || lambda { default }
|
42
42
|
initializer = lambda do |this|
|
43
|
-
Object.instance_method('instance_eval').bind(this).call
|
43
|
+
Object.instance_method('instance_eval').bind(this).call(&initialize)
|
44
44
|
end
|
45
45
|
initializer_id = initializer.object_id
|
46
46
|
__attributes__.initializers[name] = initializer
|
47
47
|
|
48
48
|
module_eval <<-code
|
49
|
-
def #{ name }=(value)
|
50
|
-
|
49
|
+
def #{ name }=(*value, &block)
|
50
|
+
value.unshift block if block
|
51
|
+
@#{ name } = value.first
|
51
52
|
end
|
52
53
|
code
|
53
54
|
|
54
55
|
module_eval <<-code
|
55
|
-
def #{ name }(*value)
|
56
|
-
|
56
|
+
def #{ name }(*value, &block)
|
57
|
+
value.unshift block if block
|
58
|
+
return self.send('#{ name }=', value.first) unless value.empty?
|
57
59
|
#{ name }! unless defined? @#{ name }
|
58
60
|
@#{ name }
|
59
61
|
end
|
@@ -106,7 +108,7 @@ class Object
|
|
106
108
|
class << self
|
107
109
|
self
|
108
110
|
end
|
109
|
-
sc.attributes
|
111
|
+
sc.attributes(*a, &b)
|
110
112
|
end
|
111
113
|
%w( __attributes__ __attribute__ attribute ).each{|dst| alias_method dst, 'attributes'}
|
112
114
|
end
|
data/lib/attributes.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
module Attributes
|
2
|
-
Attributes::VERSION = '
|
2
|
+
Attributes::VERSION = '5.0.0' unless defined? Attributes::VERSION
|
3
3
|
def self.version() Attributes::VERSION end
|
4
4
|
|
5
5
|
class List < ::Array
|
@@ -40,20 +40,22 @@ module Attributes
|
|
40
40
|
|
41
41
|
initialize = b || lambda { default }
|
42
42
|
initializer = lambda do |this|
|
43
|
-
Object.instance_method('instance_eval').bind(this).call
|
43
|
+
Object.instance_method('instance_eval').bind(this).call(&initialize)
|
44
44
|
end
|
45
45
|
initializer_id = initializer.object_id
|
46
46
|
__attributes__.initializers[name] = initializer
|
47
47
|
|
48
48
|
module_eval <<-code
|
49
|
-
def #{ name }=(value)
|
50
|
-
|
49
|
+
def #{ name }=(*value, &block)
|
50
|
+
value.unshift block if block
|
51
|
+
@#{ name } = value.first
|
51
52
|
end
|
52
53
|
code
|
53
54
|
|
54
55
|
module_eval <<-code
|
55
|
-
def #{ name }(*value)
|
56
|
-
|
56
|
+
def #{ name }(*value, &block)
|
57
|
+
value.unshift block if block
|
58
|
+
return self.send('#{ name }=', value.first) unless value.empty?
|
57
59
|
#{ name }! unless defined? @#{ name }
|
58
60
|
@#{ name }
|
59
61
|
end
|
@@ -106,7 +108,7 @@ class Object
|
|
106
108
|
class << self
|
107
109
|
self
|
108
110
|
end
|
109
|
-
sc.attributes
|
111
|
+
sc.attributes(*a, &b)
|
110
112
|
end
|
111
113
|
%w( __attributes__ __attribute__ attribute ).each{|dst| alias_method dst, 'attributes'}
|
112
114
|
end
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.4
|
3
3
|
specification_version: 1
|
4
4
|
name: attributes
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version:
|
7
|
-
date: 2007-
|
6
|
+
version: 5.0.0
|
7
|
+
date: 2007-11-07 00:00:00 -07:00
|
8
8
|
summary: attributes
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -30,11 +30,12 @@ authors:
|
|
30
30
|
- Ara T. Howard
|
31
31
|
files:
|
32
32
|
- a.rb
|
33
|
+
- b.rb
|
33
34
|
- gemspec.rb
|
34
35
|
- gen_readme.rb
|
35
36
|
- install.rb
|
36
37
|
- lib
|
37
|
-
- lib/attributes-
|
38
|
+
- lib/attributes-5.0.0.rb
|
38
39
|
- lib/attributes.rb
|
39
40
|
- README
|
40
41
|
- README.tmpl
|