syc-backup 0.0.4

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.
Files changed (71) hide show
  1. data/README.rdoc +48 -0
  2. data/Rakefile +7 -0
  3. data/bin/sycbackup +6 -0
  4. data/doc/Backup.html +186 -0
  5. data/doc/Backup/CronEdit.html +381 -0
  6. data/doc/Backup/Environment.html +231 -0
  7. data/doc/Backup/FileBackup.html +363 -0
  8. data/doc/Backup/MySQLBackup.html +305 -0
  9. data/doc/Backup/Options.html +328 -0
  10. data/doc/Backup/Process.html +261 -0
  11. data/doc/Backup/Runner.html +244 -0
  12. data/doc/README_rdoc.html +202 -0
  13. data/doc/Rakefile.html +118 -0
  14. data/doc/TestCronEdit.html +211 -0
  15. data/doc/TestEnvironment.html +156 -0
  16. data/doc/TestFileBackup.html +237 -0
  17. data/doc/TestMySQLBackup.html +167 -0
  18. data/doc/TestOptions.html +156 -0
  19. data/doc/TestProcess.html +236 -0
  20. data/doc/created.rid +18 -0
  21. data/doc/images/add.png +0 -0
  22. data/doc/images/brick.png +0 -0
  23. data/doc/images/brick_link.png +0 -0
  24. data/doc/images/bug.png +0 -0
  25. data/doc/images/bullet_black.png +0 -0
  26. data/doc/images/bullet_toggle_minus.png +0 -0
  27. data/doc/images/bullet_toggle_plus.png +0 -0
  28. data/doc/images/date.png +0 -0
  29. data/doc/images/delete.png +0 -0
  30. data/doc/images/find.png +0 -0
  31. data/doc/images/loadingAnimation.gif +0 -0
  32. data/doc/images/macFFBgHack.png +0 -0
  33. data/doc/images/package.png +0 -0
  34. data/doc/images/page_green.png +0 -0
  35. data/doc/images/page_white_text.png +0 -0
  36. data/doc/images/page_white_width.png +0 -0
  37. data/doc/images/plugin.png +0 -0
  38. data/doc/images/ruby.png +0 -0
  39. data/doc/images/tag_blue.png +0 -0
  40. data/doc/images/tag_green.png +0 -0
  41. data/doc/images/transparent.png +0 -0
  42. data/doc/images/wrench.png +0 -0
  43. data/doc/images/wrench_orange.png +0 -0
  44. data/doc/images/zoom.png +0 -0
  45. data/doc/index.html +106 -0
  46. data/doc/js/darkfish.js +153 -0
  47. data/doc/js/jquery.js +18 -0
  48. data/doc/js/navigation.js +142 -0
  49. data/doc/js/search.js +94 -0
  50. data/doc/js/search_index.js +1 -0
  51. data/doc/js/searcher.js +228 -0
  52. data/doc/rdoc.css +543 -0
  53. data/doc/table_of_contents.html +148 -0
  54. data/lib/backup/cron_edit.rb +127 -0
  55. data/lib/backup/environment.rb +44 -0
  56. data/lib/backup/file_backup.rb +94 -0
  57. data/lib/backup/mysql_backup.rb +58 -0
  58. data/lib/backup/options.rb +199 -0
  59. data/lib/backup/process.rb +99 -0
  60. data/lib/backup/runner.rb +79 -0
  61. data/lib/backup_version.rb +9 -0
  62. data/syc-backup-0.0.1.gem +0 -0
  63. data/syc-backup-0.0.3.gem +0 -0
  64. data/sycbackup.gemspec +20 -0
  65. data/test/test_cron_edit.rb +49 -0
  66. data/test/test_environment.rb +22 -0
  67. data/test/test_file_backup.rb +70 -0
  68. data/test/test_mysql_backup.rb +71 -0
  69. data/test/test_options.rb +189 -0
  70. data/test/test_process.rb +40 -0
  71. metadata +123 -0
@@ -0,0 +1 @@
1
+ var search_data = {"index":{"searchIndex":["backup","cronedit","environment","filebackup","mysqlbackup","options","process","runner","testcronedit","testenvironment","testfilebackup","testmysqlbackup","testoptions","testprocess","add_command()","backup()","backup()","backup()","check_for_inexistent()","cleanup()","compress()","compress()","crontab_count()","new()","new()","new()","new()","new()","remove_command()","ruby()","run()","setup()","setup()","teardown()","teardown()","readme","rakefile"],"longSearchIndex":["backup","backup::cronedit","backup::environment","backup::filebackup","backup::mysqlbackup","backup::options","backup::process","backup::runner","testcronedit","testenvironment","testfilebackup","testmysqlbackup","testoptions","testprocess","backup::cronedit#add_command()","backup::filebackup#backup()","backup::mysqlbackup#backup()","backup::process#backup()","backup::filebackup#check_for_inexistent()","backup::cronedit#cleanup()","backup::filebackup#compress()","backup::mysqlbackup#compress()","testcronedit#crontab_count()","backup::filebackup::new()","backup::mysqlbackup::new()","backup::options::new()","backup::process::new()","backup::runner::new()","backup::cronedit#remove_command()","backup::environment::ruby()","backup::runner#run()","testfilebackup#setup()","testprocess#setup()","testfilebackup#teardown()","testprocess#teardown()","",""],"info":[["Backup","","Backup.html","","<p>Backup contains functions to backup a MySQL database and files and\ndirectories to a default or specified …\n"],["Backup::CronEdit","","Backup/CronEdit.html","","<p>Adds or removes a command to the user’s crontab. To make sure that the Ruby\napplication is invoked as …\n"],["Backup::Environment","","Backup/Environment.html","","<p>Reads and filters the user’s environment variables to meet Ruby and Gem\nrequirements to run the application …\n"],["Backup::FileBackup","","Backup/FileBackup.html","","<p>Backup directories and files to a backup directory\n"],["Backup::MySQLBackup","","Backup/MySQLBackup.html","","<p>MySQLBackup creates a dump file of a MySQL database with <em>mysqldump</em>\nand returns the dump file.\n"],["Backup::Options","","Backup/Options.html","","<p>Parses the command line options the user has provided on the command line\n"],["Backup::Process","","Backup/Process.html","","<p>Conducts the backups of a MySQL database and files.\n"],["Backup::Runner","","Backup/Runner.html","","<p>Is invoked from the command line application and invokes the application’s\noptons as provided by the …\n"],["TestCronEdit","","TestCronEdit.html","","<p>Test for CronEdit will add commands to the users crontab. After each test\nthe test entries are removed. …\n"],["TestEnvironment","","TestEnvironment.html","","<p>Tests Environment class to return the variables neccessary for running a\nRuby application as a cron job …\n"],["TestFileBackup","","TestFileBackup.html","","<p>Tests the FileBackup class.\n"],["TestMySQLBackup","","TestMySQLBackup.html","","<p>Tests for MySQLBackup class.\n<p>Expects a running MySQL database server with following data\n<p>table &mdash; test\n"],["TestOptions","","TestOptions.html","","<p>Test that user input is correctly interpreted and provided to other classes\nover methods.\n"],["TestProcess","","TestProcess.html","","<p>Test for the Process class. Tests copy and compress commands\n"],["add_command","Backup::CronEdit","Backup/CronEdit.html#method-i-add_command","(command, environment=[])","<p>Adds a command to the user’s crontab. If the provided command is empty\nadd_command will exit the application …\n"],["backup","Backup::FileBackup","Backup/FileBackup.html#method-i-backup","(backup_folder)","<p>The files to be backed up are initilized when creating an instance of\nFileBackup. These files are then …\n"],["backup","Backup::MySQLBackup","Backup/MySQLBackup.html#method-i-backup","(backup_folder=\"./\")","<p>Creates a MySQL dump file and returns the file\n"],["backup","Backup::Process","Backup/Process.html#method-i-backup","()","<p>Creates the backup of the database and the files. If at least one of the\nprovided files doesn’t exist …\n"],["check_for_inexistent","Backup::FileBackup","Backup/FileBackup.html#method-i-check_for_inexistent","(files)","<p>Checks if the files all exist. Files that do not exist are returned in an\nArray\n"],["cleanup","Backup::CronEdit","Backup/CronEdit.html#method-i-cleanup","()","<p>Removes the CRON_ENTRIES_FILE after the values have been written to crontab\n"],["compress","Backup::FileBackup","Backup/FileBackup.html#method-i-compress","(files, backup_folder)","<p>Compress the files to the backup directory\n"],["compress","Backup::MySQLBackup","Backup/MySQLBackup.html#method-i-compress","(backup_file)","<p>Compresses the MySQL dump file. If an error occurs when compressing the\nfile an error message is printed …\n"],["crontab_count","TestCronEdit","TestCronEdit.html#method-i-crontab_count","(command)","<p>Determines the count of the provided <em>command</em> in the crontab.\n"],["new","Backup::FileBackup","Backup/FileBackup.html#method-c-new","(files=[])","<p>Initializes the files to be backed up. If no file is provided an error is\nreturned\n"],["new","Backup::MySQLBackup","Backup/MySQLBackup.html#method-c-new","(database, user, password)","<p>database is the database to be backed up with the user that has the\ncredentials to access the database …\n"],["new","Backup::Options","Backup/Options.html#method-c-new","(argv)","<p>Takes the arguments from the command line and parses them\n"],["new","Backup::Process","Backup/Process.html#method-c-new","(backup_folder, files, override, no_compress)","<p>Takes the backup_folder where the files are backed up to. If override is\nprovided the files in the backup …\n"],["new","Backup::Runner","Backup/Runner.html#method-c-new","(argv)","<p>Takes the command line options and parses them\n"],["remove_command","Backup::CronEdit","Backup/CronEdit.html#method-i-remove_command","(command)","<p>Removes a command from the user’s crontab. If the provided command is \nempty remove_command will exit …\n"],["ruby","Backup::Environment","Backup/Environment.html#method-c-ruby","()","<p>Retrieves the environment variables that are required running a Ruby\napplication as a cron job. The variable …\n"],["run","Backup::Runner","Backup/Runner.html#method-i-run","()","<p>Operates on the options and invokes the respective functions\n"],["setup","TestFileBackup","TestFileBackup.html#method-i-setup","()","<p>Create files to be backed up\n"],["setup","TestProcess","TestProcess.html#method-i-setup","()","<p>Create files to backup\n"],["teardown","TestFileBackup","TestFileBackup.html#method-i-teardown","()","<p>Remove files previously created with setup and all created files and\ndirectories during processing backups …\n"],["teardown","TestProcess","TestProcess.html#method-i-teardown","()","<p>Remove files that have created with setup and all files and directories\ncreated during backup processing …\n"],["README","","README_rdoc.html","","<p>Backup utility for database, folders and files\n<p>Backs up a MySQL database, folders and files to a default …\n"],["Rakefile","","Rakefile.html","","<p>require ‘rake/testtask’\n<p>Rake::TestTask.new do |t|\n\n<pre>t.libs &lt;&lt; 'test'\nt.test_files = FileList['test/test_*.rb']</pre>\n"]]}}
@@ -0,0 +1,228 @@
1
+ Searcher = function(data) {
2
+ this.data = data;
3
+ this.handlers = [];
4
+ }
5
+
6
+ Searcher.prototype = new function() {
7
+ // search is performed in chunks of 1000 for non-blocking user input
8
+ var CHUNK_SIZE = 1000;
9
+ // do not try to find more than 100 results
10
+ var MAX_RESULTS = 100;
11
+ var huid = 1;
12
+ var suid = 1;
13
+ var runs = 0;
14
+
15
+ this.find = function(query) {
16
+ var queries = splitQuery(query);
17
+ var regexps = buildRegexps(queries);
18
+ var highlighters = buildHilighters(queries);
19
+ var state = { from: 0, pass: 0, limit: MAX_RESULTS, n: suid++};
20
+ var _this = this;
21
+
22
+ this.currentSuid = state.n;
23
+
24
+ if (!query) return;
25
+
26
+ var run = function() {
27
+ // stop current search thread if new search started
28
+ if (state.n != _this.currentSuid) return;
29
+
30
+ var results =
31
+ performSearch(_this.data, regexps, queries, highlighters, state);
32
+ var hasMore = (state.limit > 0 && state.pass < 4);
33
+
34
+ triggerResults.call(_this, results, !hasMore);
35
+ if (hasMore) {
36
+ setTimeout(run, 2);
37
+ }
38
+ runs++;
39
+ };
40
+ runs = 0;
41
+
42
+ // start search thread
43
+ run();
44
+ }
45
+
46
+ /* ----- Events ------ */
47
+ this.ready = function(fn) {
48
+ fn.huid = huid;
49
+ this.handlers.push(fn);
50
+ }
51
+
52
+ /* ----- Utilities ------ */
53
+ function splitQuery(query) {
54
+ return jQuery.grep(query.split(/(\s+|::?|\(\)?)/), function(string) {
55
+ return string.match(/\S/)
56
+ });
57
+ }
58
+
59
+ function buildRegexps(queries) {
60
+ return jQuery.map(queries, function(query) {
61
+ return new RegExp(query.replace(/(.)/g, '([$1])([^$1]*?)'), 'i')
62
+ });
63
+ }
64
+
65
+ function buildHilighters(queries) {
66
+ return jQuery.map(queries, function(query) {
67
+ return jQuery.map(query.split(''), function(l, i) {
68
+ return '\u0001$' + (i*2+1) + '\u0002$' + (i*2+2);
69
+ }).join('');
70
+ });
71
+ }
72
+
73
+ // function longMatchRegexp(index, longIndex, regexps) {
74
+ // for (var i = regexps.length - 1; i >= 0; i--){
75
+ // if (!index.match(regexps[i]) && !longIndex.match(regexps[i])) return false;
76
+ // };
77
+ // return true;
78
+ // }
79
+
80
+
81
+ /* ----- Mathchers ------ */
82
+
83
+ /*
84
+ * This record matches if the index starts with queries[0] and the record
85
+ * matches all of the regexps
86
+ */
87
+ function matchPassBeginning(index, longIndex, queries, regexps) {
88
+ if (index.indexOf(queries[0]) != 0) return false;
89
+ for (var i=1, l = regexps.length; i < l; i++) {
90
+ if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
91
+ return false;
92
+ };
93
+ return true;
94
+ }
95
+
96
+ /*
97
+ * This record matches if the longIndex starts with queries[0] and the
98
+ * longIndex matches all of the regexps
99
+ */
100
+ function matchPassLongIndex(index, longIndex, queries, regexps) {
101
+ if (longIndex.indexOf(queries[0]) != 0) return false;
102
+ for (var i=1, l = regexps.length; i < l; i++) {
103
+ if (!longIndex.match(regexps[i]))
104
+ return false;
105
+ };
106
+ return true;
107
+ }
108
+
109
+ /*
110
+ * This record matches if the index contains queries[0] and the record
111
+ * matches all of the regexps
112
+ */
113
+ function matchPassContains(index, longIndex, queries, regexps) {
114
+ if (index.indexOf(queries[0]) == -1) return false;
115
+ for (var i=1, l = regexps.length; i < l; i++) {
116
+ if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
117
+ return false;
118
+ };
119
+ return true;
120
+ }
121
+
122
+ /*
123
+ * This record matches if regexps[0] matches the index and the record
124
+ * matches all of the regexps
125
+ */
126
+ function matchPassRegexp(index, longIndex, queries, regexps) {
127
+ if (!index.match(regexps[0])) return false;
128
+ for (var i=1, l = regexps.length; i < l; i++) {
129
+ if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
130
+ return false;
131
+ };
132
+ return true;
133
+ }
134
+
135
+
136
+ /* ----- Highlighters ------ */
137
+ function highlightRegexp(info, queries, regexps, highlighters) {
138
+ var result = createResult(info);
139
+ for (var i=0, l = regexps.length; i < l; i++) {
140
+ result.title = result.title.replace(regexps[i], highlighters[i]);
141
+ result.namespace = result.namespace.replace(regexps[i], highlighters[i]);
142
+ };
143
+ return result;
144
+ }
145
+
146
+ function hltSubstring(string, pos, length) {
147
+ return string.substring(0, pos) + '\u0001' + string.substring(pos, pos + length) + '\u0002' + string.substring(pos + length);
148
+ }
149
+
150
+ function highlightQuery(info, queries, regexps, highlighters) {
151
+ var result = createResult(info);
152
+ var pos = 0;
153
+ var lcTitle = result.title.toLowerCase();
154
+
155
+ pos = lcTitle.indexOf(queries[0]);
156
+ if (pos != -1) {
157
+ result.title = hltSubstring(result.title, pos, queries[0].length);
158
+ }
159
+
160
+ result.namespace = result.namespace.replace(regexps[0], highlighters[0]);
161
+ for (var i=1, l = regexps.length; i < l; i++) {
162
+ result.title = result.title.replace(regexps[i], highlighters[i]);
163
+ result.namespace = result.namespace.replace(regexps[i], highlighters[i]);
164
+ };
165
+ return result;
166
+ }
167
+
168
+ function createResult(info) {
169
+ var result = {};
170
+ result.title = info[0];
171
+ result.namespace = info[1];
172
+ result.path = info[2];
173
+ result.params = info[3];
174
+ result.snippet = info[4];
175
+ return result;
176
+ }
177
+
178
+ /* ----- Searching ------ */
179
+ function performSearch(data, regexps, queries, highlighters, state) {
180
+ var searchIndex = data.searchIndex;
181
+ var longSearchIndex = data.longSearchIndex;
182
+ var info = data.info;
183
+ var result = [];
184
+ var i = state.from;
185
+ var l = searchIndex.length;
186
+ var togo = CHUNK_SIZE;
187
+ var matchFunc, hltFunc;
188
+
189
+ while (state.pass < 4 && state.limit > 0 && togo > 0) {
190
+ if (state.pass == 0) {
191
+ matchFunc = matchPassBeginning;
192
+ hltFunc = highlightQuery;
193
+ } else if (state.pass == 1) {
194
+ matchFunc = matchPassLongIndex;
195
+ hltFunc = highlightQuery;
196
+ } else if (state.pass == 2) {
197
+ matchFunc = matchPassContains;
198
+ hltFunc = highlightQuery;
199
+ } else if (state.pass == 3) {
200
+ matchFunc = matchPassRegexp;
201
+ hltFunc = highlightRegexp;
202
+ }
203
+
204
+ for (; togo > 0 && i < l && state.limit > 0; i++, togo--) {
205
+ if (info[i].n == state.n) continue;
206
+ if (matchFunc(searchIndex[i], longSearchIndex[i], queries, regexps)) {
207
+ info[i].n = state.n;
208
+ result.push(hltFunc(info[i], queries, regexps, highlighters));
209
+ state.limit--;
210
+ }
211
+ };
212
+ if (searchIndex.length <= i) {
213
+ state.pass++;
214
+ i = state.from = 0;
215
+ } else {
216
+ state.from = i;
217
+ }
218
+ }
219
+ return result;
220
+ }
221
+
222
+ function triggerResults(results, isLast) {
223
+ jQuery.each(this.handlers, function(i, fn) {
224
+ fn.call(this, results, isLast)
225
+ })
226
+ }
227
+ }
228
+
@@ -0,0 +1,543 @@
1
+ /*
2
+ * "Darkfish" Rdoc CSS
3
+ * $Id: rdoc.css 54 2009-01-27 01:09:48Z deveiant $
4
+ *
5
+ * Author: Michael Granger <ged@FaerieMUD.org>
6
+ *
7
+ */
8
+
9
+ /* Base Green is: #6C8C22 */
10
+
11
+ * { padding: 0; margin: 0; }
12
+
13
+ body {
14
+ background: #efefef;
15
+ font: 14px "Helvetica Neue", Helvetica, Tahoma, sans-serif;
16
+ margin-left: 40px;
17
+ }
18
+ body.file-popup {
19
+ font-size: 90%;
20
+ margin-left: 0;
21
+ }
22
+
23
+ h1 {
24
+ font-size: 300%;
25
+ text-shadow: rgba(135,145,135,0.65) 2px 2px 3px;
26
+ color: #6C8C22;
27
+ }
28
+ h2,h3,h4 { margin-top: 1.5em; }
29
+
30
+ :link,
31
+ :visited {
32
+ color: #6C8C22;
33
+ text-decoration: none;
34
+ }
35
+ :link:hover,
36
+ :visited:hover {
37
+ border-bottom: 1px dotted #6C8C22;
38
+ }
39
+
40
+ pre {
41
+ background: #ddd;
42
+ padding: 0.5em 0;
43
+ }
44
+
45
+ /* @group Generic Classes */
46
+
47
+ .initially-hidden {
48
+ display: none;
49
+ }
50
+
51
+ #search-field {
52
+ width: 98%;
53
+ background: #eee;
54
+ border: none;
55
+ height: 1.5em;
56
+ -webkit-border-radius: 4px;
57
+ }
58
+ #search-field:focus {
59
+ background: #f1edba;
60
+ }
61
+ #search-field:-moz-placeholder,
62
+ #search-field::-webkit-input-placeholder {
63
+ font-weight: bold;
64
+ color: #666;
65
+ }
66
+
67
+ .missing-docs {
68
+ font-size: 120%;
69
+ background: white url(images/wrench_orange.png) no-repeat 4px center;
70
+ color: #ccc;
71
+ line-height: 2em;
72
+ border: 1px solid #d00;
73
+ opacity: 1;
74
+ padding-left: 20px;
75
+ text-indent: 24px;
76
+ letter-spacing: 3px;
77
+ font-weight: bold;
78
+ -webkit-border-radius: 5px;
79
+ -moz-border-radius: 5px;
80
+ }
81
+
82
+ .target-section {
83
+ border: 2px solid #dcce90;
84
+ border-left-width: 8px;
85
+ padding: 0 1em;
86
+ background: #fff3c2;
87
+ }
88
+
89
+ /* @end */
90
+
91
+ /* @group Index Page, Standalone file pages */
92
+ .indexpage ul {
93
+ line-height: 160%;
94
+ list-style: none;
95
+ }
96
+ .indexpage ul :link,
97
+ .indexpage ul :visited {
98
+ font-size: 16px;
99
+ }
100
+
101
+ .indexpage li {
102
+ padding-left: 20px;
103
+ }
104
+
105
+ .indexpage ul > li {
106
+ background: url(images/bullet_black.png) no-repeat left 4px;
107
+ }
108
+ .indexpage li.method {
109
+ background: url(images/plugin.png) no-repeat left 4px;
110
+ }
111
+ .indexpage li.module {
112
+ background: url(images/package.png) no-repeat left 4px;
113
+ }
114
+ .indexpage li.class {
115
+ background: url(images/ruby.png) no-repeat left 4px;
116
+ }
117
+ .indexpage li.file {
118
+ background: url(images/page_white_text.png) no-repeat left 4px;
119
+ }
120
+ .indexpage li li {
121
+ background: url(images/tag_blue.png) no-repeat left 4px;
122
+ }
123
+ .indexpage li .toc-toggle {
124
+ width: 16px;
125
+ height: 16px;
126
+ background: url(images/add.png) no-repeat;
127
+ }
128
+
129
+ .indexpage li .toc-toggle.open {
130
+ background: url(images/delete.png) no-repeat;
131
+ }
132
+
133
+ /* @end */
134
+
135
+ /* @group Top-Level Structure */
136
+
137
+ #metadata {
138
+ float: left;
139
+ width: 260px;
140
+ }
141
+
142
+ #documentation {
143
+ margin: 2em 1em 5em 300px;
144
+ min-width: 340px;
145
+ }
146
+
147
+ #validator-badges {
148
+ clear: both;
149
+ margin: 1em 1em 2em;
150
+ font-size: smaller;
151
+ }
152
+
153
+ /* @end */
154
+
155
+ /* @group Metadata Section */
156
+ #metadata .section {
157
+ background-color: #dedede;
158
+ -moz-border-radius: 5px;
159
+ -webkit-border-radius: 5px;
160
+ border: 1px solid #aaa;
161
+ margin: 0 8px 8px;
162
+ font-size: 90%;
163
+ overflow: hidden;
164
+ }
165
+ #metadata h3.section-header {
166
+ margin: 0;
167
+ padding: 2px 8px;
168
+ background: #ccc;
169
+ color: #666;
170
+ -moz-border-radius-topleft: 4px;
171
+ -moz-border-radius-topright: 4px;
172
+ -webkit-border-top-left-radius: 4px;
173
+ -webkit-border-top-right-radius: 4px;
174
+ border-bottom: 1px solid #aaa;
175
+ }
176
+ #metadata #home-section h3.section-header {
177
+ border-bottom: 0;
178
+ }
179
+
180
+ #metadata ul,
181
+ #metadata dl,
182
+ #metadata p {
183
+ padding: 8px;
184
+ list-style: none;
185
+ }
186
+
187
+ #file-metadata {
188
+ margin-top: 2em;
189
+ }
190
+
191
+ #file-metadata ul {
192
+ padding-left: 28px;
193
+ list-style-image: url(images/page_green.png);
194
+ }
195
+
196
+ dl.svninfo {
197
+ color: #666;
198
+ margin: 0;
199
+ }
200
+ dl.svninfo dt {
201
+ font-weight: bold;
202
+ }
203
+
204
+ ul.link-list li {
205
+ white-space: nowrap;
206
+ }
207
+ ul.link-list .type {
208
+ font-size: 8px;
209
+ text-transform: uppercase;
210
+ color: white;
211
+ background: #969696;
212
+ padding: 2px 4px;
213
+ -webkit-border-radius: 5px;
214
+ }
215
+
216
+ /* @end */
217
+
218
+ /* @group Class Metadata Section */
219
+ #class-metadata {
220
+ margin-top: 2em;
221
+ }
222
+ /* @end */
223
+
224
+ /* @group Project Metadata Section */
225
+ #project-metadata {
226
+ margin-top: 2em;
227
+ }
228
+
229
+ #project-metadata .section {
230
+ border: 1px solid #aaa;
231
+ }
232
+ #project-metadata h3.section-header {
233
+ border-bottom: 1px solid #aaa;
234
+ position: relative;
235
+ }
236
+
237
+ #project-metadata form {
238
+ color: #777;
239
+ background: #ccc;
240
+ }
241
+
242
+ /* @end */
243
+
244
+ /* @group Documentation Section */
245
+ .description {
246
+ font-size: 100%;
247
+ color: #333;
248
+ }
249
+
250
+ .description p {
251
+ margin: 1em 0.4em;
252
+ }
253
+
254
+ .description li p {
255
+ margin: 0;
256
+ }
257
+
258
+ .description ol,
259
+ .description ul {
260
+ margin-left: 1.5em;
261
+ }
262
+ .description ol li,
263
+ .description ul li {
264
+ line-height: 1.4em;
265
+ }
266
+
267
+ .note-list {
268
+ margin: 8px 0;
269
+ }
270
+
271
+ .label-list {
272
+ margin: 8px 1.5em;
273
+ border: 1px solid #ccc;
274
+ }
275
+ .description .label-list {
276
+ font-size: 14px;
277
+ }
278
+
279
+ .note-list dt {
280
+ font-weight: bold;
281
+ }
282
+ .note-list dd {
283
+ padding: 0 12px;
284
+ }
285
+
286
+ .label-list dt {
287
+ padding: 2px 4px;
288
+ font-weight: bold;
289
+ background: #ddd;
290
+ }
291
+ .label-list dd {
292
+ padding: 2px 12px;
293
+ }
294
+ .label-list dd + dt,
295
+ .note-list dd + dt {
296
+ margin-top: 0.7em;
297
+ }
298
+
299
+ #documentation .section {
300
+ font-size: 90%;
301
+ }
302
+
303
+ #documentation h2.section-header {
304
+ margin-top: 1em;
305
+ padding: 0.25em 0.5em;
306
+ background: #ccc;
307
+ color: #333;
308
+ font-size: 175%;
309
+ border: 1px solid #bbb;
310
+ -moz-border-radius: 3px;
311
+ -webkit-border-radius: 3px;
312
+ }
313
+
314
+ .documentation-section-title {
315
+ position: relative;
316
+ }
317
+ .documentation-section-title .section-click-top {
318
+ position: absolute;
319
+ top: 6px;
320
+ right: 12px;
321
+ font-size: 10px;
322
+ color: #9b9877;
323
+ visibility: hidden;
324
+ padding-right: 0.5px;
325
+ }
326
+
327
+ .documentation-section-title:hover .section-click-top {
328
+ visibility: visible;
329
+ }
330
+
331
+ #documentation h3.section-header {
332
+ margin-top: 1em;
333
+ padding: 0.25em 0.5em;
334
+ background-color: #dedede;
335
+ color: #333;
336
+ font-size: 150%;
337
+ border: 1px solid #bbb;
338
+ -moz-border-radius: 3px;
339
+ -webkit-border-radius: 3px;
340
+ }
341
+
342
+ #constants-list > dl,
343
+ #attributes-list > dl {
344
+ margin: 1em 0 2em;
345
+ border: 0;
346
+ }
347
+ #constants-list > dl dt,
348
+ #attributes-list > dl dt {
349
+ padding-left: 0;
350
+ font-weight: bold;
351
+ font-family: Monaco, "Andale Mono";
352
+ background: inherit;
353
+ }
354
+ #constants-list > dl dt a,
355
+ #attributes-list > dl dt a {
356
+ color: inherit;
357
+ }
358
+ #constants-list > dl dd,
359
+ #attributes-list > dl dd {
360
+ margin: 0 0 1em 0;
361
+ padding: 0;
362
+ color: #666;
363
+ }
364
+
365
+ .documentation-section h2 {
366
+ position: relative;
367
+ }
368
+
369
+ .documentation-section h2 a {
370
+ position: absolute;
371
+ top: 8px;
372
+ right: 10px;
373
+ font-size: 12px;
374
+ color: #9b9877;
375
+ visibility: hidden;
376
+ }
377
+
378
+ .documentation-section h2:hover a {
379
+ visibility: visible;
380
+ }
381
+
382
+ /* @group Method Details */
383
+
384
+ #documentation .method-source-code {
385
+ display: none;
386
+ }
387
+
388
+ #documentation .method-detail {
389
+ margin: 0.5em 0;
390
+ padding: 0.5em 0;
391
+ cursor: pointer;
392
+ }
393
+ #documentation .method-detail:hover {
394
+ background-color: #f1edba;
395
+ }
396
+ #documentation .method-heading {
397
+ position: relative;
398
+ padding: 2px 4px 0 20px;
399
+ font-size: 125%;
400
+ font-weight: bold;
401
+ color: #333;
402
+ background: url(images/brick.png) no-repeat left bottom;
403
+ }
404
+ #documentation .method-heading :link,
405
+ #documentation .method-heading :visited {
406
+ color: inherit;
407
+ }
408
+ #documentation .method-click-advice {
409
+ position: absolute;
410
+ top: 2px;
411
+ right: 5px;
412
+ font-size: 10px;
413
+ color: #9b9877;
414
+ visibility: hidden;
415
+ padding-right: 20px;
416
+ line-height: 20px;
417
+ background: url(images/zoom.png) no-repeat right top;
418
+ }
419
+ #documentation .method-heading:hover .method-click-advice {
420
+ visibility: visible;
421
+ }
422
+
423
+ #documentation .method-alias .method-heading {
424
+ color: #666;
425
+ background: url(images/brick_link.png) no-repeat left bottom;
426
+ }
427
+
428
+ #documentation .method-description,
429
+ #documentation .aliases {
430
+ margin: 0 20px;
431
+ color: #666;
432
+ }
433
+
434
+ #documentation .method-description p,
435
+ #documentation .aliases p {
436
+ line-height: 1.2em;
437
+ }
438
+
439
+ #documentation .aliases {
440
+ padding-top: 4px;
441
+ font-style: italic;
442
+ cursor: default;
443
+ }
444
+ #documentation .method-description p {
445
+ margin-bottom: 0.5em;
446
+ }
447
+ #documentation .method-description ul {
448
+ margin-left: 1.5em;
449
+ }
450
+ pre {
451
+ margin: 0.5em 0;
452
+ }
453
+
454
+ #documentation .attribute-method-heading {
455
+ background: url(images/tag_green.png) no-repeat left bottom;
456
+ }
457
+ #documentation #attribute-method-details .method-detail:hover {
458
+ background-color: transparent;
459
+ cursor: default;
460
+ }
461
+ #documentation .attribute-access-type {
462
+ font-size: 60%;
463
+ text-transform: uppercase;
464
+ vertical-align: super;
465
+ padding: 0 2px;
466
+ }
467
+ /* @end */
468
+
469
+ /* @end */
470
+
471
+ /* @group Source Code */
472
+
473
+ pre {
474
+ overflow: auto;
475
+ background: #262626;
476
+ color: white;
477
+ border: 1px dashed #999;
478
+ padding: 0.5em;
479
+ }
480
+
481
+ .description pre {
482
+ margin: 0 0.4em;
483
+ }
484
+
485
+ .ruby-constant { color: #7fffd4; background: transparent; }
486
+ .ruby-keyword { color: #00ffff; background: transparent; }
487
+ .ruby-ivar { color: #eedd82; background: transparent; }
488
+ .ruby-operator { color: #00ffee; background: transparent; }
489
+ .ruby-identifier { color: #ffdead; background: transparent; }
490
+ .ruby-node { color: #ffa07a; background: transparent; }
491
+ .ruby-comment { color: #dc0000; font-weight: bold; background: transparent; }
492
+ .ruby-regexp { color: #ffa07a; background: transparent; }
493
+ .ruby-value { color: #7fffd4; background: transparent; }
494
+
495
+ /* @end */
496
+
497
+
498
+ /* @group search results */
499
+ #search-results h1 {
500
+ font-size: 1em;
501
+ font-weight: normal;
502
+ text-shadow: none;
503
+ }
504
+
505
+ #search-results .current {
506
+ background: #ccc;
507
+ border-bottom: 1px solid transparent;
508
+ }
509
+
510
+ #search-results li {
511
+ list-style: none;
512
+ border-bottom: 1px solid #aaa;
513
+ -moz-border-radius: 4px;
514
+ -webkit-border-radius: 4px;
515
+ border-radius: 4px;
516
+ margin-bottom: 0.5em;
517
+ }
518
+
519
+ #search-results li:last-child {
520
+ border-bottom: none;
521
+ margin-bottom: 0;
522
+ }
523
+
524
+ #search-results li p {
525
+ padding: 0;
526
+ margin: 0.5em;
527
+ }
528
+
529
+ #search-results .search-namespace {
530
+ font-weight: bold;
531
+ }
532
+
533
+ #search-results li em {
534
+ background: yellow;
535
+ font-style: normal;
536
+ }
537
+
538
+ #search-results pre {
539
+ margin: 0.5em;
540
+ }
541
+
542
+ /* @end */
543
+