parse_fasta 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/doc/file_list.html DELETED
@@ -1,56 +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
- <title>File List</title>
19
- <base id="base_target" target="_parent" />
20
- </head>
21
- <body>
22
- <script type="text/javascript" charset="utf-8">
23
- if (window.top.frames.main) {
24
- document.getElementById('base_target').target = 'main';
25
- document.body.className = 'frames';
26
- }
27
- </script>
28
- <div id="content">
29
- <h1 id="full_list_header">File List</h1>
30
- <div id="nav">
31
-
32
- <span><a target="_self" href="class_list.html">
33
- Classes
34
- </a></span>
35
-
36
- <span><a target="_self" href="method_list.html">
37
- Methods
38
- </a></span>
39
-
40
- <span><a target="_self" href="file_list.html">
41
- Files
42
- </a></span>
43
-
44
- </div>
45
- <div id="search">Search: <input type="text" /></div>
46
-
47
- <ul id="full_list" class="file">
48
-
49
-
50
- <li class="r1"><span class="object_link"><a href="index.html" title="README">README</a></a></li>
51
-
52
-
53
- </ul>
54
- </div>
55
- </body>
56
- </html>
data/doc/frames.html DELETED
@@ -1,26 +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.8.7.4</title>
8
- </head>
9
- <script type="text/javascript" charset="utf-8">
10
- window.onload = function() {
11
- var match = unescape(window.location.hash).match(/^#!(.+)/);
12
- var name = match ? match[1] : 'index.html';
13
- name = name.replace(/^(\w+):\/\//, '').replace(/^\/\//, '');
14
- document.writeln('<frameset cols="20%,*">' +
15
- '<frame name="list" src="class_list.html" />' +
16
- '<frame name="main" src="' + escape(name) + '" />' +
17
- '</frameset>');
18
- }
19
- </script>
20
- <noscript>
21
- <frameset cols="20%,*">
22
- <frame name="list" src="class_list.html" />
23
- <frame name="main" src="index.html" />
24
- </frameset>
25
- </noscript>
26
- </html>
data/doc/index.html DELETED
@@ -1,161 +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.8.7.4
10
-
11
- </title>
12
-
13
- <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
14
-
15
- <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
16
-
17
- <script type="text/javascript" charset="utf-8">
18
- hasFrames = window.top.frames.main ? true : false;
19
- relpath = '';
20
- framesUrl = "frames.html#!file.README.html";
21
- </script>
22
-
23
-
24
- <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
25
-
26
- <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
27
-
28
-
29
- </head>
30
- <body>
31
- <div id="header">
32
- <div id="menu">
33
-
34
- <a href="_index.html">Index</a> &raquo;
35
- <span class="title">File: README</span>
36
-
37
-
38
- <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
39
- </div>
40
-
41
- <div id="search">
42
-
43
- <a class="full_list_link" id="class_list_link"
44
- href="class_list.html">
45
- Class List
46
- </a>
47
-
48
- <a class="full_list_link" id="method_list_link"
49
- href="method_list.html">
50
- Method List
51
- </a>
52
-
53
- <a class="full_list_link" id="file_list_link"
54
- href="file_list.html">
55
- File List
56
- </a>
57
-
58
- </div>
59
- <div class="clear"></div>
60
- </div>
61
-
62
- <iframe id="search_frame"></iframe>
63
-
64
- <div id="content"><div id='filecontents'>
65
- <h1 id="label-parse_fasta">parse_fasta</h1>
66
-
67
- <p>So you want to parse a fasta file…</p>
68
-
69
- <h2 id="label-Installation">Installation</h2>
70
-
71
- <p>Add this line to your application&#39;s Gemfile:</p>
72
-
73
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_gem'>gem</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>parse_fasta</span><span class='tstring_end'>&#39;</span></span></code></pre>
74
-
75
- <p>And then execute:</p>
76
-
77
- <pre class="code ruby"><code class="ruby">$ bundle</code></pre>
78
-
79
- <p>Or install it yourself as:</p>
80
-
81
- <pre class="code ruby"><code class="ruby">$ gem install parse_fasta</code></pre>
82
-
83
- <h2 id="label-Overview">Overview</h2>
84
-
85
- <p>Provides the method <code>#each_record</code> for the <code>File</code>
86
- class.</p>
87
-
88
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_each_record'>each_record</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_sequence'>sequence</span><span class='op'>|</span> <span class='id identifier rubyid_block'>block</span> <span class='rbrace'>}</span>
89
- </code></pre>
90
-
91
- <p>The whole file is not loaded into memory, so have no fear of giant fasta
92
- files!</p>
93
-
94
- <h2 id="label-Usage">Usage</h2>
95
-
96
- <h3 id="label-Version+1.0.0+%28current%29">Version 1.0.0 (current)</h3>
97
-
98
- <p>The monkey patch of the <code>File</code> class is no more! Here is the new
99
- print length example:</p>
100
-
101
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>parse_fasta</span><span class='tstring_end'>&#39;</span></span>
102
-
103
- <span class='const'>FastaFile</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='const'>ARGV</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>r</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each_record'>each_record</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_sequence'>sequence</span><span class='op'>|</span>
104
- <span class='id identifier rubyid_puts'>puts</span> <span class='lbracket'>[</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_sequence'>sequence</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\t</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
105
- <span class='kw'>end</span>
106
- </code></pre>
107
-
108
- <p>And here, a script to calculate GC content:</p>
109
-
110
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>parse_fasta</span><span class='tstring_end'>&#39;</span></span>
111
-
112
- <span class='const'>FastaFile</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='const'>ARGV</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>r</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each_record'>each_record</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_sequence'>sequence</span><span class='op'>|</span>
113
- <span class='id identifier rubyid_puts'>puts</span> <span class='lbracket'>[</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_sequence'>sequence</span><span class='period'>.</span><span class='id identifier rubyid_gc'>gc</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\t</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
114
- <span class='kw'>end</span>
115
- </code></pre>
116
-
117
- <h3 id="label-Version+0.0.5+%28old%29">Version 0.0.5 (old)</h3>
118
-
119
- <p>An example that lists the length for each sequence. (Won&#39;t work in
120
- version 1.0.0)</p>
121
-
122
- <pre class="code ruby"><code class="ruby"><span class='id identifier rubyid_require'>require</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>parse_fasta</span><span class='tstring_end'>&#39;</span></span>
123
-
124
- <span class='const'>File</span><span class='period'>.</span><span class='id identifier rubyid_open'>open</span><span class='lparen'>(</span><span class='const'>ARGV</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>r</span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each_record'>each_record</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_sequence'>sequence</span><span class='op'>|</span>
125
- <span class='id identifier rubyid_puts'>puts</span> <span class='lbracket'>[</span><span class='id identifier rubyid_header'>header</span><span class='comma'>,</span> <span class='id identifier rubyid_sequence'>sequence</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>\t</span><span class='tstring_end'>&quot;</span></span><span class='rparen'>)</span>
126
- <span class='kw'>end</span>
127
- </code></pre>
128
-
129
- <h2 id="label-Benchmark">Benchmark</h2>
130
-
131
- <p>Just for fun, I wanted to compare the execution time to that of BioRuby. I
132
- calculated sequence length for each fasta record with both the
133
- <code>each_record</code> method from this gem and using the
134
- <code>FastaFormat</code> class from BioRuby. You can see the test script in
135
- <code>benchmark.rb</code>.</p>
136
-
137
- <p>The test file contained 2,009,897 illumina reads and the file size was 1.1
138
- gigabytes. Here are the results from Ruby&#39;s <code>Benchmark</code>
139
- class:</p>
140
-
141
- <pre class="code ruby"><code class="ruby"> user system total real
142
- parse_fasta 64.530000 1.740000 66.270000 ( 67.081502)
143
- bioruby 116.250000 2.260000 118.510000 (120.223710)</code></pre>
144
-
145
- <p>I just wanted a nice, clean way to parse fasta files, but being nearly
146
- twice as fasta as BioRuby doesn&#39;t hurt either!</p>
147
-
148
- <h2 id="label-Notes">Notes</h2>
149
-
150
- <p>Currently in doesn&#39;t check whether your file is actually a fasta file
151
- or anything, so watch out.</p>
152
- </div></div>
153
-
154
- <div id="footer">
155
- Generated on Tue Jun 3 22:55:41 2014 by
156
- <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
157
- 0.8.7.4 (ruby-2.1.1).
158
- </div>
159
-
160
- </body>
161
- </html>
data/doc/js/app.js DELETED
@@ -1,219 +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
- $('.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
- try {
82
- window.top.document.title = $('html head title').text();
83
- } catch(error) {
84
- // some browsers will not allow this when serving from file://
85
- // but we don't want to stop the world.
86
- }
87
- }
88
- else {
89
- $('#menu .noframes a').text('frames').attr('href', framesUrl);
90
- }
91
- }
92
-
93
- function keyboardShortcuts() {
94
- if (window.top.frames.main) return;
95
- $(document).keypress(function(evt) {
96
- if (evt.altKey || evt.ctrlKey || evt.metaKey || evt.shiftKey) return;
97
- if (typeof evt.target !== "undefined" &&
98
- (evt.target.nodeName == "INPUT" ||
99
- evt.target.nodeName == "TEXTAREA")) return;
100
- switch (evt.charCode) {
101
- case 67: case 99: $('#class_list_link').click(); break; // 'c'
102
- case 77: case 109: $('#method_list_link').click(); break; // 'm'
103
- case 70: case 102: $('#file_list_link').click(); break; // 'f'
104
- default: break;
105
- }
106
- });
107
- }
108
-
109
- function summaryToggle() {
110
- $('.summary_toggle').click(function() {
111
- if (localStorage) {
112
- localStorage.summaryCollapsed = $(this).text();
113
- }
114
- $('.summary_toggle').each(function() {
115
- $(this).text($(this).text() == "collapse" ? "expand" : "collapse");
116
- var next = $(this).parent().parent().nextAll('ul.summary').first();
117
- if (next.hasClass('compact')) {
118
- next.toggle();
119
- next.nextAll('ul.summary').first().toggle();
120
- }
121
- else if (next.hasClass('summary')) {
122
- var list = $('<ul class="summary compact" />');
123
- list.html(next.html());
124
- list.find('.summary_desc, .note').remove();
125
- list.find('a').each(function() {
126
- $(this).html($(this).find('strong').html());
127
- $(this).parent().html($(this)[0].outerHTML);
128
- });
129
- next.before(list);
130
- next.toggle();
131
- }
132
- });
133
- return false;
134
- });
135
- if (localStorage) {
136
- if (localStorage.summaryCollapsed == "collapse") {
137
- $('.summary_toggle').first().click();
138
- }
139
- else localStorage.summaryCollapsed = "expand";
140
- }
141
- }
142
-
143
- function fixOutsideWorldLinks() {
144
- $('a').each(function() {
145
- if (window.location.host != this.host) this.target = '_parent';
146
- });
147
- }
148
-
149
- function generateTOC() {
150
- if ($('#filecontents').length === 0) return;
151
- var _toc = $('<ol class="top"></ol>');
152
- var show = false;
153
- var toc = _toc;
154
- var counter = 0;
155
- var tags = ['h2', 'h3', 'h4', 'h5', 'h6'];
156
- var i;
157
- if ($('#filecontents h1').length > 1) tags.unshift('h1');
158
- for (i = 0; i < tags.length; i++) { tags[i] = '#filecontents ' + tags[i]; }
159
- var lastTag = parseInt(tags[0][1], 10);
160
- $(tags.join(', ')).each(function() {
161
- if ($(this).parents('.method_details .docstring').length != 0) return;
162
- if (this.id == "filecontents") return;
163
- show = true;
164
- var thisTag = parseInt(this.tagName[1], 10);
165
- if (this.id.length === 0) {
166
- var proposedId = $(this).attr('toc-id');
167
- if (typeof(proposedId) != "undefined") this.id = proposedId;
168
- else {
169
- var proposedId = $(this).text().replace(/[^a-z0-9-]/ig, '_');
170
- if ($('#' + proposedId).length > 0) { proposedId += counter; counter++; }
171
- this.id = proposedId;
172
- }
173
- }
174
- if (thisTag > lastTag) {
175
- for (i = 0; i < thisTag - lastTag; i++) {
176
- var tmp = $('<ol/>'); toc.append(tmp); toc = tmp;
177
- }
178
- }
179
- if (thisTag < lastTag) {
180
- for (i = 0; i < lastTag - thisTag; i++) toc = toc.parent();
181
- }
182
- var title = $(this).attr('toc-title');
183
- if (typeof(title) == "undefined") title = $(this).text();
184
- toc.append('<li><a href="#' + this.id + '">' + title + '</a></li>');
185
- lastTag = thisTag;
186
- });
187
- if (!show) return;
188
- 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>';
189
- $('#content').prepend(html);
190
- $('#toc').append(_toc);
191
- $('#toc .hide_toc').toggle(function() {
192
- $('#toc .top').slideUp('fast');
193
- $('#toc').toggleClass('hidden');
194
- $('#toc .title small').toggle();
195
- }, function() {
196
- $('#toc .top').slideDown('fast');
197
- $('#toc').toggleClass('hidden');
198
- $('#toc .title small').toggle();
199
- });
200
- $('#toc .float_toc').toggle(function() {
201
- $(this).text('float');
202
- $('#toc').toggleClass('nofloat');
203
- }, function() {
204
- $(this).text('left');
205
- $('#toc').toggleClass('nofloat');
206
- });
207
- }
208
-
209
- $(framesInit);
210
- $(createSourceLinks);
211
- $(createDefineLinks);
212
- $(createFullTreeLinks);
213
- $(fixBoxInfoHeights);
214
- $(searchFrameLinks);
215
- $(linkSummaries);
216
- $(keyboardShortcuts);
217
- $(summaryToggle);
218
- $(fixOutsideWorldLinks);
219
- $(generateTOC);
data/doc/js/full_list.js DELETED
@@ -1,178 +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
- 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);