mattock 0.2.5 → 0.2.6

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 (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);