mattock 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. data/doc/Specifications +0 -37
  2. data/lib/mattock/cascading-definition.rb +36 -0
  3. data/lib/mattock/configurable.rb +46 -5
  4. data/lib/mattock/tasklib.rb +47 -1
  5. data/lib/mattock/yard_extensions.rb +10 -0
  6. metadata +3 -213
  7. data/doc/FileSandbox.html +0 -537
  8. data/doc/FileSandbox/HaveContents.html +0 -279
  9. data/doc/FileSandbox/Sandbox.html +0 -525
  10. data/doc/FileSandbox/SandboxFile.html +0 -622
  11. data/doc/Mattock.html +0 -137
  12. data/doc/Mattock/CascadingDefinition.html +0 -459
  13. data/doc/Mattock/CommandChain.html +0 -456
  14. data/doc/Mattock/CommandLine.html +0 -1312
  15. data/doc/Mattock/CommandLineExampleGroup.html +0 -282
  16. data/doc/Mattock/CommandLineExampleGroup/Matchers.html +0 -109
  17. data/doc/Mattock/CommandRunResult.html +0 -643
  18. data/doc/Mattock/CommandTask.html +0 -464
  19. data/doc/Mattock/Configurable.html +0 -609
  20. data/doc/Mattock/Configurable/ClassMethods.html +0 -754
  21. data/doc/Mattock/Configurable/Struct.html +0 -148
  22. data/doc/Mattock/FileCreationTask.html +0 -177
  23. data/doc/Mattock/FileTask.html +0 -177
  24. data/doc/Mattock/MockCommandResult.html +0 -445
  25. data/doc/Mattock/MultiTask.html +0 -177
  26. data/doc/Mattock/PipelineChain.html +0 -221
  27. data/doc/Mattock/PrereqChain.html +0 -221
  28. data/doc/Mattock/RakeExampleGroup.html +0 -292
  29. data/doc/Mattock/RakeExampleGroup/Matchers.html +0 -109
  30. data/doc/Mattock/RakeExampleGroup/TaskManager.html +0 -131
  31. data/doc/Mattock/RemoteCommandTask.html +0 -423
  32. data/doc/Mattock/ShellEscaped.html +0 -315
  33. data/doc/Mattock/Task.html +0 -181
  34. data/doc/Mattock/TaskLib.html +0 -755
  35. data/doc/Mattock/TaskMixin.html +0 -668
  36. data/doc/Mattock/TaskMixin/ClassMethods.html +0 -166
  37. data/doc/Mattock/TemplateHost.html +0 -320
  38. data/doc/Mattock/ValiseManager.html +0 -257
  39. data/doc/Mattock/WrappingChain.html +0 -221
  40. data/doc/Mattock/YARDExtensions.html +0 -110
  41. data/doc/Mattock/YARDExtensions/DefineHandler.html +0 -253
  42. data/doc/Mattock/YARDExtensions/NilFieldsHandler.html +0 -258
  43. data/doc/Mattock/YARDExtensions/RequiredFieldsHandler.html +0 -205
  44. data/doc/Mattock/YARDExtensions/SettingHandler.html +0 -529
  45. data/doc/Mattock/YARDExtensions/SettingsHandler.html +0 -207
  46. data/doc/RSpecTest.html +0 -233
  47. data/doc/Ungemmer.html +0 -282
  48. data/doc/_index.html +0 -435
  49. data/doc/class_list.html +0 -47
  50. data/doc/coverage/assets/0.5.3/app.js +0 -88
  51. data/doc/coverage/assets/0.5.3/fancybox/blank.gif +0 -0
  52. data/doc/coverage/assets/0.5.3/fancybox/fancy_close.png +0 -0
  53. data/doc/coverage/assets/0.5.3/fancybox/fancy_loading.png +0 -0
  54. data/doc/coverage/assets/0.5.3/fancybox/fancy_nav_left.png +0 -0
  55. data/doc/coverage/assets/0.5.3/fancybox/fancy_nav_right.png +0 -0
  56. data/doc/coverage/assets/0.5.3/fancybox/fancy_shadow_e.png +0 -0
  57. data/doc/coverage/assets/0.5.3/fancybox/fancy_shadow_n.png +0 -0
  58. data/doc/coverage/assets/0.5.3/fancybox/fancy_shadow_ne.png +0 -0
  59. data/doc/coverage/assets/0.5.3/fancybox/fancy_shadow_nw.png +0 -0
  60. data/doc/coverage/assets/0.5.3/fancybox/fancy_shadow_s.png +0 -0
  61. data/doc/coverage/assets/0.5.3/fancybox/fancy_shadow_se.png +0 -0
  62. data/doc/coverage/assets/0.5.3/fancybox/fancy_shadow_sw.png +0 -0
  63. data/doc/coverage/assets/0.5.3/fancybox/fancy_shadow_w.png +0 -0
  64. data/doc/coverage/assets/0.5.3/fancybox/fancy_title_left.png +0 -0
  65. data/doc/coverage/assets/0.5.3/fancybox/fancy_title_main.png +0 -0
  66. data/doc/coverage/assets/0.5.3/fancybox/fancy_title_over.png +0 -0
  67. data/doc/coverage/assets/0.5.3/fancybox/fancy_title_right.png +0 -0
  68. data/doc/coverage/assets/0.5.3/fancybox/fancybox-x.png +0 -0
  69. data/doc/coverage/assets/0.5.3/fancybox/fancybox-y.png +0 -0
  70. data/doc/coverage/assets/0.5.3/fancybox/fancybox.png +0 -0
  71. data/doc/coverage/assets/0.5.3/fancybox/jquery.fancybox-1.3.1.css +0 -363
  72. data/doc/coverage/assets/0.5.3/fancybox/jquery.fancybox-1.3.1.pack.js +0 -44
  73. data/doc/coverage/assets/0.5.3/favicon_green.png +0 -0
  74. data/doc/coverage/assets/0.5.3/favicon_red.png +0 -0
  75. data/doc/coverage/assets/0.5.3/favicon_yellow.png +0 -0
  76. data/doc/coverage/assets/0.5.3/highlight.css +0 -129
  77. data/doc/coverage/assets/0.5.3/highlight.pack.js +0 -1
  78. data/doc/coverage/assets/0.5.3/jquery-1.6.2.min.js +0 -18
  79. data/doc/coverage/assets/0.5.3/jquery.dataTables.min.js +0 -152
  80. data/doc/coverage/assets/0.5.3/jquery.timeago.js +0 -141
  81. data/doc/coverage/assets/0.5.3/jquery.url.js +0 -174
  82. data/doc/coverage/assets/0.5.3/loading.gif +0 -0
  83. data/doc/coverage/assets/0.5.3/magnify.png +0 -0
  84. data/doc/coverage/assets/0.5.3/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  85. data/doc/coverage/assets/0.5.3/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  86. data/doc/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  87. data/doc/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  88. data/doc/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  89. data/doc/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  90. data/doc/coverage/assets/0.5.3/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  91. data/doc/coverage/assets/0.5.3/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  92. data/doc/coverage/assets/0.5.3/smoothness/images/ui-icons_222222_256x240.png +0 -0
  93. data/doc/coverage/assets/0.5.3/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  94. data/doc/coverage/assets/0.5.3/smoothness/images/ui-icons_454545_256x240.png +0 -0
  95. data/doc/coverage/assets/0.5.3/smoothness/images/ui-icons_888888_256x240.png +0 -0
  96. data/doc/coverage/assets/0.5.3/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  97. data/doc/coverage/assets/0.5.3/smoothness/jquery-ui-1.8.4.custom.css +0 -295
  98. data/doc/coverage/assets/0.5.3/stylesheet.css +0 -383
  99. data/doc/coverage/index.html +0 -5169
  100. data/doc/css/common.css +0 -1
  101. data/doc/css/full_list.css +0 -55
  102. data/doc/css/style.css +0 -322
  103. data/doc/file.README.html +0 -107
  104. data/doc/file_list.html +0 -49
  105. data/doc/frames.html +0 -13
  106. data/doc/index.html +0 -107
  107. data/doc/js/app.js +0 -205
  108. data/doc/js/full_list.js +0 -173
  109. data/doc/js/jquery.js +0 -16
  110. data/doc/method_list.html +0 -950
  111. data/doc/top-level-namespace.html +0 -107
data/doc/file_list.html DELETED
@@ -1,49 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html>
4
- <head>
5
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
6
-
7
- <link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
8
-
9
- <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
10
-
11
-
12
-
13
- <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
14
-
15
- <script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
16
-
17
-
18
- <base id="base_target" target="_parent" />
19
- </head>
20
- <body>
21
- <script type="text/javascript" charset="utf-8">
22
- if (window.top.frames.main) {
23
- document.getElementById('base_target').target = 'main';
24
- document.body.className = 'frames';
25
- }
26
- </script>
27
- <div id="content">
28
- <h1 id="full_list_header">File List</h1>
29
- <div id="nav">
30
-
31
- <a target="_self" href="class_list.html">Classes</a>
32
-
33
- <a target="_self" href="method_list.html">Methods</a>
34
-
35
- <a target="_self" href="file_list.html">Files</a>
36
-
37
- </div>
38
- <div id="search">Search: <input type="text" /></div>
39
-
40
- <ul id="full_list" class="files">
41
-
42
-
43
- <li class="r1"><a href="index.html" title="README">README</a></li>
44
-
45
-
46
- </ul>
47
- </div>
48
- </body>
49
- </html>
data/doc/frames.html DELETED
@@ -1,13 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
3
-
4
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
- <head>
6
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
7
- <title>Documentation by YARD 0.7.5</title>
8
- </head>
9
- <frameset cols="20%,*">
10
- <frame name="list" src="class_list.html" />
11
- <frame name="main" src="index.html" />
12
- </frameset>
13
- </html>
data/doc/index.html DELETED
@@ -1,107 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
- <head>
5
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6
- <title>
7
- File: README
8
-
9
- &mdash; Documentation by YARD 0.7.5
10
-
11
- </title>
12
-
13
- <link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
14
-
15
- <link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
16
-
17
- <script type="text/javascript" charset="utf-8">
18
- relpath = '';
19
- if (relpath != '') relpath += '/';
20
- </script>
21
-
22
- <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
23
-
24
- <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
25
-
26
-
27
- </head>
28
- <body>
29
- <script type="text/javascript" charset="utf-8">
30
- if (window.top.frames.main) document.body.className = 'frames';
31
- </script>
32
-
33
- <div id="header">
34
- <div id="menu">
35
-
36
- <a href="_index.html" title="Index">Index</a> &raquo;
37
- <span class="title">File: README</span>
38
-
39
-
40
- <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
41
- </div>
42
-
43
- <div id="search">
44
-
45
- <a id="class_list_link" href="#">Class List</a>
46
-
47
- <a id="method_list_link" href="#">Method List</a>
48
-
49
- <a id="file_list_link" href="#">File List</a>
50
-
51
- </div>
52
- <div class="clear"></div>
53
- </div>
54
-
55
- <iframe id="search_frame"></iframe>
56
-
57
- <div id="content"><div id='filecontents'><h2>Mattock</h2>
58
-
59
- <p>Another tool to use with Rake. Mattock is a collection of handy Rake
60
- extensions I&#39;ve been using elsewhere and generalized.</p>
61
-
62
- <h3>Configurable Tasklibs</h3>
63
-
64
- <p>Rake suggests an idiom for Tasklibs that works very well:</p>
65
-
66
- <pre class="code ruby"><code><span class='const'>Tasklib</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_t'>t</span><span class='op'>|</span>
67
- <span class='id identifier rubyid_t'>t</span><span class='period'>.</span><span class='id identifier rubyid_config'>config</span> <span class='op'>=</span> <span class='symbol'>:x</span>
68
- <span class='kw'>end</span>
69
- </code></pre>
70
-
71
- <p>And that defines some tasks. Rake&#39;s default Tasklib class doesn&#39;t do much to
72
- support that idiom though, so Mattock&#39;s first purpose is to add support for
73
- default settings, a yield into a configuration block, and the a setting
74
- resolution step.</p>
75
-
76
- <h3>A Command line scripting API</h3>
77
-
78
- <p>There&#39;s two reasons to do something more complicate that good old</p>
79
-
80
- <pre class="code ruby"><code> <span class='id identifier rubyid_sh'>sh</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>rm -rf *</span><span class='tstring_end'>'</span></span>
81
- </code></pre>
82
-
83
- <p>First is composibility. With a Mattock::CommandLine, you can pass the
84
- resulting command around and modify it&#39;s arguments or encorporate it into a
85
- larger pipeline easily.</p>
86
-
87
- <p>Second is testability. You can mock out all command line execution and provide
88
- fake responses. Additionally, command results can be recorded to make that
89
- process easier.</p>
90
-
91
- <h3>Easy templating</h3>
92
-
93
- <p>One thing that Thor has on Rake is the ease with which templates can be
94
- rendered to files. Mattock::TemplateHost makes it easy to render overridable
95
- templates based on the object it&#39;s included into.</p>
96
-
97
- <p>For more information, check out <a href="http://nyarly.github.com/mattock/">http://nyarly.github.com/mattock/</a></p>
98
- </div></div>
99
-
100
- <div id="footer">
101
- Generated on Tue Mar 6 03:09:40 2012 by
102
- <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
103
- 0.7.5 (ruby-1.9.2).
104
- </div>
105
-
106
- </body>
107
- </html>
data/doc/js/app.js DELETED
@@ -1,205 +0,0 @@
1
- function createSourceLinks() {
2
- $('.method_details_list .source_code').
3
- before("<span class='showSource'>[<a href='#' class='toggleSource'>View source</a>]</span>");
4
- $('.toggleSource').toggle(function() {
5
- $(this).parent().nextAll('.source_code').slideDown(100);
6
- $(this).text("Hide source");
7
- },
8
- function() {
9
- $(this).parent().nextAll('.source_code').slideUp(100);
10
- $(this).text("View source");
11
- });
12
- }
13
-
14
- function createDefineLinks() {
15
- var tHeight = 0;
16
- $('.defines').after(" <a href='#' class='toggleDefines'>more...</a>");
17
- $('.toggleDefines').toggle(function() {
18
- tHeight = $(this).parent().prev().height();
19
- $(this).prev().show();
20
- $(this).parent().prev().height($(this).parent().height());
21
- $(this).text("(less)");
22
- },
23
- function() {
24
- $(this).prev().hide();
25
- $(this).parent().prev().height(tHeight);
26
- $(this).text("more...");
27
- });
28
- }
29
-
30
- function createFullTreeLinks() {
31
- var tHeight = 0;
32
- $('.inheritanceTree').toggle(function() {
33
- tHeight = $(this).parent().prev().height();
34
- $(this).parent().toggleClass('showAll');
35
- $(this).text("(hide)");
36
- $(this).parent().prev().height($(this).parent().height());
37
- },
38
- function() {
39
- $(this).parent().toggleClass('showAll');
40
- $(this).parent().prev().height(tHeight);
41
- $(this).text("show all");
42
- });
43
- }
44
-
45
- function fixBoxInfoHeights() {
46
- $('dl.box dd.r1, dl.box dd.r2').each(function() {
47
- $(this).prev().height($(this).height());
48
- });
49
- }
50
-
51
- function searchFrameLinks() {
52
- $('#method_list_link').click(function() {
53
- toggleSearchFrame(this, relpath + 'method_list.html');
54
- });
55
-
56
- $('#class_list_link').click(function() {
57
- toggleSearchFrame(this, relpath + 'class_list.html');
58
- });
59
-
60
- $('#file_list_link').click(function() {
61
- toggleSearchFrame(this, relpath + 'file_list.html');
62
- });
63
- }
64
-
65
- function toggleSearchFrame(id, link) {
66
- var frame = $('#search_frame');
67
- $('#search a').removeClass('active').addClass('inactive');
68
- if (frame.attr('src') == link && frame.css('display') != "none") {
69
- frame.slideUp(100);
70
- $('#search a').removeClass('active inactive');
71
- }
72
- else {
73
- $(id).addClass('active').removeClass('inactive');
74
- frame.attr('src', link).slideDown(100);
75
- }
76
- }
77
-
78
- function linkSummaries() {
79
- $('.summary_signature').click(function() {
80
- document.location = $(this).find('a').attr('href');
81
- });
82
- }
83
-
84
- function framesInit() {
85
- if (window.top.frames.main) {
86
- document.body.className = 'frames';
87
- $('#menu .noframes a').attr('href', document.location);
88
- $('html head title', window.parent.document).text($('html head title').text());
89
- }
90
- }
91
-
92
- function keyboardShortcuts() {
93
- if (window.top.frames.main) return;
94
- $(document).keypress(function(evt) {
95
- if (evt.altKey || evt.ctrlKey || evt.metaKey || evt.shiftKey) return;
96
- if (typeof evt.target !== "undefined" &&
97
- (evt.target.nodeName == "INPUT" ||
98
- evt.target.nodeName == "TEXTAREA")) return;
99
- switch (evt.charCode) {
100
- case 67: case 99: $('#class_list_link').click(); break; // 'c'
101
- case 77: case 109: $('#method_list_link').click(); break; // 'm'
102
- case 70: case 102: $('#file_list_link').click(); break; // 'f'
103
- default: break;
104
- }
105
- });
106
- }
107
-
108
- function summaryToggle() {
109
- $('.summary_toggle').click(function() {
110
- localStorage.summaryCollapsed = $(this).text();
111
- $(this).text($(this).text() == "collapse" ? "expand" : "collapse");
112
- var next = $(this).parent().parent().nextAll('ul.summary').first();
113
- if (next.hasClass('compact')) {
114
- next.toggle();
115
- next.nextAll('ul.summary').first().toggle();
116
- }
117
- else if (next.hasClass('summary')) {
118
- var list = $('<ul class="summary compact" />');
119
- list.html(next.html());
120
- list.find('.summary_desc, .note').remove();
121
- list.find('a').each(function() {
122
- $(this).html($(this).find('strong').html());
123
- $(this).parent().html($(this)[0].outerHTML);
124
- });
125
- next.before(list);
126
- next.toggle();
127
- }
128
- return false;
129
- });
130
- if (localStorage) {
131
- if (localStorage.summaryCollapsed == "collapse") $('.summary_toggle').click();
132
- else localStorage.summaryCollapsed = "expand";
133
- }
134
- }
135
-
136
- function fixOutsideWorldLinks() {
137
- $('a').each(function() {
138
- if (window.location.host != this.host) this.target = '_parent';
139
- });
140
- }
141
-
142
- function generateTOC() {
143
- if ($('#filecontents').length === 0) return;
144
- var _toc = $('<ol class="top"></ol>');
145
- var show = false;
146
- var toc = _toc;
147
- var counter = 0;
148
- var tags = ['h2', 'h3', 'h4', 'h5', 'h6'];
149
- var i;
150
- if ($('#filecontents h1').length > 1) tags.unshift('h1');
151
- for (i = 0; i < tags.length; i++) { tags[i] = '#filecontents ' + tags[i]; }
152
- var lastTag = parseInt(tags[0][1], 10);
153
- $(tags.join(', ')).each(function() {
154
- if (this.id == "filecontents") return;
155
- show = true;
156
- var thisTag = parseInt(this.tagName[1], 10);
157
- if (this.id.length === 0) {
158
- var proposedId = $(this).text().replace(/[^a-z0-9-]/ig, '_');
159
- if ($('#' + proposedId).length > 0) { proposedId += counter; counter++; }
160
- this.id = proposedId;
161
- }
162
- if (thisTag > lastTag) {
163
- for (i = 0; i < thisTag - lastTag; i++) {
164
- var tmp = $('<ol/>'); toc.append(tmp); toc = tmp;
165
- }
166
- }
167
- if (thisTag < lastTag) {
168
- for (i = 0; i < lastTag - thisTag; i++) toc = toc.parent();
169
- }
170
- toc.append('<li><a href="#' + this.id + '">' + $(this).text() + '</a></li>');
171
- lastTag = thisTag;
172
- });
173
- if (!show) return;
174
- html = '<div id="toc"><p class="title"><a class="hide_toc" href="#"><strong>Table of Contents</strong></a> <small>(<a href="#" class="float_toc">left</a>)</small></p></div>';
175
- $('#content').prepend(html);
176
- $('#toc').append(_toc);
177
- $('#toc .hide_toc').toggle(function() {
178
- $('#toc .top').slideUp('fast');
179
- $('#toc').toggleClass('hidden');
180
- $('#toc .title small').toggle();
181
- }, function() {
182
- $('#toc .top').slideDown('fast');
183
- $('#toc').toggleClass('hidden');
184
- $('#toc .title small').toggle();
185
- });
186
- $('#toc .float_toc').toggle(function() {
187
- $(this).text('float');
188
- $('#toc').toggleClass('nofloat');
189
- }, function() {
190
- $(this).text('left');
191
- $('#toc').toggleClass('nofloat');
192
- });
193
- }
194
-
195
- $(framesInit);
196
- $(createSourceLinks);
197
- $(createDefineLinks);
198
- $(createFullTreeLinks);
199
- $(fixBoxInfoHeights);
200
- $(searchFrameLinks);
201
- $(linkSummaries);
202
- $(keyboardShortcuts);
203
- $(summaryToggle);
204
- $(fixOutsideWorldLinks);
205
- $(generateTOC);
data/doc/js/full_list.js DELETED
@@ -1,173 +0,0 @@
1
- var inSearch = null;
2
- var searchIndex = 0;
3
- var searchCache = [];
4
- var searchString = '';
5
- var regexSearchString = '';
6
- var caseSensitiveMatch = false;
7
- var ignoreKeyCodeMin = 8;
8
- var ignoreKeyCodeMax = 46;
9
- var commandKey = 91;
10
-
11
- RegExp.escape = function(text) {
12
- return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
13
- }
14
-
15
- function fullListSearch() {
16
- // generate cache
17
- searchCache = [];
18
- $('#full_list li').each(function() {
19
- var link = $(this).find('.object_link a');
20
- var fullName = link.attr('title').split(' ')[0];
21
- searchCache.push({name:link.text(), fullName:fullName, node:$(this), link:link});
22
- });
23
-
24
- $('#search input').keyup(function() {
25
- if ((event.keyCode > ignoreKeyCodeMin && event.keyCode < ignoreKeyCodeMax)
26
- || event.keyCode == commandKey)
27
- return;
28
- searchString = this.value;
29
- caseSensitiveMatch = searchString.match(/[A-Z]/) != null;
30
- regexSearchString = RegExp.escape(searchString);
31
- if (caseSensitiveMatch) {
32
- regexSearchString += "|" +
33
- $.map(searchString.split(''), function(e) { return RegExp.escape(e); }).
34
- join('.+?');
35
- }
36
- if (searchString === "") {
37
- clearTimeout(inSearch);
38
- inSearch = null;
39
- $('ul .search_uncollapsed').removeClass('search_uncollapsed');
40
- $('#full_list, #content').removeClass('insearch');
41
- $('#full_list li').removeClass('found').each(function() {
42
-
43
- var link = $(this).find('.object_link a');
44
- link.text(link.text());
45
- });
46
- if (clicked) {
47
- clicked.parents('ul').each(function() {
48
- $(this).removeClass('collapsed').prev().removeClass('collapsed');
49
- });
50
- }
51
- highlight();
52
- }
53
- else {
54
- if (inSearch) clearTimeout(inSearch);
55
- searchIndex = 0;
56
- lastRowClass = '';
57
- $('#full_list, #content').addClass('insearch');
58
- $('#noresults').text('');
59
- searchItem();
60
- }
61
- });
62
-
63
- $('#search input').focus();
64
- $('#full_list').after("<div id='noresults'></div>");
65
- }
66
-
67
- var lastRowClass = '';
68
- function searchItem() {
69
- for (var i = 0; i < searchCache.length / 50; i++) {
70
- var item = searchCache[searchIndex];
71
- var searchName = (searchString.indexOf('::') != -1 ? item.fullName : item.name);
72
- var matchString = regexSearchString;
73
- var matchRegexp = new RegExp(matchString, caseSensitiveMatch ? "" : "i");
74
- if (searchName.match(matchRegexp) == null) {
75
- item.node.removeClass('found');
76
- }
77
- else {
78
- item.node.css('padding-left', '10px').addClass('found');
79
- item.node.parents().addClass('search_uncollapsed');
80
- item.node.removeClass(lastRowClass).addClass(lastRowClass == 'r1' ? 'r2' : 'r1');
81
- lastRowClass = item.node.hasClass('r1') ? 'r1' : 'r2';
82
- item.link.html(item.name.replace(matchRegexp, "<strong>$&</strong>"));
83
- }
84
-
85
- if (searchCache.length === searchIndex + 1) {
86
- searchDone();
87
- return;
88
- }
89
- else {
90
- searchIndex++;
91
- }
92
- }
93
- inSearch = setTimeout('searchItem()', 0);
94
- }
95
-
96
- function searchDone() {
97
- highlight(true);
98
- if ($('#full_list li:visible').size() === 0) {
99
- $('#noresults').text('No results were found.').hide().fadeIn();
100
- }
101
- else {
102
- $('#noresults').text('');
103
- }
104
- $('#content').removeClass('insearch');
105
- clearTimeout(inSearch);
106
- inSearch = null;
107
- }
108
-
109
- clicked = null;
110
- function linkList() {
111
- $('#full_list li, #full_list li a:last').click(function(evt) {
112
- if ($(this).hasClass('toggle')) return true;
113
- if (this.tagName.toLowerCase() == "li") {
114
- var toggle = $(this).children('a.toggle');
115
- if (toggle.size() > 0 && evt.pageX < toggle.offset().left) {
116
- toggle.click();
117
- return false;
118
- }
119
- }
120
- if (clicked) clicked.removeClass('clicked');
121
- var win = window.top.frames.main ? window.top.frames.main : window.parent;
122
- if (this.tagName.toLowerCase() == "a") {
123
- clicked = $(this).parent('li').addClass('clicked');
124
- win.location = this.href;
125
- }
126
- else {
127
- clicked = $(this).addClass('clicked');
128
- win.location = $(this).find('a:last').attr('href');
129
- }
130
- return false;
131
- });
132
- }
133
-
134
- function collapse() {
135
- if (!$('#full_list').hasClass('class')) return;
136
- $('#full_list.class a.toggle').click(function() {
137
- $(this).parent().toggleClass('collapsed').next().toggleClass('collapsed');
138
- highlight();
139
- return false;
140
- });
141
- $('#full_list.class ul').each(function() {
142
- $(this).addClass('collapsed').prev().addClass('collapsed');
143
- });
144
- $('#full_list.class').children().removeClass('collapsed');
145
- highlight();
146
- }
147
-
148
- function highlight(no_padding) {
149
- var n = 1;
150
- $('#full_list li:visible').each(function() {
151
- var next = n == 1 ? 2 : 1;
152
- $(this).removeClass("r" + next).addClass("r" + n);
153
- if (!no_padding && $('#full_list').hasClass('class')) {
154
- $(this).css('padding-left', (10 + $(this).parents('ul').size() * 15) + 'px');
155
- }
156
- n = next;
157
- });
158
- }
159
-
160
- function escapeShortcut() {
161
- $(document).keydown(function(evt) {
162
- if (evt.which == 27) {
163
- $('#search_frame', window.top.document).slideUp(100);
164
- $('#search a', window.top.document).removeClass('active inactive');
165
- $(window.top).focus();
166
- }
167
- });
168
- }
169
-
170
- $(escapeShortcut);
171
- $(fullListSearch);
172
- $(linkList);
173
- $(collapse);