elabs_matchers 0.0.7 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +3 -6
  3. data/{development.txt → development.md} +2 -2
  4. data/doc/ElabsMatchers/Helpers/Fixtures.html +46 -46
  5. data/doc/ElabsMatchers/Helpers/NormalizeKeys.html +45 -45
  6. data/doc/ElabsMatchers/Helpers/ReloadRecord.html +45 -45
  7. data/doc/ElabsMatchers/Helpers/SelectYearAndMonth.html +48 -48
  8. data/doc/ElabsMatchers/Helpers.html +40 -40
  9. data/doc/ElabsMatchers/Matchers/{Allow/AllowMatcher.html → BeValidWith/BeValidWithMatcher.html} +150 -85
  10. data/doc/ElabsMatchers/Matchers/BeValidWith.html +229 -0
  11. data/doc/ElabsMatchers/Matchers/ContainHash/ContainHashMatcher.html +80 -67
  12. data/doc/ElabsMatchers/Matchers/ContainHash.html +51 -51
  13. data/doc/ElabsMatchers/Matchers/HaveAttribute/HaveAttributeMatcher.html +108 -95
  14. data/doc/ElabsMatchers/Matchers/HaveAttribute.html +49 -49
  15. data/doc/ElabsMatchers/Matchers/HaveFields/HaveFieldsMatcher.html +103 -90
  16. data/doc/ElabsMatchers/Matchers/HaveFields.html +50 -50
  17. data/doc/ElabsMatchers/Matchers/HaveFlash/HaveFlashMatcher.html +108 -95
  18. data/doc/ElabsMatchers/Matchers/HaveFlash.html +57 -57
  19. data/doc/ElabsMatchers/Matchers/HaveFormErrorsOn/HaveFormErrorsOnMatcher.html +110 -97
  20. data/doc/ElabsMatchers/Matchers/HaveFormErrorsOn.html +49 -49
  21. data/doc/ElabsMatchers/Matchers/HaveHeader/HaveHeaderMatcher.html +103 -90
  22. data/doc/ElabsMatchers/Matchers/HaveHeader.html +49 -49
  23. data/doc/ElabsMatchers/Matchers/HaveImage/HaveImageMatcher.html +104 -91
  24. data/doc/ElabsMatchers/Matchers/HaveImage.html +49 -49
  25. data/doc/ElabsMatchers/Matchers/OnlyInclude/OnlyIncludeMatcher.html +79 -66
  26. data/doc/ElabsMatchers/Matchers/OnlyInclude.html +50 -50
  27. data/doc/ElabsMatchers/Matchers/Persist/PersistMatcher.html +134 -69
  28. data/doc/ElabsMatchers/Matchers/Persist.html +49 -49
  29. data/doc/ElabsMatchers/Matchers.html +42 -42
  30. data/doc/ElabsMatchers.html +143 -144
  31. data/doc/_index.html +35 -52
  32. data/doc/class_list.html +25 -27
  33. data/doc/css/full_list.css +32 -31
  34. data/doc/css/style.css +262 -91
  35. data/doc/file.README.html +91 -87
  36. data/doc/file_list.html +27 -26
  37. data/doc/frames.html +10 -21
  38. data/doc/index.html +91 -87
  39. data/doc/js/app.js +106 -72
  40. data/doc/js/full_list.js +170 -127
  41. data/doc/method_list.html +456 -505
  42. data/doc/top-level-namespace.html +36 -38
  43. data/elabs_matchers.gemspec +2 -2
  44. data/history.txt +11 -0
  45. data/lib/elabs_matchers/helpers/normalize_keys.rb +1 -1
  46. data/lib/elabs_matchers/helpers/select_year_and_month.rb +1 -0
  47. data/lib/elabs_matchers/matchers/be_valid_with.rb +5 -10
  48. data/lib/elabs_matchers/matchers/contain_hash.rb +4 -2
  49. data/lib/elabs_matchers/matchers/have_attribute.rb +5 -2
  50. data/lib/elabs_matchers/matchers/have_fields.rb +5 -2
  51. data/lib/elabs_matchers/matchers/have_flash.rb +5 -2
  52. data/lib/elabs_matchers/matchers/have_form_errors_on.rb +5 -2
  53. data/lib/elabs_matchers/matchers/have_header.rb +5 -2
  54. data/lib/elabs_matchers/matchers/have_image.rb +5 -2
  55. data/lib/elabs_matchers/matchers/only_include.rb +14 -2
  56. data/lib/elabs_matchers/matchers/persist.rb +8 -2
  57. data/lib/elabs_matchers/version.rb +1 -1
  58. data/lib/elabs_matchers.rb +0 -1
  59. data/spec/elabs_matchers/matchers/only_include_spec.rb +13 -0
  60. data/spec/elabs_matchers/matchers/persist_spec.rb +1 -1
  61. data/spec/spec_helper.rb +7 -0
  62. metadata +8 -29
  63. data/doc/Cucumber.html +0 -116
  64. data/doc/ElabsMatchers/Cucumber/Common.html +0 -145
  65. data/doc/ElabsMatchers/Cucumber.html +0 -108
  66. data/doc/ElabsMatchers/Helpers/Capybara.html +0 -241
  67. data/doc/ElabsMatchers/Helpers/Common.html +0 -213
  68. data/doc/ElabsMatchers/Helpers/Orm.html +0 -289
  69. data/doc/ElabsMatchers/Helpers/Session.html +0 -497
  70. data/doc/ElabsMatchers/Matchers/Allow.html +0 -229
  71. data/doc/ElabsMatchers/Matchers/Capybara/Common.html +0 -1159
  72. data/doc/ElabsMatchers/Matchers/Capybara.html +0 -108
  73. data/doc/ElabsMatchers/Matchers/HaveTableRow/HaveTableRowMatcher.html +0 -654
  74. data/doc/ElabsMatchers/Matchers/HaveTableRow.html +0 -236
  75. data/doc/ElabsMatchers/Matchers/Rspec/Allow.html +0 -98
  76. data/doc/ElabsMatchers/Matchers/Rspec/Common.html +0 -332
  77. data/doc/ElabsMatchers/Matchers/Rspec/Orm.html +0 -231
  78. data/doc/ElabsMatchers/Matchers/Rspec.html +0 -110
  79. data/doc/ElabsMatchers/Orm/Post.html +0 -1041
  80. data/doc/ElabsMatchers/Orm.html +0 -108
  81. data/lib/elabs_matchers/matchers/have_table_row.rb +0 -124
  82. data/spec/elabs_matchers/matchers/have_table_row_spec.rb +0 -119
data/doc/js/app.js CHANGED
@@ -1,3 +1,9 @@
1
+ (function() {
2
+
3
+ var localStorage = {}, sessionStorage = {};
4
+ try { localStorage = window.localStorage; } catch (e) { }
5
+ try { sessionStorage = window.sessionStorage; } catch (e) { }
6
+
1
7
  function createSourceLinks() {
2
8
  $('.method_details_list .source_code').
3
9
  before("<span class='showSource'>[<a href='#' class='toggleSource'>View source</a>]</span>");
@@ -16,7 +22,7 @@ function createDefineLinks() {
16
22
  $('.defines').after(" <a href='#' class='toggleDefines'>more...</a>");
17
23
  $('.toggleDefines').toggle(function() {
18
24
  tHeight = $(this).parent().prev().height();
19
- $(this).prev().show();
25
+ $(this).prev().css('display', 'inline');
20
26
  $(this).parent().prev().height($(this).parent().height());
21
27
  $(this).text("(less)");
22
28
  },
@@ -42,29 +48,39 @@ function createFullTreeLinks() {
42
48
  });
43
49
  }
44
50
 
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() {
51
+ function searchFrameButtons() {
52
52
  $('.full_list_link').click(function() {
53
53
  toggleSearchFrame(this, $(this).attr('href'));
54
54
  return false;
55
55
  });
56
+ window.addEventListener('message', function(e) {
57
+ if (e.data === 'navEscape') {
58
+ $('#nav').slideUp(100);
59
+ $('#search a').removeClass('active inactive');
60
+ $(window).focus();
61
+ }
62
+ });
63
+
64
+ $(window).resize(function() {
65
+ if ($('#search:visible').length === 0) {
66
+ $('#nav').removeAttr('style');
67
+ $('#search a').removeClass('active inactive');
68
+ $(window).focus();
69
+ }
70
+ });
56
71
  }
57
72
 
58
73
  function toggleSearchFrame(id, link) {
59
- var frame = $('#search_frame');
74
+ var frame = $('#nav');
60
75
  $('#search a').removeClass('active').addClass('inactive');
61
- if (frame.attr('src') == link && frame.css('display') != "none") {
76
+ if (frame.attr('src') === link && frame.css('display') !== "none") {
62
77
  frame.slideUp(100);
63
78
  $('#search a').removeClass('active inactive');
64
79
  }
65
80
  else {
66
81
  $(id).addClass('active').removeClass('inactive');
67
- frame.attr('src', link).slideDown(100);
82
+ if (frame.attr('src') !== link) frame.attr('src', link);
83
+ frame.slideDown(100);
68
84
  }
69
85
  }
70
86
 
@@ -74,38 +90,10 @@ function linkSummaries() {
74
90
  });
75
91
  }
76
92
 
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
93
  function summaryToggle() {
105
- $('.summary_toggle').click(function() {
106
- if (localStorage) {
107
- localStorage.summaryCollapsed = $(this).text();
108
- }
94
+ $('.summary_toggle').click(function(e) {
95
+ e.preventDefault();
96
+ localStorage.summaryCollapsed = $(this).text();
109
97
  $('.summary_toggle').each(function() {
110
98
  $(this).text($(this).text() == "collapse" ? "expand" : "collapse");
111
99
  var next = $(this).parent().parent().nextAll('ul.summary').first();
@@ -127,18 +115,9 @@ function summaryToggle() {
127
115
  });
128
116
  return false;
129
117
  });
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
- });
118
+ if (localStorage.summaryCollapsed == "collapse") {
119
+ $('.summary_toggle').first().click();
120
+ } else { localStorage.summaryCollapsed = "expand"; }
142
121
  }
143
122
 
144
123
  function generateTOC() {
@@ -180,7 +159,7 @@ function generateTOC() {
180
159
  lastTag = thisTag;
181
160
  });
182
161
  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>';
162
+ html = '<div id="toc"><p class="title hide_toc"><a href="#"><strong>Table of Contents</strong></a></p></div>';
184
163
  $('#content').prepend(html);
185
164
  $('#toc').append(_toc);
186
165
  $('#toc .hide_toc').toggle(function() {
@@ -192,23 +171,78 @@ function generateTOC() {
192
171
  $('#toc').toggleClass('hidden');
193
172
  $('#toc .title small').toggle();
194
173
  });
195
- $('#toc .float_toc').toggle(function() {
196
- $(this).text('float');
197
- $('#toc').toggleClass('nofloat');
198
- }, function() {
199
- $(this).text('left');
200
- $('#toc').toggleClass('nofloat');
174
+ }
175
+
176
+ function navResizeFn(e) {
177
+ if (e.which !== 1) {
178
+ navResizeFnStop();
179
+ return;
180
+ }
181
+
182
+ sessionStorage.navWidth = e.pageX.toString();
183
+ $('.nav_wrap').css('width', e.pageX);
184
+ $('.nav_wrap').css('-ms-flex', 'inherit');
185
+ }
186
+
187
+ function navResizeFnStop() {
188
+ $(window).unbind('mousemove', navResizeFn);
189
+ window.removeEventListener('message', navMessageFn, false);
190
+ }
191
+
192
+ function navMessageFn(e) {
193
+ if (e.data.action === 'mousemove') navResizeFn(e.data.event);
194
+ if (e.data.action === 'mouseup') navResizeFnStop();
195
+ }
196
+
197
+ function navResizer() {
198
+ $('#resizer').mousedown(function(e) {
199
+ e.preventDefault();
200
+ $(window).mousemove(navResizeFn);
201
+ window.addEventListener('message', navMessageFn, false);
201
202
  });
203
+ $(window).mouseup(navResizeFnStop);
204
+
205
+ if (sessionStorage.navWidth) {
206
+ navResizeFn({which: 1, pageX: parseInt(sessionStorage.navWidth, 10)});
207
+ }
208
+ }
209
+
210
+ function navExpander() {
211
+ var done = false, timer = setTimeout(postMessage, 500);
212
+ function postMessage() {
213
+ if (done) return;
214
+ clearTimeout(timer);
215
+ var opts = { action: 'expand', path: pathId };
216
+ document.getElementById('nav').contentWindow.postMessage(opts, '*');
217
+ done = true;
218
+ }
219
+
220
+ window.addEventListener('message', function(event) {
221
+ if (event.data === 'navReady') postMessage();
222
+ return false;
223
+ }, false);
224
+ }
225
+
226
+ function mainFocus() {
227
+ var hash = window.location.hash;
228
+ if (hash !== '' && $(hash)[0]) {
229
+ $(hash)[0].scrollIntoView();
230
+ }
231
+
232
+ setTimeout(function() { $('#main').focus(); }, 10);
202
233
  }
203
234
 
204
- $(framesInit);
205
- $(createSourceLinks);
206
- $(createDefineLinks);
207
- $(createFullTreeLinks);
208
- $(fixBoxInfoHeights);
209
- $(searchFrameLinks);
210
- $(linkSummaries);
211
- $(keyboardShortcuts);
212
- $(summaryToggle);
213
- $(fixOutsideWorldLinks);
214
- $(generateTOC);
235
+ $(document).ready(function() {
236
+ navResizer();
237
+ navExpander();
238
+ createSourceLinks();
239
+ createDefineLinks();
240
+ createFullTreeLinks();
241
+ searchFrameButtons();
242
+ linkSummaries();
243
+ summaryToggle();
244
+ generateTOC();
245
+ mainFocus();
246
+ });
247
+
248
+ })();
data/doc/js/full_list.js CHANGED
@@ -1,8 +1,8 @@
1
- var inSearch = null;
2
- var searchIndex = 0;
1
+ (function() {
2
+
3
+ var $clicked = $(null);
4
+ var searchTimeout = null;
3
5
  var searchCache = [];
4
- var searchString = '';
5
- var regexSearchString = '';
6
6
  var caseSensitiveMatch = false;
7
7
  var ignoreKeyCodeMin = 8;
8
8
  var ignoreKeyCodeMax = 46;
@@ -12,162 +12,205 @@ RegExp.escape = function(text) {
12
12
  return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
13
13
  }
14
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});
15
+ function escapeShortcut() {
16
+ $(document).keydown(function(evt) {
17
+ if (evt.which == 27) {
18
+ window.parent.postMessage('navEscape', '*');
19
+ }
22
20
  });
21
+ }
23
22
 
24
- $('#search input').keyup(function(event) {
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());
23
+ function navResizer() {
24
+ $(window).mousemove(function(e) {
25
+ window.parent.postMessage({
26
+ action: 'mousemove', event: {pageX: e.pageX, which: e.which}
27
+ }, '*');
28
+ }).mouseup(function(e) {
29
+ window.parent.postMessage({action: 'mouseup'}, '*');
30
+ });
31
+ window.parent.postMessage("navReady", "*");
32
+ }
33
+
34
+ function clearSearchTimeout() {
35
+ clearTimeout(searchTimeout);
36
+ searchTimeout = null;
37
+ }
38
+
39
+ function enableLinks() {
40
+ // load the target page in the parent window
41
+ $('#full_list li').on('click', function(evt) {
42
+ $('#full_list li').removeClass('clicked');
43
+ $clicked = $(this);
44
+ $clicked.addClass('clicked');
45
+ evt.stopPropagation();
46
+
47
+ if (evt.target.tagName === 'A') return true;
48
+
49
+ var elem = $clicked.find('> .item .object_link a')[0];
50
+ var e = evt.originalEvent;
51
+ var newEvent = new MouseEvent(evt.originalEvent.type);
52
+ newEvent.initMouseEvent(e.type, e.canBubble, e.cancelable, e.view, e.detail, e.screenX, e.screenY, e.clientX, e.clientY, e.ctrlKey, e.altKey, e.shiftKey, e.metaKey, e.button, e.relatedTarget);
53
+ elem.dispatchEvent(newEvent);
54
+ evt.preventDefault();
55
+ return false;
56
+ });
57
+ }
58
+
59
+ function enableToggles() {
60
+ // show/hide nested classes on toggle click
61
+ $('#full_list a.toggle').on('click', function(evt) {
62
+ evt.stopPropagation();
63
+ evt.preventDefault();
64
+ $(this).parent().parent().toggleClass('collapsed');
65
+ highlight();
66
+ });
67
+ }
68
+
69
+ function populateSearchCache() {
70
+ $('#full_list li .item').each(function() {
71
+ var $node = $(this);
72
+ var $link = $node.find('.object_link a');
73
+ if ($link.length > 0) {
74
+ searchCache.push({
75
+ node: $node,
76
+ link: $link,
77
+ name: $link.text(),
78
+ fullName: $link.attr('title').split(' ')[0]
45
79
  });
46
- if (clicked) {
47
- clicked.parents('ul').each(function() {
48
- $(this).removeClass('collapsed').prev().removeClass('collapsed');
49
- });
50
- }
51
- highlight();
52
80
  }
53
- else {
54
- if (inSearch) clearTimeout(inSearch);
55
- searchIndex = 0;
56
- lastRowClass = '';
57
- $('#full_list, #content').addClass('insearch');
58
- $('#noresults').text('');
59
- searchItem();
81
+ });
82
+ }
83
+
84
+ function enableSearch() {
85
+ $('#search input').keyup(function(event) {
86
+ if (ignoredKeyPress(event)) return;
87
+ if (this.value === "") {
88
+ clearSearch();
89
+ } else {
90
+ performSearch(this.value);
60
91
  }
61
92
  });
62
93
 
63
- $('#search input').focus();
64
- $('#full_list').after("<div id='noresults'></div>");
94
+ $('#full_list').after("<div id='noresults' style='display:none'></div>");
95
+ }
96
+
97
+ function ignoredKeyPress(event) {
98
+ if (
99
+ (event.keyCode > ignoreKeyCodeMin && event.keyCode < ignoreKeyCodeMax) ||
100
+ (event.keyCode == commandKey)
101
+ ) {
102
+ return true;
103
+ } else {
104
+ return false;
105
+ }
106
+ }
107
+
108
+ function clearSearch() {
109
+ clearSearchTimeout();
110
+ $('#full_list .found').removeClass('found').each(function() {
111
+ var $link = $(this).find('.object_link a');
112
+ $link.text($link.text());
113
+ });
114
+ $('#full_list, #content').removeClass('insearch');
115
+ $clicked.parents().removeClass('collapsed');
116
+ highlight();
117
+ }
118
+
119
+ function performSearch(searchString) {
120
+ clearSearchTimeout();
121
+ $('#full_list, #content').addClass('insearch');
122
+ $('#noresults').text('').hide();
123
+ partialSearch(searchString, 0);
65
124
  }
66
125
 
67
- var lastRowClass = '';
68
- function searchItem() {
69
- for (var i = 0; i < searchCache.length / 50; i++) {
70
- var item = searchCache[searchIndex];
126
+ function partialSearch(searchString, offset) {
127
+ var lastRowClass = '';
128
+ var i = null;
129
+ for (i = offset; i < Math.min(offset + 50, searchCache.length); i++) {
130
+ var item = searchCache[i];
71
131
  var searchName = (searchString.indexOf('::') != -1 ? item.fullName : item.name);
72
- var matchString = regexSearchString;
132
+ var matchString = buildMatchString(searchString);
73
133
  var matchRegexp = new RegExp(matchString, caseSensitiveMatch ? "" : "i");
74
134
  if (searchName.match(matchRegexp) == null) {
75
135
  item.node.removeClass('found');
136
+ item.link.text(item.link.text());
76
137
  }
77
138
  else {
78
- item.node.css('padding-left', '10px').addClass('found');
79
- item.node.parents().addClass('search_uncollapsed');
139
+ item.node.addClass('found');
80
140
  item.node.removeClass(lastRowClass).addClass(lastRowClass == 'r1' ? 'r2' : 'r1');
81
141
  lastRowClass = item.node.hasClass('r1') ? 'r1' : 'r2';
82
142
  item.link.html(item.name.replace(matchRegexp, "<strong>$&</strong>"));
83
143
  }
84
-
85
- if (searchCache.length === searchIndex + 1) {
86
- searchDone();
87
- return;
88
- }
89
- else {
90
- searchIndex++;
91
- }
92
144
  }
93
- inSearch = setTimeout('searchItem()', 0);
145
+ if(i == searchCache.length) {
146
+ searchDone();
147
+ } else {
148
+ searchTimeout = setTimeout(function() {
149
+ partialSearch(searchString, i);
150
+ }, 0);
151
+ }
94
152
  }
95
153
 
96
154
  function searchDone() {
97
- highlight(true);
155
+ searchTimeout = null;
156
+ highlight();
98
157
  if ($('#full_list li:visible').size() === 0) {
99
158
  $('#noresults').text('No results were found.').hide().fadeIn();
100
- }
101
- else {
102
- $('#noresults').text('');
159
+ } else {
160
+ $('#noresults').text('').hide();
103
161
  }
104
162
  $('#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
163
  }
133
164
 
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();
165
+ function buildMatchString(searchString, event) {
166
+ caseSensitiveMatch = searchString.match(/[A-Z]/) != null;
167
+ var regexSearchString = RegExp.escape(searchString);
168
+ if (caseSensitiveMatch) {
169
+ regexSearchString += "|" +
170
+ $.map(searchString.split(''), function(e) { return RegExp.escape(e); }).
171
+ join('.+?');
172
+ }
173
+ return regexSearchString;
146
174
  }
147
175
 
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;
176
+ function highlight() {
177
+ $('#full_list li:visible').each(function(n) {
178
+ $(this).removeClass('even odd').addClass(n % 2 == 0 ? 'odd' : 'even');
157
179
  });
158
180
  }
159
181
 
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
- });
182
+ /**
183
+ * Expands the tree to the target element and its immediate
184
+ * children.
185
+ */
186
+ function expandTo(path) {
187
+ var $target = $(document.getElementById('object_' + path));
188
+ $target.addClass('clicked');
189
+ $target.removeClass('collapsed');
190
+ $target.parentsUntil('#full_list', 'li').removeClass('collapsed');
191
+ if($target[0]) {
192
+ window.scrollTo(window.scrollX, $target.offset().top - 250);
193
+ highlight();
194
+ }
195
+ }
196
+
197
+ function windowEvents(event) {
198
+ var msg = event.data;
199
+ if (msg.action === "expand") {
200
+ expandTo(msg.path);
201
+ }
202
+ return false;
168
203
  }
169
204
 
170
- $(escapeShortcut);
171
- $(fullListSearch);
172
- $(linkList);
173
- $(collapse);
205
+ window.addEventListener("message", windowEvents, false);
206
+
207
+ $(document).ready(function() {
208
+ escapeShortcut();
209
+ navResizer();
210
+ enableLinks();
211
+ enableToggles();
212
+ populateSearchCache();
213
+ enableSearch();
214
+ });
215
+
216
+ })();