autocode 0.9.3 → 0.9.9

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.
@@ -1,208 +0,0 @@
1
-
2
- body {
3
- font-family: Verdana,Arial,Helvetica,sans-serif;
4
- font-size: 90%;
5
- margin: 0;
6
- margin-left: 40px;
7
- padding: 0;
8
- background: white;
9
- }
10
-
11
- h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
12
- h1 { font-size: 150%; }
13
- h2,h3,h4 { margin-top: 1em; }
14
-
15
- a { background: #eef; color: #039; text-decoration: none; }
16
- a:hover { background: #039; color: #eef; }
17
-
18
- /* Override the base stylesheet's Anchor inside a table cell */
19
- td > a {
20
- background: transparent;
21
- color: #039;
22
- text-decoration: none;
23
- }
24
-
25
- /* and inside a section title */
26
- .section-title > a {
27
- background: transparent;
28
- color: #eee;
29
- text-decoration: none;
30
- }
31
-
32
- /* === Structural elements =================================== */
33
-
34
- div#index {
35
- margin: 0;
36
- margin-left: -40px;
37
- padding: 0;
38
- font-size: 90%;
39
- }
40
-
41
-
42
- div#index a {
43
- margin-left: 0.7em;
44
- }
45
-
46
- div#index .section-bar {
47
- margin-left: 0px;
48
- padding-left: 0.7em;
49
- background: #ccc;
50
- font-size: small;
51
- }
52
-
53
-
54
- div#classHeader, div#fileHeader {
55
- width: auto;
56
- color: white;
57
- padding: 0.5em 1.5em 0.5em 1.5em;
58
- margin: 0;
59
- margin-left: -40px;
60
- border-bottom: 3px solid #006;
61
- }
62
-
63
- div#classHeader a, div#fileHeader a {
64
- background: inherit;
65
- color: white;
66
- }
67
-
68
- div#classHeader td, div#fileHeader td {
69
- background: inherit;
70
- color: white;
71
- }
72
-
73
-
74
- div#fileHeader {
75
- background: #057;
76
- }
77
-
78
- div#classHeader {
79
- background: #048;
80
- }
81
-
82
-
83
- .class-name-in-header {
84
- font-size: 180%;
85
- font-weight: bold;
86
- }
87
-
88
-
89
- div#bodyContent {
90
- padding: 0 1.5em 0 1.5em;
91
- }
92
-
93
- div#description {
94
- padding: 0.5em 1.5em;
95
- background: #efefef;
96
- border: 1px dotted #999;
97
- }
98
-
99
- div#description h1,h2,h3,h4,h5,h6 {
100
- color: #125;;
101
- background: transparent;
102
- }
103
-
104
- div#validator-badges {
105
- text-align: center;
106
- }
107
- div#validator-badges img { border: 0; }
108
-
109
- div#copyright {
110
- color: #333;
111
- background: #efefef;
112
- font: 0.75em sans-serif;
113
- margin-top: 5em;
114
- margin-bottom: 0;
115
- padding: 0.5em 2em;
116
- }
117
-
118
-
119
- /* === Classes =================================== */
120
-
121
- table.header-table {
122
- color: white;
123
- font-size: small;
124
- }
125
-
126
- .type-note {
127
- font-size: small;
128
- color: #DEDEDE;
129
- }
130
-
131
- .xxsection-bar {
132
- background: #eee;
133
- color: #333;
134
- padding: 3px;
135
- }
136
-
137
- .section-bar {
138
- color: #333;
139
- border-bottom: 1px solid #999;
140
- margin-left: -20px;
141
- }
142
-
143
-
144
- .section-title {
145
- background: #79a;
146
- color: #eee;
147
- padding: 3px;
148
- margin-top: 2em;
149
- margin-left: -30px;
150
- border: 1px solid #999;
151
- }
152
-
153
- .top-aligned-row { vertical-align: top }
154
- .bottom-aligned-row { vertical-align: bottom }
155
-
156
- /* --- Context section classes ----------------------- */
157
-
158
- .context-row { }
159
- .context-item-name { font-family: monospace; font-weight: bold; color: black; }
160
- .context-item-value { font-size: small; color: #448; }
161
- .context-item-desc { color: #333; padding-left: 2em; }
162
-
163
- /* --- Method classes -------------------------- */
164
- .method-detail {
165
- background: #efefef;
166
- padding: 0;
167
- margin-top: 0.5em;
168
- margin-bottom: 1em;
169
- border: 1px dotted #ccc;
170
- }
171
- .method-heading {
172
- color: black;
173
- background: #ccc;
174
- border-bottom: 1px solid #666;
175
- padding: 0.2em 0.5em 0 0.5em;
176
- }
177
- .method-signature { color: black; background: inherit; }
178
- .method-name { font-weight: bold; }
179
- .method-args { font-style: italic; }
180
- .method-description { padding: 0 0.5em 0 0.5em; }
181
-
182
- /* --- Source code sections -------------------- */
183
-
184
- a.source-toggle { font-size: 90%; }
185
- div.method-source-code {
186
- background: #262626;
187
- color: #ffdead;
188
- margin: 1em;
189
- padding: 0.5em;
190
- border: 1px dashed #999;
191
- overflow: hidden;
192
- }
193
-
194
- div.method-source-code pre { color: #ffdead; overflow: hidden; }
195
-
196
- /* --- Ruby keyword styles --------------------- */
197
-
198
- .standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
199
-
200
- .ruby-constant { color: #7fffd4; background: transparent; }
201
- .ruby-keyword { color: #00ffff; background: transparent; }
202
- .ruby-ivar { color: #eedd82; background: transparent; }
203
- .ruby-operator { color: #00ffee; background: transparent; }
204
- .ruby-identifier { color: #ffdead; background: transparent; }
205
- .ruby-node { color: #ffa07a; background: transparent; }
206
- .ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
207
- .ruby-regexp { color: #ffa07a; background: transparent; }
208
- .ruby-value { color: #7fffd4; background: transparent; }
@@ -1,54 +0,0 @@
1
- require 'rubygems'
2
- require 'metaid'
3
-
4
- # Extending a module with Autocreate allows you to specify autocreate rules for that module.
5
- #
6
- # Autocreate allows you to automatically created classes or modules based on a given exemplar at the time they are referenced.
7
- #
8
- # To use Autocreate, mix it via +extend+ into the class or module within which you want to autocreate referenced constants.
9
- #
10
- # See the README for an example of how to use Autocreate.
11
-
12
- module Autocreate
13
-
14
- def self.extended( mod ) #:nodoc:
15
-
16
- old = mod.method( :const_missing )
17
- mod.metaclass.class_eval do
18
-
19
- # Specifies that the constant specified by key should be autocreated using the exemplar. If a block is given, the block is further used to initialize the block once it has been cloned.
20
- def autocreate( key, exemplar, &block )
21
- ( @autocreate ||= [] ) << [ key, exemplar, block ]
22
- return self
23
- end
24
-
25
- define_method :const_missing do | cname | #:nodoc:
26
-
27
- # first, find an applicable exemplar
28
- key, exemplar, block = ( @autocreate ||= [] ).find do |k,v|
29
- case k
30
- when true then true
31
- when String, Symbol then k.to_s == cname.to_s
32
- when Array then k.find { |k| k.to_s == cname.to_s }
33
- else false
34
- end
35
- end
36
-
37
- # if we found it, set the const and return it
38
- if key
39
- object = exemplar.clone
40
- ( @reloadable ||= [] ) << cname;
41
- const_set( cname, object )
42
- object.instance_eval( &block ) if block
43
- return object
44
- else
45
- old.call(cname)
46
- end
47
-
48
- end
49
-
50
- end
51
-
52
- end
53
-
54
- end
@@ -1,69 +0,0 @@
1
- require 'rubygems'
2
- require 'metaid'
3
-
4
- # Autoload allows you to specify which modules or classes to automatically load when they are referenced. This is somewhat more sophisticated than the +autoinclude+ mechanism in the standard library. For one thing, you can cause code to be reloaded by using Reloadable in conjunction with Autoload. For another, you can provide a search path using the directories method, thereby allowing you to "autoinclude" entire directories in one fell swoop.
5
- #
6
- # To use Autoload, you must mix it into your module or class via extend. That will provide the autoload and directories methods for you, as described below.
7
- #
8
- # A typical use case for Autoload looks like this:
9
- #
10
- # require 'autocode'
11
- #
12
- # module Models
13
- # extend Autoload; extend Reloadable
14
- # autoload true; directories :models
15
- # end
16
-
17
- module Autoload
18
-
19
- def self.extended( mod ) #:nodoc:
20
-
21
- old = mod.method( :const_missing )
22
-
23
- mod.metaclass.class_eval do
24
-
25
- # Specifies that you want to autoload each of the constants referenced by keys. A key of true is basically a wild-card, meaning "load anything".
26
- def autoload( *keys )
27
- ( @autoload ||= [] ).concat(keys)
28
- return self
29
- end
30
-
31
- # Provide a list of directories from which a given constant might be loaded.
32
- def directories( *dirs )
33
- ( @directories ||= ['.'] ).concat(dirs)
34
- return self
35
- end
36
-
37
- # Is a given constant being autoloaded?
38
- def autoload?( cname )
39
-
40
- cname = cname.to_s.gsub(/([a-z\d])([A-Z])/){ "#{$1}_#{$2.downcase}"}
41
-
42
- # is this name autoloadable?
43
- key = ( @autoload ||= [] ).find do |key|
44
- key == true || ( key.to_s == cname )
45
- end
46
-
47
- end
48
-
49
- define_method :const_missing do | cname | #:nodoc:
50
-
51
- return old.call(cname) unless autoload?( cname )
52
- fname = ( cname.to_s.gsub(/([a-z\d])([A-Z])/){ "#{$1}_#{$2.downcase}"} + '.rb' ).downcase
53
- dir = ( @directories ||= ['.'] ).find do |dir|
54
- File.exist?( dir / fname )
55
- end
56
-
57
- if ( dir && load( dir / fname ) && c = const_get( cname ) )
58
- ( @reloadable ||= [] ) << cname; return c
59
- else
60
- old.call( cname )
61
- end
62
-
63
- end
64
-
65
- end
66
-
67
- end
68
-
69
- end
@@ -1,30 +0,0 @@
1
- require 'rubygems'
2
- require 'metaid'
3
-
4
- # Reloadable simply makes it possible for a module's code to be reloaded. *Important*: Only code loaded via Autoload or Autocreate will be reloaded. Also, the module itself is not reloaded, only the modules and classes within it that were loaded via *Autocode*.
5
- #
6
- # To use Reloadable, simply extend a given module with Reloadable. This will add two methods to the module: reloadable and reload. These are described below.
7
-
8
- module Reloadable
9
-
10
- def self.extended( mod ) #:nodoc:
11
-
12
- mod.metaclass.class_eval do
13
-
14
- # Returns the list of constants that would be reloaded upon a call to reload.
15
- def reloadable( *names )
16
- ( @reloadable ||= [] ).concat(names)
17
- return self
18
- end
19
-
20
- # Reloads all the constants that were loaded via *Autocode*. Technically, all reload is doing is undefining them (by calling +remove_const+ on each in turn); they won't get reloaded until they are referenced.
21
- def reload
22
- ( @reloadable ||=[] ).each { |name| remove_const( name ) }
23
- @reloadable = []; return self
24
- end
25
-
26
- end
27
-
28
- end
29
-
30
- end