rdoc 6.1.0 → 6.3.0
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.
Potentially problematic release.
This version of rdoc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +9 -0
- data/README.rdoc +0 -1
- data/Rakefile +12 -4
- data/lib/rdoc.rb +21 -0
- data/lib/rdoc/any_method.rb +52 -7
- data/lib/rdoc/class_module.rb +1 -1
- data/lib/rdoc/comment.rb +12 -1
- data/lib/rdoc/context.rb +10 -2
- data/lib/rdoc/context/section.rb +0 -13
- data/lib/rdoc/cross_reference.rb +4 -4
- data/lib/rdoc/erb_partial.rb +1 -1
- data/lib/rdoc/erbio.rb +2 -2
- data/lib/rdoc/generator/darkfish.rb +9 -9
- data/lib/rdoc/generator/pot.rb +3 -3
- data/lib/rdoc/generator/template/darkfish/_head.rhtml +9 -7
- data/lib/rdoc/generator/template/darkfish/_sidebar_VCS_info.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_sidebar_classes.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_sidebar_extends.rhtml +7 -7
- data/lib/rdoc/generator/template/darkfish/_sidebar_in_files.rhtml +2 -2
- data/lib/rdoc/generator/template/darkfish/_sidebar_includes.rhtml +7 -7
- data/lib/rdoc/generator/template/darkfish/_sidebar_installed.rhtml +6 -6
- data/lib/rdoc/generator/template/darkfish/_sidebar_methods.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_pages.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_parent.rhtml +5 -5
- data/lib/rdoc/generator/template/darkfish/_sidebar_sections.rhtml +4 -4
- data/lib/rdoc/generator/template/darkfish/_sidebar_table_of_contents.rhtml +4 -4
- data/lib/rdoc/generator/template/darkfish/class.rhtml +44 -44
- data/lib/rdoc/generator/template/darkfish/css/rdoc.css +35 -6
- data/lib/rdoc/generator/template/darkfish/index.rhtml +3 -4
- data/lib/rdoc/generator/template/darkfish/js/darkfish.js +22 -99
- data/lib/rdoc/generator/template/darkfish/js/search.js +32 -31
- data/lib/rdoc/generator/template/darkfish/servlet_root.rhtml +15 -16
- data/lib/rdoc/generator/template/darkfish/table_of_contents.rhtml +16 -16
- data/lib/rdoc/generator/template/json_index/js/navigation.js +4 -40
- data/lib/rdoc/generator/template/json_index/js/searcher.js +6 -6
- data/lib/rdoc/i18n.rb +1 -1
- data/lib/rdoc/markdown.kpeg +1 -1
- data/lib/rdoc/markdown.rb +16287 -0
- data/lib/rdoc/markdown/literals.rb +417 -0
- data/lib/rdoc/markup.rb +0 -2
- data/lib/rdoc/markup/formatter.rb +1 -1
- data/lib/rdoc/markup/parser.rb +58 -42
- data/lib/rdoc/markup/pre_process.rb +1 -1
- data/lib/rdoc/markup/regexp_handling.rb +41 -0
- data/lib/rdoc/markup/to_html.rb +19 -6
- data/lib/rdoc/markup/to_html_crossref.rb +18 -6
- data/lib/rdoc/options.rb +23 -5
- data/lib/rdoc/parser.rb +7 -7
- data/lib/rdoc/parser/c.rb +139 -183
- data/lib/rdoc/parser/ripper_state_lex.rb +2 -1
- data/lib/rdoc/parser/ruby.rb +18 -8
- data/lib/rdoc/rd/block_parser.rb +1056 -0
- data/lib/rdoc/rd/inline_parser.rb +1208 -0
- data/lib/rdoc/rdoc.rb +26 -20
- data/lib/rdoc/ri/driver.rb +9 -5
- data/lib/rdoc/ri/paths.rb +3 -17
- data/lib/rdoc/ri/task.rb +1 -1
- data/lib/rdoc/rubygems_hook.rb +2 -2
- data/lib/rdoc/servlet.rb +16 -8
- data/lib/rdoc/store.rb +6 -14
- data/lib/rdoc/task.rb +1 -1
- data/lib/rdoc/text.rb +8 -2
- data/lib/rdoc/token_stream.rb +8 -3
- data/lib/rdoc/tom_doc.rb +6 -7
- data/lib/rdoc/version.rb +1 -1
- data/man/ri.1 +247 -0
- data/rdoc.gemspec +194 -10
- metadata +10 -86
- data/.document +0 -5
- data/.gitignore +0 -14
- data/.travis.yml +0 -21
- data/appveyor.yml +0 -36
- data/lib/rdoc/generator/template/darkfish/js/jquery.js +0 -4
- data/lib/rdoc/markup/formatter_test_case.rb +0 -764
- data/lib/rdoc/markup/text_formatter_test_case.rb +0 -115
@@ -13,11 +13,10 @@
|
|
13
13
|
</nav>
|
14
14
|
|
15
15
|
<main role="main">
|
16
|
-
|
16
|
+
<%- if @options.main_page and
|
17
17
|
main_page = @files.find { |f| f.full_name == @options.main_page } then %>
|
18
18
|
<%= main_page.description %>
|
19
|
-
|
19
|
+
<%- else -%>
|
20
20
|
<p>This is the API documentation for <%= @title %>.
|
21
|
-
|
21
|
+
<%- end -%>
|
22
22
|
</main>
|
23
|
-
|
@@ -8,6 +8,7 @@
|
|
8
8
|
*/
|
9
9
|
|
10
10
|
/* Provide console simulation for firebug-less environments */
|
11
|
+
/*
|
11
12
|
if (!("console" in window) || !("firebug" in console)) {
|
12
13
|
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
|
13
14
|
"group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
|
@@ -16,41 +17,35 @@ if (!("console" in window) || !("firebug" in console)) {
|
|
16
17
|
for (var i = 0; i < names.length; ++i)
|
17
18
|
window.console[names[i]] = function() {};
|
18
19
|
};
|
19
|
-
|
20
|
-
|
21
|
-
/**
|
22
|
-
* Unwrap the first element that matches the given @expr@ from the targets and return them.
|
23
|
-
*/
|
24
|
-
$.fn.unwrap = function( expr ) {
|
25
|
-
return this.each( function() {
|
26
|
-
$(this).parents( expr ).eq( 0 ).after( this ).remove();
|
27
|
-
});
|
28
|
-
};
|
20
|
+
*/
|
29
21
|
|
30
22
|
|
31
23
|
function showSource( e ) {
|
32
24
|
var target = e.target;
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
25
|
+
while (!target.classList.contains('method-detail')) {
|
26
|
+
target = target.parentNode;
|
27
|
+
}
|
28
|
+
if (typeof target !== "undefined" && target !== null) {
|
29
|
+
target = target.querySelector('.method-source-code');
|
30
|
+
}
|
31
|
+
if (typeof target !== "undefined" && target !== null) {
|
32
|
+
target.classList.toggle('active-menu')
|
33
|
+
}
|
41
34
|
};
|
42
35
|
|
43
36
|
function hookSourceViews() {
|
44
|
-
|
37
|
+
document.querySelectorAll('.method-heading').forEach(function (codeObject) {
|
38
|
+
codeObject.addEventListener('click', showSource);
|
39
|
+
});
|
45
40
|
};
|
46
41
|
|
47
42
|
function hookSearch() {
|
48
|
-
var input =
|
49
|
-
var result =
|
50
|
-
|
43
|
+
var input = document.querySelector('#search-field');
|
44
|
+
var result = document.querySelector('#search-results');
|
45
|
+
result.classList.remove("initially-hidden");
|
51
46
|
|
52
|
-
var search_section =
|
53
|
-
|
47
|
+
var search_section = document.querySelector('#search-section');
|
48
|
+
search_section.classList.remove("initially-hidden");
|
54
49
|
|
55
50
|
var search = new Search(search_data, input, result);
|
56
51
|
|
@@ -77,85 +72,13 @@ function hookSearch() {
|
|
77
72
|
}
|
78
73
|
|
79
74
|
search.select = function(result) {
|
80
|
-
|
81
|
-
window.location.href = result_element.firstChild.firstChild.href;
|
75
|
+
window.location.href = result.firstChild.firstChild.href;
|
82
76
|
}
|
83
77
|
|
84
78
|
search.scrollIntoView = search.scrollInWindow;
|
85
79
|
};
|
86
80
|
|
87
|
-
function
|
88
|
-
console.debug( "Highlighting target '%s'.", anchor );
|
89
|
-
|
90
|
-
$("a[name]").each( function() {
|
91
|
-
if ( $(this).attr("name") == anchor ) {
|
92
|
-
if ( !$(this).parent().parent().hasClass('target-section') ) {
|
93
|
-
console.debug( "Wrapping the target-section" );
|
94
|
-
$('div.method-detail').unwrap( 'div.target-section' );
|
95
|
-
$(this).parent().wrap( '<div class="target-section"></div>' );
|
96
|
-
} else {
|
97
|
-
console.debug( "Already wrapped." );
|
98
|
-
}
|
99
|
-
}
|
100
|
-
});
|
101
|
-
};
|
102
|
-
|
103
|
-
function highlightLocationTarget() {
|
104
|
-
console.debug( "Location hash: %s", window.location.hash );
|
105
|
-
if ( ! window.location.hash || window.location.hash.length == 0 ) return;
|
106
|
-
|
107
|
-
var anchor = window.location.hash.substring(1);
|
108
|
-
console.debug( "Found anchor: %s; matching %s", anchor, "a[name=" + anchor + "]" );
|
109
|
-
|
110
|
-
highlightTarget( anchor );
|
111
|
-
};
|
112
|
-
|
113
|
-
function highlightClickTarget( event ) {
|
114
|
-
console.debug( "Highlighting click target for event %o", event.target );
|
115
|
-
try {
|
116
|
-
var anchor = $(event.target).attr( 'href' ).substring(1);
|
117
|
-
console.debug( "Found target anchor: %s", anchor );
|
118
|
-
highlightTarget( anchor );
|
119
|
-
} catch ( err ) {
|
120
|
-
console.error( "Exception while highlighting: %o", err );
|
121
|
-
};
|
122
|
-
};
|
123
|
-
|
124
|
-
function loadAsync(path, success, prefix) {
|
125
|
-
$.ajax({
|
126
|
-
url: prefix + path,
|
127
|
-
dataType: 'script',
|
128
|
-
success: success,
|
129
|
-
cache: true
|
130
|
-
});
|
131
|
-
};
|
132
|
-
|
133
|
-
$(document).ready( function() {
|
81
|
+
document.addEventListener('DOMContentLoaded', function() {
|
134
82
|
hookSourceViews();
|
135
|
-
|
136
|
-
$('ul.link-list a').bind( "click", highlightClickTarget );
|
137
|
-
|
138
|
-
var search_scripts_loaded = {
|
139
|
-
navigation_loaded: false,
|
140
|
-
search_loaded: false,
|
141
|
-
search_index_loaded: false,
|
142
|
-
searcher_loaded: false,
|
143
|
-
}
|
144
|
-
|
145
|
-
var search_success_function = function(variable) {
|
146
|
-
return (function (data, status, xhr) {
|
147
|
-
search_scripts_loaded[variable] = true;
|
148
|
-
|
149
|
-
if (search_scripts_loaded['navigation_loaded'] == true &&
|
150
|
-
search_scripts_loaded['search_loaded'] == true &&
|
151
|
-
search_scripts_loaded['search_index_loaded'] == true &&
|
152
|
-
search_scripts_loaded['searcher_loaded'] == true)
|
153
|
-
hookSearch();
|
154
|
-
});
|
155
|
-
}
|
156
|
-
|
157
|
-
loadAsync('js/navigation.js', search_success_function('navigation_loaded'), rdoc_rel_prefix);
|
158
|
-
loadAsync('js/search.js', search_success_function('search_loaded'), rdoc_rel_prefix);
|
159
|
-
loadAsync('js/search_index.js', search_success_function('search_index_loaded'), index_rel_prefix);
|
160
|
-
loadAsync('js/searcher.js', search_success_function('searcher_loaded'), rdoc_rel_prefix);
|
83
|
+
hookSearch();
|
161
84
|
});
|
@@ -1,29 +1,29 @@
|
|
1
1
|
Search = function(data, input, result) {
|
2
2
|
this.data = data;
|
3
|
-
this
|
4
|
-
this
|
3
|
+
this.input = input;
|
4
|
+
this.result = result;
|
5
5
|
|
6
|
-
this
|
7
|
-
this
|
6
|
+
this.current = null;
|
7
|
+
this.view = this.result.parentNode;
|
8
8
|
this.searcher = new Searcher(data.index);
|
9
9
|
this.init();
|
10
10
|
}
|
11
11
|
|
12
|
-
Search.prototype =
|
12
|
+
Search.prototype = Object.assign({}, Navigation, new function() {
|
13
13
|
var suid = 1;
|
14
14
|
|
15
15
|
this.init = function() {
|
16
16
|
var _this = this;
|
17
17
|
var observer = function(e) {
|
18
|
-
switch(e.
|
18
|
+
switch(e.keyCode) {
|
19
19
|
case 38: // Event.KEY_UP
|
20
20
|
case 40: // Event.KEY_DOWN
|
21
21
|
return;
|
22
22
|
}
|
23
|
-
_this.search(_this
|
23
|
+
_this.search(_this.input.value);
|
24
24
|
};
|
25
|
-
this
|
26
|
-
this
|
25
|
+
this.input.addEventListener('keyup', observer);
|
26
|
+
this.input.addEventListener('click', observer); // mac's clear field
|
27
27
|
|
28
28
|
this.searcher.ready(function(results, isLast) {
|
29
29
|
_this.addResults(results, isLast);
|
@@ -34,7 +34,7 @@ Search.prototype = $.extend({}, Navigation, new function() {
|
|
34
34
|
}
|
35
35
|
|
36
36
|
this.search = function(value, selectFirstMatch) {
|
37
|
-
value =
|
37
|
+
value = value.trim().toLowerCase();
|
38
38
|
if (value) {
|
39
39
|
this.setNavigationActive(true);
|
40
40
|
} else {
|
@@ -43,23 +43,23 @@ Search.prototype = $.extend({}, Navigation, new function() {
|
|
43
43
|
|
44
44
|
if (value == '') {
|
45
45
|
this.lastQuery = value;
|
46
|
-
this
|
47
|
-
this
|
46
|
+
this.result.innerHTML = '';
|
47
|
+
this.result.setAttribute('aria-expanded', 'false');
|
48
48
|
this.setNavigationActive(false);
|
49
49
|
} else if (value != this.lastQuery) {
|
50
50
|
this.lastQuery = value;
|
51
|
-
this
|
52
|
-
this
|
51
|
+
this.result.setAttribute('aria-busy', 'true');
|
52
|
+
this.result.setAttribute('aria-expanded', 'true');
|
53
53
|
this.firstRun = true;
|
54
54
|
this.searcher.find(value);
|
55
55
|
}
|
56
56
|
}
|
57
57
|
|
58
58
|
this.addResults = function(results, isLast) {
|
59
|
-
var target = this
|
59
|
+
var target = this.result;
|
60
60
|
if (this.firstRun && (results.length > 0 || isLast)) {
|
61
|
-
this
|
62
|
-
this
|
61
|
+
this.current = null;
|
62
|
+
this.result.innerHTML = '';
|
63
63
|
}
|
64
64
|
|
65
65
|
for (var i=0, l = results.length; i < l; i++) {
|
@@ -70,25 +70,26 @@ Search.prototype = $.extend({}, Navigation, new function() {
|
|
70
70
|
|
71
71
|
if (this.firstRun && results.length > 0) {
|
72
72
|
this.firstRun = false;
|
73
|
-
this
|
74
|
-
this
|
73
|
+
this.current = target.firstChild;
|
74
|
+
this.current.classList.add('search-selected');
|
75
75
|
}
|
76
|
-
|
76
|
+
//TODO: ECMAScript
|
77
|
+
//if (jQuery.browser.msie) this.$element[0].className += '';
|
77
78
|
|
78
|
-
if (isLast) this
|
79
|
+
if (isLast) this.result.setAttribute('aria-busy', 'false');
|
79
80
|
}
|
80
81
|
|
81
82
|
this.move = function(isDown) {
|
82
|
-
if (!this
|
83
|
-
var
|
84
|
-
if (
|
85
|
-
this
|
86
|
-
|
87
|
-
this
|
88
|
-
this.scrollIntoView(
|
89
|
-
this
|
90
|
-
this
|
91
|
-
this
|
83
|
+
if (!this.current) return;
|
84
|
+
var next = isDown ? this.current.nextElementSibling : this.current.previousElementSibling;
|
85
|
+
if (next) {
|
86
|
+
this.current.classList.remove('search-selected');
|
87
|
+
next.classList.add('search-selected');
|
88
|
+
this.input.setAttribute('aria-activedescendant', next.getAttribute('id'));
|
89
|
+
this.scrollIntoView(next, this.view);
|
90
|
+
this.current = next;
|
91
|
+
this.input.value = next.firstChild.firstChild.text;
|
92
|
+
this.input.select();
|
92
93
|
}
|
93
94
|
return true;
|
94
95
|
}
|
@@ -19,28 +19,28 @@
|
|
19
19
|
<p>Here you can browse local documentation from the ruby standard library and
|
20
20
|
your installed gems.
|
21
21
|
|
22
|
-
|
23
|
-
|
22
|
+
<%- extra_dirs = installed.select { |_, _, _, type,| type == :extra } -%>
|
23
|
+
<%- unless extra_dirs.empty? -%>
|
24
24
|
<h2>Extra Documentation Directories</h2>
|
25
25
|
|
26
26
|
<p>The following additional documentation directories are available:</p>
|
27
27
|
|
28
28
|
<ol>
|
29
|
-
|
29
|
+
<%- extra_dirs.each do |name, href, exists, _, path| -%>
|
30
30
|
<li>
|
31
|
-
|
31
|
+
<%- if exists -%>
|
32
32
|
<a href="<%= href %>"><%= h name %></a> (<%= h path %>)
|
33
|
-
|
33
|
+
<%- else -%>
|
34
34
|
<%= h name %> (<%= h path %>; <i>not available</i>)
|
35
|
-
|
35
|
+
<%- end -%>
|
36
36
|
</li>
|
37
|
-
|
37
|
+
<%- end -%>
|
38
38
|
</ol>
|
39
|
-
|
39
|
+
<%- end -%>
|
40
40
|
|
41
|
-
|
42
|
-
|
43
|
-
|
41
|
+
<%- gems = installed.select { |_, _, _, type,| type == :gem } -%>
|
42
|
+
<%- missing = gems.reject { |_, _, exists,| exists } -%>
|
43
|
+
<%- unless missing.empty? then -%>
|
44
44
|
<h2>Missing Gem Documentation</h2>
|
45
45
|
|
46
46
|
<p>You are missing documentation for some of your installed gems.
|
@@ -53,11 +53,10 @@
|
|
53
53
|
the following commands.
|
54
54
|
|
55
55
|
<ul>
|
56
|
-
|
57
|
-
|
56
|
+
<%- names = missing.map { |name,| name.sub(/-([^-]*)$/, '') }.uniq -%>
|
57
|
+
<%- names.each do |name| -%>
|
58
58
|
<li><kbd>gem rdoc <%=h name %></kbd>
|
59
|
-
|
59
|
+
<%- end -%>
|
60
60
|
</ul>
|
61
|
-
|
61
|
+
<%- end -%>
|
62
62
|
</main>
|
63
|
-
|
@@ -2,11 +2,11 @@
|
|
2
2
|
<main role="main">
|
3
3
|
<h1 class="class"><%= h @title %></h1>
|
4
4
|
|
5
|
-
|
6
|
-
|
5
|
+
<%- simple_files = @files.select { |f| f.text? } -%>
|
6
|
+
<%- unless simple_files.empty? then -%>
|
7
7
|
<h2 id="pages">Pages</h2>
|
8
8
|
<ul>
|
9
|
-
|
9
|
+
<%- simple_files.sort.each do |file| -%>
|
10
10
|
<li class="file">
|
11
11
|
<a href="<%= file.path %>"><%= h file.page_name %></a>
|
12
12
|
<%
|
@@ -14,45 +14,45 @@
|
|
14
14
|
table = file.parse(file.comment).table_of_contents
|
15
15
|
unless table.empty? then %>
|
16
16
|
<ul>
|
17
|
-
|
17
|
+
<%- table.each do |heading| -%>
|
18
18
|
<li><a href="<%= file.path %>#<%= heading.aref %>"><%= heading.plain_html %></a>
|
19
|
-
|
19
|
+
<%- end -%>
|
20
20
|
</ul>
|
21
|
-
|
21
|
+
<%- end -%>
|
22
22
|
</li>
|
23
|
-
|
23
|
+
<%- end -%>
|
24
24
|
</ul>
|
25
|
-
|
25
|
+
<%- end -%>
|
26
26
|
|
27
27
|
<h2 id="classes">Classes and Modules</h2>
|
28
28
|
<ul>
|
29
|
-
|
29
|
+
<%- @modsort.each do |klass| -%>
|
30
30
|
<li class="<%= klass.type %>">
|
31
31
|
<a href="<%= klass.path %>"><%= klass.full_name %></a>
|
32
|
-
|
32
|
+
<%- table = []
|
33
33
|
table.concat klass.parse(klass.comment_location).table_of_contents
|
34
34
|
table.concat klass.section_contents
|
35
35
|
|
36
36
|
unless table.empty? then %>
|
37
37
|
<ul>
|
38
|
-
|
38
|
+
<%- table.each do |item| -%>
|
39
39
|
<li><a href="<%= klass.path %>#<%= item.aref %>"><%= item.plain_html %></a>
|
40
|
-
|
40
|
+
<%- end -%>
|
41
41
|
</ul>
|
42
|
-
|
42
|
+
<%- end -%>
|
43
43
|
</li>
|
44
|
-
|
44
|
+
<%- end -%>
|
45
45
|
</ul>
|
46
46
|
|
47
47
|
<h2 id="methods">Methods</h2>
|
48
48
|
<ul>
|
49
|
-
|
49
|
+
<%- @store.all_classes_and_modules.map do |mod|
|
50
50
|
mod.method_list
|
51
51
|
end.flatten.sort.each do |method| %>
|
52
52
|
<li class="method">
|
53
53
|
<a href="<%= method.path %>"><%= h method.pretty_name %></a>
|
54
54
|
—
|
55
55
|
<span class="container"><%= method.parent.full_name %></span>
|
56
|
-
|
56
|
+
<%- end -%>
|
57
57
|
</ul>
|
58
58
|
</main>
|
@@ -10,10 +10,8 @@ Navigation = new function() {
|
|
10
10
|
this.initNavigation = function() {
|
11
11
|
var _this = this;
|
12
12
|
|
13
|
-
|
13
|
+
document.addEventListener('keydown', function(e) {
|
14
14
|
_this.onkeydown(e);
|
15
|
-
}).keyup(function(e) {
|
16
|
-
_this.onkeyup(e);
|
17
15
|
});
|
18
16
|
|
19
17
|
this.navigationActive = true;
|
@@ -21,20 +19,6 @@ Navigation = new function() {
|
|
21
19
|
|
22
20
|
this.setNavigationActive = function(state) {
|
23
21
|
this.navigationActive = state;
|
24
|
-
this.clearMoveTimeout();
|
25
|
-
}
|
26
|
-
|
27
|
-
this.onkeyup = function(e) {
|
28
|
-
if (!this.navigationActive) return;
|
29
|
-
|
30
|
-
switch(e.keyCode) {
|
31
|
-
case 37: //Event.KEY_LEFT:
|
32
|
-
case 38: //Event.KEY_UP:
|
33
|
-
case 39: //Event.KEY_RIGHT:
|
34
|
-
case 40: //Event.KEY_DOWN:
|
35
|
-
this.clearMoveTimeout();
|
36
|
-
break;
|
37
|
-
}
|
38
22
|
}
|
39
23
|
|
40
24
|
this.onkeydown = function(e) {
|
@@ -46,7 +30,6 @@ Navigation = new function() {
|
|
46
30
|
case 38: //Event.KEY_UP:
|
47
31
|
if (e.keyCode == 38 || e.ctrlKey) {
|
48
32
|
if (this.moveUp()) e.preventDefault();
|
49
|
-
this.startMoveTimeout(false);
|
50
33
|
}
|
51
34
|
break;
|
52
35
|
case 39: //Event.KEY_RIGHT:
|
@@ -55,33 +38,14 @@ Navigation = new function() {
|
|
55
38
|
case 40: //Event.KEY_DOWN:
|
56
39
|
if (e.keyCode == 40 || e.ctrlKey) {
|
57
40
|
if (this.moveDown()) e.preventDefault();
|
58
|
-
this.startMoveTimeout(true);
|
59
41
|
}
|
60
42
|
break;
|
61
43
|
case 13: //Event.KEY_RETURN:
|
62
|
-
if (this
|
63
|
-
this.select(this
|
44
|
+
if (this.current) e.preventDefault();
|
45
|
+
this.select(this.current);
|
64
46
|
break;
|
65
47
|
}
|
66
|
-
if (e.ctrlKey && e.shiftKey) this.select(this
|
67
|
-
}
|
68
|
-
|
69
|
-
this.clearMoveTimeout = function() {
|
70
|
-
clearTimeout(this.moveTimeout);
|
71
|
-
this.moveTimeout = null;
|
72
|
-
}
|
73
|
-
|
74
|
-
this.startMoveTimeout = function(isDown) {
|
75
|
-
if (!$.browser.mozilla && !$.browser.opera) return;
|
76
|
-
if (this.moveTimeout) this.clearMoveTimeout();
|
77
|
-
var _this = this;
|
78
|
-
|
79
|
-
var go = function() {
|
80
|
-
if (!_this.moveTimeout) return;
|
81
|
-
_this[isDown ? 'moveDown' : 'moveUp']();
|
82
|
-
_this.moveTimeout = setTimeout(go, 100);
|
83
|
-
}
|
84
|
-
this.moveTimeout = setTimeout(go, 200);
|
48
|
+
if (e.ctrlKey && e.shiftKey) this.select(this.current);
|
85
49
|
}
|
86
50
|
|
87
51
|
this.moveRight = function() {
|