Changesets can be listed by changeset number.
The Git repository is here.
- Revision:
- 4
- Log:
Initial import of Radiant 0.50 sources from a downloaded Tarball.
Radiant is a Ruby On Rails based lightweight content management
system.
- Author:
- adh
- Date:
- Sat Jul 22 16:47:40 +0100 2006
- Size:
- 1544 Bytes
1 | module Registerable |
2 | def self.append_features(base) |
3 | base.class_eval %{ |
4 | @@registered = {} |
5 | |
6 | def self.registered |
7 | # protect access to hash |
8 | @@registered.dup |
9 | end |
10 | |
11 | def self.register(id, klass) |
12 | id = id.to_s.strip |
13 | unless @@registered[id] |
14 | @@registered[id] = klass |
15 | klass.class_eval "def self.registered_id; '\#{id}'; end" |
16 | else |
17 | raise "ID `\#{id}' already registered. Choose another ID." |
18 | end |
19 | end |
20 | |
21 | def self.find_all |
22 | self.registered.inject([]) { |a, (k, v)| a << v }.sort_by { |f| f.registered_id } |
23 | end |
24 | |
25 | def self.[](id) |
26 | id = id.to_s.strip |
27 | if @@registered.has_key?(id) |
28 | @@registered[id] |
29 | else |
30 | Base |
31 | end |
32 | end |
33 | |
34 | def self.create(id) |
35 | self[id].new |
36 | end |
37 | |
38 | class Base |
39 | def self.register(id) |
40 | #{base.name}.register(id, self) |
41 | end |
42 | |
43 | def self.registered_id |
44 | nil |
45 | end |
46 | |
47 | def registered_id |
48 | self.class.registered_id |
49 | end |
50 | end |
51 | } |
52 | super |
53 | end |
54 | end |
55 | |
56 | require 'active_record' |
57 | class ActiveRecord::Base |
58 | def self.registered_attr(symbol, registerable_module) |
59 | module_eval %{ |
60 | def #{symbol} |
61 | if @#{symbol}.nil? or (@old_#{symbol}_id != #{symbol}_id) |
62 | @old_#{symbol}_id = #{symbol}_id |
63 | @#{symbol} = #{registerable_module}[#{symbol}_id].new |
64 | else |
65 | @#{symbol} |
66 | end |
67 | end |
68 | } |
69 | end |
70 | end |