rest_baby 0.1 → 0.2

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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +13 -0
  3. data/README.md +2 -2
  4. data/Rakefile +8 -1
  5. data/doc/MockRestService.html +351 -0
  6. data/doc/PinchRestService.html +349 -0
  7. data/doc/RestBaby/Client.html +936 -0
  8. data/doc/RestBaby.html +170 -0
  9. data/doc/_index.html +182 -0
  10. data/doc/class_list.html +74 -0
  11. data/doc/css/common.css +1 -0
  12. data/doc/css/cucumber.css +227 -0
  13. data/doc/css/full_list.css +57 -0
  14. data/doc/css/style.css +338 -0
  15. data/doc/feature_list.html +245 -0
  16. data/doc/featuredirectories_list.html +179 -0
  17. data/doc/file.README.html +134 -0
  18. data/doc/file_list.html +76 -0
  19. data/doc/frames.html +28 -0
  20. data/doc/index.html +134 -0
  21. data/doc/js/app.js +214 -0
  22. data/doc/js/cucumber.js +305 -0
  23. data/doc/js/full_list.js +178 -0
  24. data/doc/js/jquery.js +4 -0
  25. data/doc/method_list.html +169 -0
  26. data/doc/requirements/features/header_options.html +1020 -0
  27. data/doc/requirements/features/headers/header_options.html +1020 -0
  28. data/doc/requirements/features/headers.html +157 -0
  29. data/doc/requirements/features/print_response.html +969 -0
  30. data/doc/requirements/features/rest_client.html +835 -0
  31. data/doc/requirements/features.html +199 -0
  32. data/doc/requirements/step_transformers.html +1508 -0
  33. data/doc/requirements/tags/authentication.html +169 -0
  34. data/doc/requirements/tags/core.html +187 -0
  35. data/doc/requirements/tags/delete.html +169 -0
  36. data/doc/requirements/tags/extended.html +223 -0
  37. data/doc/requirements/tags/get.html +178 -0
  38. data/doc/requirements/tags/headers.html +169 -0
  39. data/doc/requirements/tags/post.html +196 -0
  40. data/doc/requirements/tags/print.html +187 -0
  41. data/doc/requirements/tags/put.html +169 -0
  42. data/doc/requirements/tags.html +408 -0
  43. data/doc/requirements.html +213 -0
  44. data/doc/step_list.html +825 -0
  45. data/doc/stepdefinition_list.html +230 -0
  46. data/doc/tag_list.html +131 -0
  47. data/doc/top-level-namespace.html +244 -0
  48. data/features/{header_options.feature → headers/header_options.feature} +0 -0
  49. data/features/step_definitions/rest_client_steps.rb +5 -4
  50. data/features/support/env.rb +1 -18
  51. data/features/support/mock_rest_service.rb +1 -1
  52. data/lib/rest_baby/version.rb +1 -1
  53. data/lib/rest_baby.rb +62 -35
  54. metadata +49 -5
  55. data/LICENSE +0 -24
data/doc/js/app.js ADDED
@@ -0,0 +1,214 @@
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
+ $('.full_list_link').click(function() {
53
+ toggleSearchFrame(this, $(this).attr('href'));
54
+ return false;
55
+ });
56
+ }
57
+
58
+ function toggleSearchFrame(id, link) {
59
+ var frame = $('#search_frame');
60
+ $('#search a').removeClass('active').addClass('inactive');
61
+ if (frame.attr('src') == link && frame.css('display') != "none") {
62
+ frame.slideUp(100);
63
+ $('#search a').removeClass('active inactive');
64
+ }
65
+ else {
66
+ $(id).addClass('active').removeClass('inactive');
67
+ frame.attr('src', link).slideDown(100);
68
+ }
69
+ }
70
+
71
+ function linkSummaries() {
72
+ $('.summary_signature').click(function() {
73
+ document.location = $(this).find('a').attr('href');
74
+ });
75
+ }
76
+
77
+ function framesInit() {
78
+ if (hasFrames) {
79
+ document.body.className = 'frames';
80
+ $('#menu .noframes a').attr('href', document.location);
81
+ window.top.document.title = $('html head title').text();
82
+ }
83
+ else {
84
+ $('#menu .noframes a').text('frames').attr('href', framesUrl);
85
+ }
86
+ }
87
+
88
+ function keyboardShortcuts() {
89
+ if (window.top.frames.main) return;
90
+ $(document).keypress(function(evt) {
91
+ if (evt.altKey || evt.ctrlKey || evt.metaKey || evt.shiftKey) return;
92
+ if (typeof evt.target !== "undefined" &&
93
+ (evt.target.nodeName == "INPUT" ||
94
+ evt.target.nodeName == "TEXTAREA")) return;
95
+ switch (evt.charCode) {
96
+ case 67: case 99: $('#class_list_link').click(); break; // 'c'
97
+ case 77: case 109: $('#method_list_link').click(); break; // 'm'
98
+ case 70: case 102: $('#file_list_link').click(); break; // 'f'
99
+ default: break;
100
+ }
101
+ });
102
+ }
103
+
104
+ function summaryToggle() {
105
+ $('.summary_toggle').click(function() {
106
+ if (localStorage) {
107
+ localStorage.summaryCollapsed = $(this).text();
108
+ }
109
+ $('.summary_toggle').each(function() {
110
+ $(this).text($(this).text() == "collapse" ? "expand" : "collapse");
111
+ var next = $(this).parent().parent().nextAll('ul.summary').first();
112
+ if (next.hasClass('compact')) {
113
+ next.toggle();
114
+ next.nextAll('ul.summary').first().toggle();
115
+ }
116
+ else if (next.hasClass('summary')) {
117
+ var list = $('<ul class="summary compact" />');
118
+ list.html(next.html());
119
+ list.find('.summary_desc, .note').remove();
120
+ list.find('a').each(function() {
121
+ $(this).html($(this).find('strong').html());
122
+ $(this).parent().html($(this)[0].outerHTML);
123
+ });
124
+ next.before(list);
125
+ next.toggle();
126
+ }
127
+ });
128
+ return false;
129
+ });
130
+ if (localStorage) {
131
+ if (localStorage.summaryCollapsed == "collapse") {
132
+ $('.summary_toggle').first().click();
133
+ }
134
+ else localStorage.summaryCollapsed = "expand";
135
+ }
136
+ }
137
+
138
+ function fixOutsideWorldLinks() {
139
+ $('a').each(function() {
140
+ if (window.location.host != this.host) this.target = '_parent';
141
+ });
142
+ }
143
+
144
+ function generateTOC() {
145
+ if ($('#filecontents').length === 0) return;
146
+ var _toc = $('<ol class="top"></ol>');
147
+ var show = false;
148
+ var toc = _toc;
149
+ var counter = 0;
150
+ var tags = ['h2', 'h3', 'h4', 'h5', 'h6'];
151
+ var i;
152
+ if ($('#filecontents h1').length > 1) tags.unshift('h1');
153
+ for (i = 0; i < tags.length; i++) { tags[i] = '#filecontents ' + tags[i]; }
154
+ var lastTag = parseInt(tags[0][1], 10);
155
+ $(tags.join(', ')).each(function() {
156
+ if ($(this).parents('.method_details .docstring').length != 0) return;
157
+ if (this.id == "filecontents") return;
158
+ show = true;
159
+ var thisTag = parseInt(this.tagName[1], 10);
160
+ if (this.id.length === 0) {
161
+ var proposedId = $(this).attr('toc-id');
162
+ if (typeof(proposedId) != "undefined") this.id = proposedId;
163
+ else {
164
+ var proposedId = $(this).text().replace(/[^a-z0-9-]/ig, '_');
165
+ if ($('#' + proposedId).length > 0) { proposedId += counter; counter++; }
166
+ this.id = proposedId;
167
+ }
168
+ }
169
+ if (thisTag > lastTag) {
170
+ for (i = 0; i < thisTag - lastTag; i++) {
171
+ var tmp = $('<ol/>'); toc.append(tmp); toc = tmp;
172
+ }
173
+ }
174
+ if (thisTag < lastTag) {
175
+ for (i = 0; i < lastTag - thisTag; i++) toc = toc.parent();
176
+ }
177
+ var title = $(this).attr('toc-title');
178
+ if (typeof(title) == "undefined") title = $(this).text();
179
+ toc.append('<li><a href="#' + this.id + '">' + title + '</a></li>');
180
+ lastTag = thisTag;
181
+ });
182
+ if (!show) return;
183
+ 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>';
184
+ $('#content').prepend(html);
185
+ $('#toc').append(_toc);
186
+ $('#toc .hide_toc').toggle(function() {
187
+ $('#toc .top').slideUp('fast');
188
+ $('#toc').toggleClass('hidden');
189
+ $('#toc .title small').toggle();
190
+ }, function() {
191
+ $('#toc .top').slideDown('fast');
192
+ $('#toc').toggleClass('hidden');
193
+ $('#toc .title small').toggle();
194
+ });
195
+ $('#toc .float_toc').toggle(function() {
196
+ $(this).text('float');
197
+ $('#toc').toggleClass('nofloat');
198
+ }, function() {
199
+ $(this).text('left');
200
+ $('#toc').toggleClass('nofloat');
201
+ });
202
+ }
203
+
204
+ $(framesInit);
205
+ $(createSourceLinks);
206
+ $(createDefineLinks);
207
+ $(createFullTreeLinks);
208
+ $(fixBoxInfoHeights);
209
+ $(searchFrameLinks);
210
+ $(linkSummaries);
211
+ $(keyboardShortcuts);
212
+ $(summaryToggle);
213
+ $(fixOutsideWorldLinks);
214
+ $(generateTOC);
@@ -0,0 +1,305 @@
1
+ function cucumberKeyboardShortcuts() {
2
+ if (window.top.frames.main) return;
3
+ $(document).keypress(function(evt) {
4
+ if (evt.altKey || evt.ctrlKey || evt.metaKey || evt.shiftKey) return;
5
+ if (typeof evt.target !== "undefined" &&
6
+ (evt.target.nodeName == "INPUT" ||
7
+ evt.target.nodeName == "TEXTAREA")) return;
8
+ switch (evt.charCode) {
9
+ case 68: case 100: $('#stepdefinition_list_link').click(); break; // 'd'
10
+ case 82: case 114: $('#feature_list_link').click(); break; // 'r'
11
+ case 83: case 115: $('#step_list_link').click(); break; // 's'
12
+ case 84: case 116: $('#tag_list_link').click(); break; // 't'
13
+ }
14
+ });
15
+ }
16
+
17
+ $(cucumberKeyboardShortcuts);
18
+
19
+ $(function() {
20
+
21
+ //
22
+ // Feature Page - Scenarios
23
+ //
24
+ $('.scenario div.title').click(function(eventObject) {
25
+ if (typeof eventObject.currentTarget !== "undefined") {
26
+ toggleScenario( $($(eventObject.currentTarget).parent()) );
27
+ }
28
+ });
29
+
30
+ //
31
+ // Developer View
32
+ // Click + Developer View = toggle the expansion of all tags, location, and comments
33
+ //
34
+ $('#view').click(function(eventObject) {
35
+
36
+ if (typeof eventObject.currentTarget !== "undefined") {
37
+ var view = eventObject.currentTarget;
38
+
39
+ if (view.innerHTML === '[More Detail]') {
40
+ $('.developer').show(500);
41
+ view.innerHTML = '[Less Detail]';
42
+ } else {
43
+ $('.developer').hide(500);
44
+ // Already hidden elements with .developer sub-elements were not getting message
45
+ $('.developer').each(function() {
46
+ $(this).css('display','none');
47
+ });
48
+ view.innerHTML = '[More Detail]';
49
+ }
50
+ }
51
+ });
52
+
53
+ //
54
+ // Expand/Collapse All
55
+ //
56
+ $('#expand').click(function(eventObject) {
57
+
58
+ if (typeof eventObject.currentTarget !== "undefined") {
59
+ if (eventObject.currentTarget.innerHTML === '[Expand All]') {
60
+ eventObject.currentTarget.innerHTML = '[Collapse All]';
61
+ $('div.scenario > div.details:hidden').each(function() {
62
+ toggleScenario( $($(this).parent()) );
63
+ });
64
+ } else {
65
+ eventObject.currentTarget.innerHTML = '[Expand All]';
66
+ $('div.scenario > div.details:visible').each(function() {
67
+ toggleScenario( $($(this).parent()) );
68
+ });
69
+ }
70
+ }
71
+ });
72
+
73
+ //
74
+ // Expand/Collapse All
75
+ //
76
+ $('#stepdefinition,#steptransform').click(function(eventObject) {
77
+
78
+ if (typeof eventObject.currentTarget !== "undefined") {
79
+ if (eventObject.currentTarget.innerHTML === '[Expand All]') {
80
+ eventObject.currentTarget.innerHTML = '[Collapse All]';
81
+ $('div.' + eventObject.currentTarget.id + ' > div.details:hidden').each(function() {
82
+ $(this).show(200);
83
+ });
84
+ } else {
85
+ eventObject.currentTarget.innerHTML = '[Expand All]';
86
+ $('div.' + eventObject.currentTarget.id + ' > div.details:visible').each(function() {
87
+ $(this).hide(200);
88
+ });
89
+ }
90
+ }
91
+ });
92
+
93
+
94
+ //
95
+ // Scenario Outlines - Toggle Examples
96
+ //
97
+ $('.outline table tr').click(function(eventObject) {
98
+
99
+ if (typeof eventObject.currentTarget !== "undefined") {
100
+ var exampleRow = $(eventObject.currentTarget);
101
+
102
+ if (eventObject.currentTarget.className.match(/example\d+-\d+/) == null) {
103
+ return false;
104
+ }
105
+
106
+ var exampleClass = eventObject.currentTarget.className.match(/example\d+-\d+/)[0];
107
+ var example = exampleRow.closest('div.details').find('.' + exampleClass);
108
+
109
+ var currentExample = null;
110
+
111
+ $('.outline table tr').each(function() {
112
+ $(this).removeClass('selected');
113
+ });
114
+
115
+ if ( example[0].style.display == 'none' ) {
116
+ currentExample = example[0];
117
+ exampleRow.addClass('selected');
118
+ } else {
119
+ currentExample = exampleRow.closest('div.details').find('.steps')[0];
120
+ }
121
+
122
+ // hide everything
123
+ exampleRow.closest('div.details').find('.steps').each(function() {
124
+ $(this).hide();
125
+ });
126
+
127
+ // show the selected
128
+ $(currentExample).show();
129
+ }
130
+ });
131
+
132
+
133
+ });
134
+
135
+
136
+ function toggleScenario(scenario) {
137
+
138
+ var state = scenario.find(".attributes input[name='collapsed']")[0];
139
+
140
+ if (state.value === 'true') {
141
+ scenario.find("div.details").each(function() {
142
+ $(this).show(500);
143
+ });
144
+ state.value = "false";
145
+ scenario.find('a.toggle').each(function() {
146
+ this.innerHTML = ' - ';
147
+ });
148
+
149
+ } else {
150
+ scenario.find("div.details").each(function() {
151
+ $(this).hide(500);
152
+ });
153
+ state.value = "true";
154
+ scenario.find('a.toggle').each(function() {
155
+ this.innerHTML = ' + ';
156
+ });
157
+ }
158
+ }
159
+
160
+
161
+ function updateTagFiltering(tagString) {
162
+ var formulaTags = determineTagsUsedInFormula(tagString);
163
+ displayExampleCommandLine(formulaTags);
164
+ displayQualifyingFeaturesAndScenarios(formulaTags);
165
+ fixSectionRowAlternations();
166
+ }
167
+
168
+ function clearTagFiltering() {
169
+ updateTagFiltering("");
170
+ }
171
+
172
+ function determineTagsUsedInFormula(tagString) {
173
+
174
+ tagString = tagString.replace(/^(\s+)|(\s+)$/,'').replace(/\s{2,}/,' ');
175
+
176
+ var tagGroup = tagString.match(/(?:~)?@\w+(,(?:~)?@\w+)*/g);
177
+
178
+ var returnTags = [];
179
+
180
+ if (tagGroup) {
181
+ tagGroup.forEach(function(tag, index, array) {
182
+ console.log("Tag Group: " + tag);
183
+ var validTags = removeInvalidTags(tag)
184
+ if (validTags != "") {
185
+ returnTags.push(validTags);
186
+ }
187
+ });
188
+ }
189
+
190
+ return returnTags;
191
+ }
192
+
193
+ function removeInvalidTags(tagGroup) {
194
+ tagGroup.split(",").forEach(function(tag, index, array) {
195
+
196
+ baseTag = tag.match(/^~(.+)/) ? tag.match(/^~(.+)/)[1] : tag;
197
+
198
+ //console.log("Validating Tag: " + tag)
199
+ if (tag_list.indexOf(baseTag) === -1) {
200
+ //console.log("Removing Tag: " + tag);
201
+ tagGroup = tagGroup.replace(new RegExp(',?' + tag + ',?'),"")
202
+ }
203
+ });
204
+
205
+ return tagGroup;
206
+ }
207
+
208
+
209
+ function displayExampleCommandLine(tags) {
210
+ $("#command_example")[0].innerHTML = "cucumber ";
211
+
212
+ if (tags.length > 0) {
213
+ $("#command_example")[0].innerHTML += "--tags " + tags.join(" --tags ");
214
+ }
215
+ }
216
+
217
+ function fixSectionRowAlternations() {
218
+ $(".feature:visible,.scenario:visible").each(function(index){
219
+ $(this).removeClass("odd even").addClass( ((index + 1) % 2 == 0 ? "even" : "odd") );
220
+ });
221
+ }
222
+
223
+ function displayQualifyingFeaturesAndScenarios(tags) {
224
+
225
+ if (tags.length > 0) {
226
+
227
+ $(".feature,.scenario").each(function(feature){
228
+ $(this).hide();
229
+ });
230
+
231
+ var tagSelectors = generateCssSelectorFromTags(tags);
232
+
233
+ tagSelectors.forEach(function(selector,selectorIndex,selectorArray) {
234
+ var tags = selector;
235
+
236
+ $(".feature." + tags).each(function(index) {
237
+ $(this).show();
238
+ });
239
+ $(".scenario." + tags).each(function(index) {
240
+ $(this).show();
241
+ $(this).parent().prev().show();
242
+ });
243
+
244
+ });
245
+
246
+ if ( $(".feature:visible,.scenario:visible").length == 0 ) {
247
+ $("#features div.undefined").show();
248
+ } else {
249
+ $("#features div.undefined").hide();
250
+ }
251
+
252
+
253
+ } else {
254
+ $(".feature:hidden,.scenario:hidden").each(function(feature){
255
+ $(this).show();
256
+ });
257
+ }
258
+
259
+ }
260
+
261
+ function generateCssSelectorFromTags(tagGroups) {
262
+
263
+ var tagSelectors = [ "" ];
264
+
265
+ tagGroups.forEach(function(tagGroup,index,array) {
266
+ var newTagSelectors = [];
267
+
268
+ tagSelectors.forEach(function(selector,selectorIndex,selectorArray) {
269
+ tagGroup.split(",").forEach(function(tag,tagIndex,tagArray) {
270
+
271
+ if ( tag.match(/^~@.+$/) ) {
272
+ tag = tag.match(/^~(@.+)$/)[1]
273
+ //console.log("selector: " + (selector + " :not(" + tag + ")").trim());
274
+ newTagSelectors.push((selector + ":not(." + tag.replace(/@/g,"\\@") +")").trim());
275
+ } else {
276
+ //console.log("selector: " + (selector + " " + tag).trim());
277
+ newTagSelectors.push((selector + "." + tag.replace(/@/g,"\\@")).trim());
278
+ }
279
+ });
280
+
281
+ });
282
+
283
+ tagSelectors = newTagSelectors;
284
+
285
+ });
286
+
287
+
288
+ return tagSelectors;
289
+ }
290
+
291
+
292
+ function createStepDefinitionLinks() {
293
+ // $('.step_instances_list').
294
+ // before("<span class='showSteps'>[<a href='#' class='toggleSteps'>View steps</a>]</span>");
295
+ $('.toggleSteps').toggle(function() {
296
+ $(this).parent().next().slideUp(100);
297
+ $(this).text("View " + $(this).attr('alt'));
298
+ },
299
+ function() {
300
+ $(this).parent().next().slideDown(100);
301
+ $(this).text("Hide " + $(this).attr('alt'));
302
+ });
303
+ }
304
+
305
+ $(createStepDefinitionLinks);
@@ -0,0 +1,178 @@
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
+ if (link.length === 0) return;
21
+ var fullName = link.attr('title').split(' ')[0];
22
+ searchCache.push({name:link.text(), fullName:fullName, node:$(this), link:link});
23
+ });
24
+
25
+ $('#search input').keyup(function(event) {
26
+ if ((event.keyCode > ignoreKeyCodeMin && event.keyCode < ignoreKeyCodeMax)
27
+ || event.keyCode == commandKey)
28
+ return;
29
+ searchString = this.value;
30
+ caseSensitiveMatch = searchString.match(/[A-Z]/) != null;
31
+ regexSearchString = RegExp.escape(searchString);
32
+ if (caseSensitiveMatch) {
33
+ regexSearchString += "|" +
34
+ $.map(searchString.split(''), function(e) { return RegExp.escape(e); }).
35
+ join('.+?');
36
+ }
37
+ if (searchString === "") {
38
+ clearTimeout(inSearch);
39
+ inSearch = null;
40
+ $('ul .search_uncollapsed').removeClass('search_uncollapsed');
41
+ $('#full_list, #content').removeClass('insearch');
42
+ $('#full_list li').removeClass('found').each(function() {
43
+
44
+ var link = $(this).find('.object_link a');
45
+ if (link.length > 0) link.text(link.text());
46
+ });
47
+ if (clicked) {
48
+ clicked.parents('ul').each(function() {
49
+ $(this).removeClass('collapsed').prev().removeClass('collapsed');
50
+ });
51
+ }
52
+ highlight();
53
+ }
54
+ else {
55
+ if (inSearch) clearTimeout(inSearch);
56
+ searchIndex = 0;
57
+ lastRowClass = '';
58
+ $('#full_list, #content').addClass('insearch');
59
+ $('#noresults').text('');
60
+ searchItem();
61
+ }
62
+ });
63
+
64
+ $('#search input').focus();
65
+ $('#full_list').after("<div id='noresults'></div>");
66
+ }
67
+
68
+ var lastRowClass = '';
69
+ function searchItem() {
70
+ for (var i = 0; i < searchCache.length / 50; i++) {
71
+ var item = searchCache[searchIndex];
72
+ var searchName = (searchString.indexOf('::') != -1 ? item.fullName : item.name);
73
+ var matchString = regexSearchString;
74
+ var matchRegexp = new RegExp(matchString, caseSensitiveMatch ? "" : "i");
75
+ if (searchName.match(matchRegexp) == null) {
76
+ item.node.removeClass('found');
77
+ }
78
+ else {
79
+ item.node.css('padding-left', '10px').addClass('found');
80
+ item.node.parents().addClass('search_uncollapsed');
81
+ item.node.removeClass(lastRowClass).addClass(lastRowClass == 'r1' ? 'r2' : 'r1');
82
+ lastRowClass = item.node.hasClass('r1') ? 'r1' : 'r2';
83
+ item.link.html(item.name.replace(matchRegexp, "<strong>$&</strong>"));
84
+ }
85
+
86
+ if (searchCache.length === searchIndex + 1) {
87
+ searchDone();
88
+ return;
89
+ }
90
+ else {
91
+ searchIndex++;
92
+ }
93
+ }
94
+ inSearch = setTimeout('searchItem()', 0);
95
+ }
96
+
97
+ function searchDone() {
98
+ highlight(true);
99
+ if ($('#full_list li:visible').size() === 0) {
100
+ $('#noresults').text('No results were found.').hide().fadeIn();
101
+ }
102
+ else {
103
+ $('#noresults').text('');
104
+ }
105
+ $('#content').removeClass('insearch');
106
+ clearTimeout(inSearch);
107
+ inSearch = null;
108
+ }
109
+
110
+ clicked = null;
111
+ function linkList() {
112
+ $('#full_list li, #full_list li a:last').click(function(evt) {
113
+ if ($(this).hasClass('toggle')) return true;
114
+ if (this.tagName.toLowerCase() == "li") {
115
+ if ($(this).find('.object_link a').length === 0) {
116
+ $(this).children('a.toggle').click();
117
+ return false;
118
+ }
119
+ var toggle = $(this).children('a.toggle');
120
+ if (toggle.size() > 0 && evt.pageX < toggle.offset().left) {
121
+ toggle.click();
122
+ return false;
123
+ }
124
+ }
125
+ if (clicked) clicked.removeClass('clicked');
126
+ var win = window.top.frames.main ? window.top.frames.main : window.parent;
127
+ if (this.tagName.toLowerCase() == "a") {
128
+ clicked = $(this).parents('li').addClass('clicked');
129
+ win.location = this.href;
130
+ }
131
+ else {
132
+ clicked = $(this).addClass('clicked');
133
+ win.location = $(this).find('a:last').attr('href');
134
+ }
135
+ return false;
136
+ });
137
+ }
138
+
139
+ function collapse() {
140
+ if (!$('#full_list').hasClass('class')) return;
141
+ $('#full_list.class a.toggle').click(function() {
142
+ $(this).parent().toggleClass('collapsed').next().toggleClass('collapsed');
143
+ highlight();
144
+ return false;
145
+ });
146
+ $('#full_list.class ul').each(function() {
147
+ $(this).addClass('collapsed').prev().addClass('collapsed');
148
+ });
149
+ $('#full_list.class').children().removeClass('collapsed');
150
+ highlight();
151
+ }
152
+
153
+ function highlight(no_padding) {
154
+ var n = 1;
155
+ $('#full_list li:visible').each(function() {
156
+ var next = n == 1 ? 2 : 1;
157
+ $(this).removeClass("r" + next).addClass("r" + n);
158
+ if (!no_padding && $('#full_list').hasClass('class')) {
159
+ $(this).css('padding-left', (10 + $(this).parents('ul').size() * 15) + 'px');
160
+ }
161
+ n = next;
162
+ });
163
+ }
164
+
165
+ function escapeShortcut() {
166
+ $(document).keydown(function(evt) {
167
+ if (evt.which == 27) {
168
+ $('#search_frame', window.top.document).slideUp(100);
169
+ $('#search a', window.top.document).removeClass('active inactive');
170
+ $(window.top).focus();
171
+ }
172
+ });
173
+ }
174
+
175
+ $(escapeShortcut);
176
+ $(fullListSearch);
177
+ $(linkList);
178
+ $(collapse);