churn 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +2 -1
- data/Gemfile +1 -1
- data/Gemfile.lock +44 -38
- data/README.md +7 -7
- data/bin/churn +0 -1
- data/churn.gemspec +15 -14
- data/doc/Churn.html +165 -0
- data/doc/Churn/BzrAnalyzer.html +276 -0
- data/doc/Churn/ChurnCalculator.html +578 -0
- data/doc/Churn/ChurnHistory.html +250 -0
- data/doc/Churn/ChurnOptions.html +393 -0
- data/doc/Churn/GitAnalyzer.html +311 -0
- data/doc/Churn/HgAnalyzer.html +276 -0
- data/doc/Churn/LocationMapping.html +448 -0
- data/doc/Churn/SourceControl.html +451 -0
- data/doc/Churn/SvnAnalyzer.html +311 -0
- data/doc/LICENSE.html +123 -0
- data/doc/Object.html +246 -0
- data/doc/created.rid +15 -0
- data/doc/images/add.png +0 -0
- data/doc/images/arrow_up.png +0 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/delete.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_blue.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/transparent.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +100 -0
- data/doc/js/darkfish.js +155 -0
- data/doc/js/jquery.js +18 -0
- data/doc/js/navigation.js +142 -0
- data/doc/js/search.js +94 -0
- data/doc/js/search_index.js +1 -0
- data/doc/js/searcher.js +228 -0
- data/doc/rdoc.css +595 -0
- data/doc/table_of_contents.html +167 -0
- data/lib/churn/calculator.rb +43 -43
- data/lib/churn/options.rb +3 -3
- data/lib/churn/scm/bzr_analyzer.rb +6 -2
- data/lib/churn/scm/git_analyzer.rb +19 -5
- data/lib/churn/scm/hg_analyzer.rb +5 -1
- data/lib/churn/scm/source_control.rb +15 -15
- data/lib/churn/scm/svn_analyzer.rb +5 -0
- data/lib/churn/version.rb +1 -1
- data/lib/tasks/churn_tasks.rb +1 -1
- data/test/data/churn_calculator.rb +14 -14
- data/test/data/test_helper.rb +5 -5
- data/test/test_helper.rb +5 -5
- data/test/unit/bzr_analyzer_test.rb +2 -2
- data/test/unit/churn_calculator_test.rb +1 -1
- data/test/unit/churn_history_test.rb +5 -5
- data/test/unit/churn_options_test.rb +3 -3
- data/test/unit/git_analyzer_test.rb +3 -3
- data/test/unit/hg_analyzer_test.rb +2 -2
- data/test/unit/location_mapping_test.rb +2 -2
- data/test/unit/source_control_test.rb +3 -3
- data/test/unit/svn_analyzer_test.rb +3 -3
- metadata +94 -76
data/doc/js/search.js
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
Search = function(data, input, result) {
|
2
|
+
this.data = data;
|
3
|
+
this.$input = $(input);
|
4
|
+
this.$result = $(result);
|
5
|
+
|
6
|
+
this.$current = null;
|
7
|
+
this.$view = this.$result.parent();
|
8
|
+
this.searcher = new Searcher(data.index);
|
9
|
+
this.init();
|
10
|
+
}
|
11
|
+
|
12
|
+
Search.prototype = $.extend({}, Navigation, new function() {
|
13
|
+
var suid = 1;
|
14
|
+
|
15
|
+
this.init = function() {
|
16
|
+
var _this = this;
|
17
|
+
var observer = function() {
|
18
|
+
_this.search(_this.$input[0].value);
|
19
|
+
};
|
20
|
+
this.$input.keyup(observer);
|
21
|
+
this.$input.click(observer); // mac's clear field
|
22
|
+
|
23
|
+
this.searcher.ready(function(results, isLast) {
|
24
|
+
_this.addResults(results, isLast);
|
25
|
+
})
|
26
|
+
|
27
|
+
this.initNavigation();
|
28
|
+
this.setNavigationActive(false);
|
29
|
+
}
|
30
|
+
|
31
|
+
this.search = function(value, selectFirstMatch) {
|
32
|
+
value = jQuery.trim(value).toLowerCase();
|
33
|
+
if (value) {
|
34
|
+
this.setNavigationActive(true);
|
35
|
+
} else {
|
36
|
+
this.setNavigationActive(false);
|
37
|
+
}
|
38
|
+
|
39
|
+
if (value == '') {
|
40
|
+
this.lastQuery = value;
|
41
|
+
this.$result.empty();
|
42
|
+
this.setNavigationActive(false);
|
43
|
+
} else if (value != this.lastQuery) {
|
44
|
+
this.lastQuery = value;
|
45
|
+
this.firstRun = true;
|
46
|
+
this.searcher.find(value);
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
this.addResults = function(results, isLast) {
|
51
|
+
var target = this.$result.get(0);
|
52
|
+
if (this.firstRun && (results.length > 0 || isLast)) {
|
53
|
+
this.$current = null;
|
54
|
+
this.$result.empty();
|
55
|
+
}
|
56
|
+
|
57
|
+
for (var i=0, l = results.length; i < l; i++) {
|
58
|
+
target.appendChild(this.renderItem.call(this, results[i]));
|
59
|
+
};
|
60
|
+
|
61
|
+
if (this.firstRun && results.length > 0) {
|
62
|
+
this.firstRun = false;
|
63
|
+
this.$current = $(target.firstChild);
|
64
|
+
this.$current.addClass('current');
|
65
|
+
}
|
66
|
+
if (jQuery.browser.msie) this.$element[0].className += '';
|
67
|
+
}
|
68
|
+
|
69
|
+
this.move = function(isDown) {
|
70
|
+
if (!this.$current) return;
|
71
|
+
var $next = this.$current[isDown ? 'next' : 'prev']();
|
72
|
+
if ($next.length) {
|
73
|
+
this.$current.removeClass('current');
|
74
|
+
$next.addClass('current');
|
75
|
+
this.scrollIntoView($next[0], this.$view[0]);
|
76
|
+
this.$current = $next;
|
77
|
+
}
|
78
|
+
return true;
|
79
|
+
}
|
80
|
+
|
81
|
+
this.hlt = function(html) {
|
82
|
+
return this.escapeHTML(html).
|
83
|
+
replace(/\u0001/g, '<em>').
|
84
|
+
replace(/\u0002/g, '</em>');
|
85
|
+
}
|
86
|
+
|
87
|
+
this.escapeHTML = function(html) {
|
88
|
+
return html.replace(/[&<>]/g, function(c) {
|
89
|
+
return '&#' + c.charCodeAt(0) + ';';
|
90
|
+
});
|
91
|
+
}
|
92
|
+
|
93
|
+
});
|
94
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
var search_data = {"index":{"searchIndex":["churn","bzranalyzer","churncalculator","churnhistory","churnoptions","gitanalyzer","hganalyzer","locationmapping","sourcecontrol","svnanalyzer","object","analyze()","analyze_list()","deep_last_line()","emit()","generate_history()","get_commit_history()","get_info()","get_logs()","get_logs()","get_logs()","get_logs()","get_logs()","get_revisions()","get_revisions()","get_revisions()","get_revisions()","get_revisions()","get_updated_files_change_info()","get_updated_files_change_info()","get_updated_files_from_log()","load_revision_data()","new()","new()","new()","new()","process_class()","process_defn()","remote_report()","report()","report_churn()","run()","set_options()","set_source_control()","store_revision_history()","supported?()","supported?()","supported?()","supported?()","supported?()","to_h()","to_s()","to_s()","license"],"longSearchIndex":["churn","churn::bzranalyzer","churn::churncalculator","churn::churnhistory","churn::churnoptions","churn::gitanalyzer","churn::hganalyzer","churn::locationmapping","churn::sourcecontrol","churn::svnanalyzer","object","churn::churncalculator#analyze()","churn::locationmapping#analyze_list()","churn::locationmapping#deep_last_line()","churn::churncalculator#emit()","churn::churncalculator#generate_history()","churn::gitanalyzer#get_commit_history()","churn::locationmapping#get_info()","churn::bzranalyzer#get_logs()","churn::gitanalyzer#get_logs()","churn::hganalyzer#get_logs()","churn::sourcecontrol#get_logs()","churn::svnanalyzer#get_logs()","churn::bzranalyzer#get_revisions()","churn::gitanalyzer#get_revisions()","churn::hganalyzer#get_revisions()","churn::sourcecontrol#get_revisions()","churn::svnanalyzer#get_revisions()","churn::sourcecontrol#get_updated_files_change_info()","churn::svnanalyzer#get_updated_files_change_info()","churn::sourcecontrol#get_updated_files_from_log()","churn::churnhistory::load_revision_data()","churn::churncalculator::new()","churn::churnoptions::new()","churn::locationmapping::new()","churn::sourcecontrol::new()","churn::locationmapping#process_class()","churn::locationmapping#process_defn()","churn::churncalculator#remote_report()","churn::churncalculator#report()","object#report_churn()","object#run()","churn::churnoptions#set_options()","churn::sourcecontrol::set_source_control()","churn::churnhistory::store_revision_history()","churn::bzranalyzer::supported?()","churn::gitanalyzer::supported?()","churn::hganalyzer::supported?()","churn::sourcecontrol::supported?()","churn::svnanalyzer::supported?()","churn::churncalculator#to_h()","churn::churncalculator#to_s()","churn::churncalculator::to_s()",""],"info":[["Churn","","Churn.html","",""],["Churn::BzrAnalyzer","","Churn/BzrAnalyzer.html","","<p>analizes Bzr / Bazaar SCM to find recently changed files, and what lines\nhave been altered\n"],["Churn::ChurnCalculator","","Churn/ChurnCalculator.html","","<p>The work horse of the the churn library. This class takes user input,\ndetermins the SCM the user is using. …\n"],["Churn::ChurnHistory","","Churn/ChurnHistory.html","","<p>responsible for storing the churn history to json, and for loading old\nchurn history data from json. …\n"],["Churn::ChurnOptions","","Churn/ChurnOptions.html","","<p>responsible for storing the churn configuration\n"],["Churn::GitAnalyzer","","Churn/GitAnalyzer.html","","<p>analizes git SCM to find recently changed files, and what lines have been\naltered\n"],["Churn::HgAnalyzer","","Churn/HgAnalyzer.html","","<p>analizes Hg / Mercurial SCM to find recently changed files, and what lines\nhave been altered\n"],["Churn::LocationMapping","","Churn/LocationMapping.html","","<p>Given a ruby file, map the klass and methods to a range of line numbers The\nklass and method to line …\n"],["Churn::SourceControl","","Churn/SourceControl.html","","<p>Base clase for analyzing various SCM systems like git, HG, and SVN\n"],["Churn::SvnAnalyzer","","Churn/SvnAnalyzer.html","","<p>analizes SVN SCM to find recently changed files, and what lines have been\naltered\n"],["Object","","Object.html","",""],["analyze","Churn::ChurnCalculator","Churn/ChurnCalculator.html#method-i-analyze","()","<p>Analyze the source control data, filter, sort, and find more information on\nthe editted files\n"],["analyze_list","Churn::LocationMapping","Churn/LocationMapping.html#method-i-analyze_list","(exp)",""],["deep_last_line","Churn::LocationMapping","Churn/LocationMapping.html#method-i-deep_last_line","(exp)",""],["emit","Churn::ChurnCalculator","Churn/ChurnCalculator.html#method-i-emit","()","<p>Emits various data from source control to be analyses later… Currently this\nis broken up like this …\n"],["generate_history","Churn::ChurnCalculator","Churn/ChurnCalculator.html#method-i-generate_history","()","<p>this method generates the past history of a churn project from first commit\nto current running the report …\n"],["get_commit_history","Churn::GitAnalyzer","Churn/GitAnalyzer.html#method-i-get_commit_history","()",""],["get_info","Churn::LocationMapping","Churn/LocationMapping.html#method-i-get_info","(file)",""],["get_logs","Churn::BzrAnalyzer","Churn/BzrAnalyzer.html#method-i-get_logs","()",""],["get_logs","Churn::GitAnalyzer","Churn/GitAnalyzer.html#method-i-get_logs","()",""],["get_logs","Churn::HgAnalyzer","Churn/HgAnalyzer.html#method-i-get_logs","()",""],["get_logs","Churn::SourceControl","Churn/SourceControl.html#method-i-get_logs","()",""],["get_logs","Churn::SvnAnalyzer","Churn/SvnAnalyzer.html#method-i-get_logs","()",""],["get_revisions","Churn::BzrAnalyzer","Churn/BzrAnalyzer.html#method-i-get_revisions","()",""],["get_revisions","Churn::GitAnalyzer","Churn/GitAnalyzer.html#method-i-get_revisions","()",""],["get_revisions","Churn::HgAnalyzer","Churn/HgAnalyzer.html#method-i-get_revisions","()",""],["get_revisions","Churn::SourceControl","Churn/SourceControl.html#method-i-get_revisions","()",""],["get_revisions","Churn::SvnAnalyzer","Churn/SvnAnalyzer.html#method-i-get_revisions","()","<p>below 2 methods aren’t supported by SVN so they become noops\n"],["get_updated_files_change_info","Churn::SourceControl","Churn/SourceControl.html#method-i-get_updated_files_change_info","(revision, revisions)",""],["get_updated_files_change_info","Churn::SvnAnalyzer","Churn/SvnAnalyzer.html#method-i-get_updated_files_change_info","(revision, revisions)",""],["get_updated_files_from_log","Churn::SourceControl","Churn/SourceControl.html#method-i-get_updated_files_from_log","(revision, revisions)",""],["load_revision_data","Churn::ChurnHistory","Churn/ChurnHistory.html#method-c-load_revision_data","(revision, data_directory)","<p>given a previous project revision find and load the churn data from a json\nfile\n"],["new","Churn::ChurnCalculator","Churn/ChurnCalculator.html#method-c-new","(options={})","<p>intialized the churn calculator object\n"],["new","Churn::ChurnOptions","Churn/ChurnOptions.html#method-c-new","()",""],["new","Churn::LocationMapping","Churn/LocationMapping.html#method-c-new","()",""],["new","Churn::SourceControl","Churn/SourceControl.html#method-c-new","(start_date=nil)",""],["process_class","Churn::LocationMapping","Churn/LocationMapping.html#method-i-process_class","(exp)",""],["process_defn","Churn::LocationMapping","Churn/LocationMapping.html#method-i-process_defn","(exp)",""],["remote_report","Churn::ChurnCalculator","Churn/ChurnCalculator.html#method-i-remote_report","()",""],["report","Churn::ChurnCalculator","Churn/ChurnCalculator.html#method-i-report","(print = true)","<p>prepares the data for the given project to be reported. reads git/svn logs\nanalyzes the output, generates …\n"],["report_churn","Object","Object.html#method-i-report_churn","(output_string)",""],["run","Object","Object.html#method-i-run","()",""],["set_options","Churn::ChurnOptions","Churn/ChurnOptions.html#method-i-set_options","(options = {})",""],["set_source_control","Churn::SourceControl","Churn/SourceControl.html#method-c-set_source_control","(start_date)",""],["store_revision_history","Churn::ChurnHistory","Churn/ChurnHistory.html#method-c-store_revision_history","(revision, hash_data, data_directory)","<p>takes current revision and its hash_data and stores it\n"],["supported?","Churn::BzrAnalyzer","Churn/BzrAnalyzer.html#method-c-supported-3F","()",""],["supported?","Churn::GitAnalyzer","Churn/GitAnalyzer.html#method-c-supported-3F","()",""],["supported?","Churn::HgAnalyzer","Churn/HgAnalyzer.html#method-c-supported-3F","()",""],["supported?","Churn::SourceControl","Churn/SourceControl.html#method-c-supported-3F","()",""],["supported?","Churn::SvnAnalyzer","Churn/SvnAnalyzer.html#method-c-supported-3F","()",""],["to_h","Churn::ChurnCalculator","Churn/ChurnCalculator.html#method-i-to_h","()","<p>collect all the data into a single hash data structure.\n"],["to_s","Churn::ChurnCalculator","Churn/ChurnCalculator.html#method-i-to_s","()",""],["to_s","Churn::ChurnCalculator","Churn/ChurnCalculator.html#method-c-to_s","(hash)","<p>Pretty print the data as a string for the user\n"],["LICENSE","","LICENSE.html","","<p>Copyright © 2013 Dan Mayer\n<p>Permission is hereby granted, free of charge, to any person obtaining a\ncopy …\n"]]}}
|
data/doc/js/searcher.js
ADDED
@@ -0,0 +1,228 @@
|
|
1
|
+
Searcher = function(data) {
|
2
|
+
this.data = data;
|
3
|
+
this.handlers = [];
|
4
|
+
}
|
5
|
+
|
6
|
+
Searcher.prototype = new function() {
|
7
|
+
// search is performed in chunks of 1000 for non-blocking user input
|
8
|
+
var CHUNK_SIZE = 1000;
|
9
|
+
// do not try to find more than 100 results
|
10
|
+
var MAX_RESULTS = 100;
|
11
|
+
var huid = 1;
|
12
|
+
var suid = 1;
|
13
|
+
var runs = 0;
|
14
|
+
|
15
|
+
this.find = function(query) {
|
16
|
+
var queries = splitQuery(query);
|
17
|
+
var regexps = buildRegexps(queries);
|
18
|
+
var highlighters = buildHilighters(queries);
|
19
|
+
var state = { from: 0, pass: 0, limit: MAX_RESULTS, n: suid++};
|
20
|
+
var _this = this;
|
21
|
+
|
22
|
+
this.currentSuid = state.n;
|
23
|
+
|
24
|
+
if (!query) return;
|
25
|
+
|
26
|
+
var run = function() {
|
27
|
+
// stop current search thread if new search started
|
28
|
+
if (state.n != _this.currentSuid) return;
|
29
|
+
|
30
|
+
var results =
|
31
|
+
performSearch(_this.data, regexps, queries, highlighters, state);
|
32
|
+
var hasMore = (state.limit > 0 && state.pass < 4);
|
33
|
+
|
34
|
+
triggerResults.call(_this, results, !hasMore);
|
35
|
+
if (hasMore) {
|
36
|
+
setTimeout(run, 2);
|
37
|
+
}
|
38
|
+
runs++;
|
39
|
+
};
|
40
|
+
runs = 0;
|
41
|
+
|
42
|
+
// start search thread
|
43
|
+
run();
|
44
|
+
}
|
45
|
+
|
46
|
+
/* ----- Events ------ */
|
47
|
+
this.ready = function(fn) {
|
48
|
+
fn.huid = huid;
|
49
|
+
this.handlers.push(fn);
|
50
|
+
}
|
51
|
+
|
52
|
+
/* ----- Utilities ------ */
|
53
|
+
function splitQuery(query) {
|
54
|
+
return jQuery.grep(query.split(/(\s+|::?|\(\)?)/), function(string) {
|
55
|
+
return string.match(/\S/)
|
56
|
+
});
|
57
|
+
}
|
58
|
+
|
59
|
+
function buildRegexps(queries) {
|
60
|
+
return jQuery.map(queries, function(query) {
|
61
|
+
return new RegExp(query.replace(/(.)/g, '([$1])([^$1]*?)'), 'i')
|
62
|
+
});
|
63
|
+
}
|
64
|
+
|
65
|
+
function buildHilighters(queries) {
|
66
|
+
return jQuery.map(queries, function(query) {
|
67
|
+
return jQuery.map(query.split(''), function(l, i) {
|
68
|
+
return '\u0001$' + (i*2+1) + '\u0002$' + (i*2+2);
|
69
|
+
}).join('');
|
70
|
+
});
|
71
|
+
}
|
72
|
+
|
73
|
+
// function longMatchRegexp(index, longIndex, regexps) {
|
74
|
+
// for (var i = regexps.length - 1; i >= 0; i--){
|
75
|
+
// if (!index.match(regexps[i]) && !longIndex.match(regexps[i])) return false;
|
76
|
+
// };
|
77
|
+
// return true;
|
78
|
+
// }
|
79
|
+
|
80
|
+
|
81
|
+
/* ----- Mathchers ------ */
|
82
|
+
|
83
|
+
/*
|
84
|
+
* This record matches if the index starts with queries[0] and the record
|
85
|
+
* matches all of the regexps
|
86
|
+
*/
|
87
|
+
function matchPassBeginning(index, longIndex, queries, regexps) {
|
88
|
+
if (index.indexOf(queries[0]) != 0) return false;
|
89
|
+
for (var i=1, l = regexps.length; i < l; i++) {
|
90
|
+
if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
|
91
|
+
return false;
|
92
|
+
};
|
93
|
+
return true;
|
94
|
+
}
|
95
|
+
|
96
|
+
/*
|
97
|
+
* This record matches if the longIndex starts with queries[0] and the
|
98
|
+
* longIndex matches all of the regexps
|
99
|
+
*/
|
100
|
+
function matchPassLongIndex(index, longIndex, queries, regexps) {
|
101
|
+
if (longIndex.indexOf(queries[0]) != 0) return false;
|
102
|
+
for (var i=1, l = regexps.length; i < l; i++) {
|
103
|
+
if (!longIndex.match(regexps[i]))
|
104
|
+
return false;
|
105
|
+
};
|
106
|
+
return true;
|
107
|
+
}
|
108
|
+
|
109
|
+
/*
|
110
|
+
* This record matches if the index contains queries[0] and the record
|
111
|
+
* matches all of the regexps
|
112
|
+
*/
|
113
|
+
function matchPassContains(index, longIndex, queries, regexps) {
|
114
|
+
if (index.indexOf(queries[0]) == -1) return false;
|
115
|
+
for (var i=1, l = regexps.length; i < l; i++) {
|
116
|
+
if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
|
117
|
+
return false;
|
118
|
+
};
|
119
|
+
return true;
|
120
|
+
}
|
121
|
+
|
122
|
+
/*
|
123
|
+
* This record matches if regexps[0] matches the index and the record
|
124
|
+
* matches all of the regexps
|
125
|
+
*/
|
126
|
+
function matchPassRegexp(index, longIndex, queries, regexps) {
|
127
|
+
if (!index.match(regexps[0])) return false;
|
128
|
+
for (var i=1, l = regexps.length; i < l; i++) {
|
129
|
+
if (!index.match(regexps[i]) && !longIndex.match(regexps[i]))
|
130
|
+
return false;
|
131
|
+
};
|
132
|
+
return true;
|
133
|
+
}
|
134
|
+
|
135
|
+
|
136
|
+
/* ----- Highlighters ------ */
|
137
|
+
function highlightRegexp(info, queries, regexps, highlighters) {
|
138
|
+
var result = createResult(info);
|
139
|
+
for (var i=0, l = regexps.length; i < l; i++) {
|
140
|
+
result.title = result.title.replace(regexps[i], highlighters[i]);
|
141
|
+
result.namespace = result.namespace.replace(regexps[i], highlighters[i]);
|
142
|
+
};
|
143
|
+
return result;
|
144
|
+
}
|
145
|
+
|
146
|
+
function hltSubstring(string, pos, length) {
|
147
|
+
return string.substring(0, pos) + '\u0001' + string.substring(pos, pos + length) + '\u0002' + string.substring(pos + length);
|
148
|
+
}
|
149
|
+
|
150
|
+
function highlightQuery(info, queries, regexps, highlighters) {
|
151
|
+
var result = createResult(info);
|
152
|
+
var pos = 0;
|
153
|
+
var lcTitle = result.title.toLowerCase();
|
154
|
+
|
155
|
+
pos = lcTitle.indexOf(queries[0]);
|
156
|
+
if (pos != -1) {
|
157
|
+
result.title = hltSubstring(result.title, pos, queries[0].length);
|
158
|
+
}
|
159
|
+
|
160
|
+
result.namespace = result.namespace.replace(regexps[0], highlighters[0]);
|
161
|
+
for (var i=1, l = regexps.length; i < l; i++) {
|
162
|
+
result.title = result.title.replace(regexps[i], highlighters[i]);
|
163
|
+
result.namespace = result.namespace.replace(regexps[i], highlighters[i]);
|
164
|
+
};
|
165
|
+
return result;
|
166
|
+
}
|
167
|
+
|
168
|
+
function createResult(info) {
|
169
|
+
var result = {};
|
170
|
+
result.title = info[0];
|
171
|
+
result.namespace = info[1];
|
172
|
+
result.path = info[2];
|
173
|
+
result.params = info[3];
|
174
|
+
result.snippet = info[4];
|
175
|
+
return result;
|
176
|
+
}
|
177
|
+
|
178
|
+
/* ----- Searching ------ */
|
179
|
+
function performSearch(data, regexps, queries, highlighters, state) {
|
180
|
+
var searchIndex = data.searchIndex;
|
181
|
+
var longSearchIndex = data.longSearchIndex;
|
182
|
+
var info = data.info;
|
183
|
+
var result = [];
|
184
|
+
var i = state.from;
|
185
|
+
var l = searchIndex.length;
|
186
|
+
var togo = CHUNK_SIZE;
|
187
|
+
var matchFunc, hltFunc;
|
188
|
+
|
189
|
+
while (state.pass < 4 && state.limit > 0 && togo > 0) {
|
190
|
+
if (state.pass == 0) {
|
191
|
+
matchFunc = matchPassBeginning;
|
192
|
+
hltFunc = highlightQuery;
|
193
|
+
} else if (state.pass == 1) {
|
194
|
+
matchFunc = matchPassLongIndex;
|
195
|
+
hltFunc = highlightQuery;
|
196
|
+
} else if (state.pass == 2) {
|
197
|
+
matchFunc = matchPassContains;
|
198
|
+
hltFunc = highlightQuery;
|
199
|
+
} else if (state.pass == 3) {
|
200
|
+
matchFunc = matchPassRegexp;
|
201
|
+
hltFunc = highlightRegexp;
|
202
|
+
}
|
203
|
+
|
204
|
+
for (; togo > 0 && i < l && state.limit > 0; i++, togo--) {
|
205
|
+
if (info[i].n == state.n) continue;
|
206
|
+
if (matchFunc(searchIndex[i], longSearchIndex[i], queries, regexps)) {
|
207
|
+
info[i].n = state.n;
|
208
|
+
result.push(hltFunc(info[i], queries, regexps, highlighters));
|
209
|
+
state.limit--;
|
210
|
+
}
|
211
|
+
};
|
212
|
+
if (searchIndex.length <= i) {
|
213
|
+
state.pass++;
|
214
|
+
i = state.from = 0;
|
215
|
+
} else {
|
216
|
+
state.from = i;
|
217
|
+
}
|
218
|
+
}
|
219
|
+
return result;
|
220
|
+
}
|
221
|
+
|
222
|
+
function triggerResults(results, isLast) {
|
223
|
+
jQuery.each(this.handlers, function(i, fn) {
|
224
|
+
fn.call(this, results, isLast)
|
225
|
+
})
|
226
|
+
}
|
227
|
+
}
|
228
|
+
|
data/doc/rdoc.css
ADDED
@@ -0,0 +1,595 @@
|
|
1
|
+
/*
|
2
|
+
* "Darkfish" Rdoc CSS
|
3
|
+
* $Id: rdoc.css 54 2009-01-27 01:09:48Z deveiant $
|
4
|
+
*
|
5
|
+
* Author: Michael Granger <ged@FaerieMUD.org>
|
6
|
+
*
|
7
|
+
*/
|
8
|
+
|
9
|
+
/* vim: ft=css et sw=2 ts=2 sts=2 */
|
10
|
+
/* Base Green is: #6C8C22 */
|
11
|
+
|
12
|
+
* { padding: 0; margin: 0; }
|
13
|
+
|
14
|
+
body {
|
15
|
+
background: #efefef;
|
16
|
+
font: 14px "Helvetica Neue", Helvetica, Tahoma, sans-serif;
|
17
|
+
margin-left: 40px;
|
18
|
+
}
|
19
|
+
body.file-popup {
|
20
|
+
font-size: 90%;
|
21
|
+
margin-left: 0;
|
22
|
+
}
|
23
|
+
|
24
|
+
h1 {
|
25
|
+
font-size: 300%;
|
26
|
+
text-shadow: rgba(135,145,135,0.65) 2px 2px 3px;
|
27
|
+
color: #6C8C22;
|
28
|
+
}
|
29
|
+
h2,h3,h4 { margin-top: 1.5em; }
|
30
|
+
|
31
|
+
h1 span,
|
32
|
+
h2 span,
|
33
|
+
h3 span,
|
34
|
+
h4 span,
|
35
|
+
h5 span,
|
36
|
+
h6 span {
|
37
|
+
display: none;
|
38
|
+
padding-left: 1em;
|
39
|
+
font-size: 50%;
|
40
|
+
vertical-align: super;
|
41
|
+
}
|
42
|
+
|
43
|
+
h1:hover span,
|
44
|
+
h2:hover span,
|
45
|
+
h3:hover span,
|
46
|
+
h4:hover span,
|
47
|
+
h5:hover span,
|
48
|
+
h6:hover span {
|
49
|
+
display: inline;
|
50
|
+
}
|
51
|
+
|
52
|
+
:link,
|
53
|
+
:visited {
|
54
|
+
color: #6C8C22;
|
55
|
+
text-decoration: none;
|
56
|
+
}
|
57
|
+
:link:hover,
|
58
|
+
:visited:hover {
|
59
|
+
border-bottom: 1px dotted #6C8C22;
|
60
|
+
}
|
61
|
+
|
62
|
+
pre {
|
63
|
+
background: #ddd;
|
64
|
+
padding: 0.5em 0;
|
65
|
+
}
|
66
|
+
|
67
|
+
blockquote {
|
68
|
+
background: #ddd;
|
69
|
+
margin: 1em;
|
70
|
+
padding: 0.25em;
|
71
|
+
}
|
72
|
+
|
73
|
+
blockquote > :first-child {
|
74
|
+
margin-top: 0 !important;
|
75
|
+
}
|
76
|
+
|
77
|
+
/* @group Generic Classes */
|
78
|
+
|
79
|
+
.initially-hidden {
|
80
|
+
display: none;
|
81
|
+
}
|
82
|
+
|
83
|
+
#search-field {
|
84
|
+
width: 98%;
|
85
|
+
background: #eee;
|
86
|
+
border: none;
|
87
|
+
height: 1.5em;
|
88
|
+
-webkit-border-radius: 4px;
|
89
|
+
}
|
90
|
+
#search-field:focus {
|
91
|
+
background: #f1edba;
|
92
|
+
}
|
93
|
+
#search-field:-moz-placeholder,
|
94
|
+
#search-field::-webkit-input-placeholder {
|
95
|
+
font-weight: bold;
|
96
|
+
color: #666;
|
97
|
+
}
|
98
|
+
|
99
|
+
.missing-docs {
|
100
|
+
font-size: 120%;
|
101
|
+
background: white url(images/wrench_orange.png) no-repeat 4px center;
|
102
|
+
color: #ccc;
|
103
|
+
line-height: 2em;
|
104
|
+
border: 1px solid #d00;
|
105
|
+
opacity: 1;
|
106
|
+
padding-left: 20px;
|
107
|
+
text-indent: 24px;
|
108
|
+
letter-spacing: 3px;
|
109
|
+
font-weight: bold;
|
110
|
+
-webkit-border-radius: 5px;
|
111
|
+
-moz-border-radius: 5px;
|
112
|
+
}
|
113
|
+
|
114
|
+
.target-section {
|
115
|
+
border: 2px solid #dcce90;
|
116
|
+
border-left-width: 8px;
|
117
|
+
padding: 0 1em;
|
118
|
+
background: #fff3c2;
|
119
|
+
}
|
120
|
+
|
121
|
+
/* @end */
|
122
|
+
|
123
|
+
/* @group Index Page, Standalone file pages */
|
124
|
+
.indexpage ul {
|
125
|
+
line-height: 160%;
|
126
|
+
list-style: none;
|
127
|
+
}
|
128
|
+
.indexpage ul :link,
|
129
|
+
.indexpage ul :visited {
|
130
|
+
font-size: 16px;
|
131
|
+
}
|
132
|
+
|
133
|
+
.indexpage li {
|
134
|
+
padding-left: 20px;
|
135
|
+
}
|
136
|
+
|
137
|
+
.indexpage ul > li {
|
138
|
+
background: url(images/bullet_black.png) no-repeat left 4px;
|
139
|
+
}
|
140
|
+
.indexpage li.method {
|
141
|
+
background: url(images/plugin.png) no-repeat left 4px;
|
142
|
+
}
|
143
|
+
.indexpage li.module {
|
144
|
+
background: url(images/package.png) no-repeat left 4px;
|
145
|
+
}
|
146
|
+
.indexpage li.class {
|
147
|
+
background: url(images/ruby.png) no-repeat left 4px;
|
148
|
+
}
|
149
|
+
.indexpage li.file {
|
150
|
+
background: url(images/page_white_text.png) no-repeat left 4px;
|
151
|
+
}
|
152
|
+
.indexpage li li {
|
153
|
+
background: url(images/tag_blue.png) no-repeat left 4px;
|
154
|
+
}
|
155
|
+
.indexpage li .toc-toggle {
|
156
|
+
width: 16px;
|
157
|
+
height: 16px;
|
158
|
+
background: url(images/add.png) no-repeat;
|
159
|
+
}
|
160
|
+
|
161
|
+
.indexpage li .toc-toggle.open {
|
162
|
+
background: url(images/delete.png) no-repeat;
|
163
|
+
}
|
164
|
+
|
165
|
+
/* @end */
|
166
|
+
|
167
|
+
/* @group Top-Level Structure */
|
168
|
+
|
169
|
+
#metadata {
|
170
|
+
float: left;
|
171
|
+
width: 260px;
|
172
|
+
}
|
173
|
+
|
174
|
+
#documentation {
|
175
|
+
margin: 2em 1em 5em 300px;
|
176
|
+
min-width: 340px;
|
177
|
+
}
|
178
|
+
|
179
|
+
#validator-badges {
|
180
|
+
clear: both;
|
181
|
+
margin: 1em 1em 2em;
|
182
|
+
font-size: smaller;
|
183
|
+
}
|
184
|
+
|
185
|
+
/* @end */
|
186
|
+
|
187
|
+
/* @group Metadata Section */
|
188
|
+
#metadata .section {
|
189
|
+
background-color: #dedede;
|
190
|
+
-moz-border-radius: 5px;
|
191
|
+
-webkit-border-radius: 5px;
|
192
|
+
border: 1px solid #aaa;
|
193
|
+
margin: 0 8px 8px;
|
194
|
+
font-size: 90%;
|
195
|
+
overflow: hidden;
|
196
|
+
}
|
197
|
+
#metadata h3.section-header {
|
198
|
+
margin: 0;
|
199
|
+
padding: 2px 8px;
|
200
|
+
background: #ccc;
|
201
|
+
color: #666;
|
202
|
+
-moz-border-radius-topleft: 4px;
|
203
|
+
-moz-border-radius-topright: 4px;
|
204
|
+
-webkit-border-top-left-radius: 4px;
|
205
|
+
-webkit-border-top-right-radius: 4px;
|
206
|
+
border-bottom: 1px solid #aaa;
|
207
|
+
}
|
208
|
+
#metadata #home-section h3.section-header {
|
209
|
+
border-bottom: 0;
|
210
|
+
}
|
211
|
+
|
212
|
+
#metadata ul,
|
213
|
+
#metadata dl,
|
214
|
+
#metadata p {
|
215
|
+
padding: 8px;
|
216
|
+
list-style: none;
|
217
|
+
}
|
218
|
+
|
219
|
+
#file-metadata {
|
220
|
+
margin-top: 2em;
|
221
|
+
}
|
222
|
+
|
223
|
+
#file-metadata ul {
|
224
|
+
padding-left: 28px;
|
225
|
+
list-style-image: url(images/page_green.png);
|
226
|
+
}
|
227
|
+
|
228
|
+
#table-of-contents {
|
229
|
+
margin-top: 2em;
|
230
|
+
}
|
231
|
+
|
232
|
+
#table-of-contents ul {
|
233
|
+
padding-left: 28px;
|
234
|
+
list-style-image: url(images/tag_blue.png);
|
235
|
+
}
|
236
|
+
|
237
|
+
dl.svninfo {
|
238
|
+
color: #666;
|
239
|
+
margin: 0;
|
240
|
+
}
|
241
|
+
dl.svninfo dt {
|
242
|
+
font-weight: bold;
|
243
|
+
}
|
244
|
+
|
245
|
+
ul.link-list li {
|
246
|
+
white-space: nowrap;
|
247
|
+
line-height: 20px;
|
248
|
+
}
|
249
|
+
|
250
|
+
ul.link-list .type {
|
251
|
+
font-size: 8px;
|
252
|
+
text-transform: uppercase;
|
253
|
+
color: white;
|
254
|
+
background: #969696;
|
255
|
+
padding: 2px 4px;
|
256
|
+
-webkit-border-radius: 5px;
|
257
|
+
}
|
258
|
+
|
259
|
+
.calls-super {
|
260
|
+
background: url(images/arrow_up.png) no-repeat right center;
|
261
|
+
}
|
262
|
+
|
263
|
+
/* @end */
|
264
|
+
|
265
|
+
/* @group Class Metadata Section */
|
266
|
+
#class-metadata {
|
267
|
+
margin-top: 2em;
|
268
|
+
}
|
269
|
+
/* @end */
|
270
|
+
|
271
|
+
/* @group Project Metadata Section */
|
272
|
+
#project-metadata {
|
273
|
+
margin-top: 2em;
|
274
|
+
}
|
275
|
+
|
276
|
+
#project-metadata .section {
|
277
|
+
border: 1px solid #aaa;
|
278
|
+
}
|
279
|
+
#project-metadata h3.section-header {
|
280
|
+
border-bottom: 1px solid #aaa;
|
281
|
+
position: relative;
|
282
|
+
}
|
283
|
+
|
284
|
+
#project-metadata form {
|
285
|
+
color: #777;
|
286
|
+
background: #ccc;
|
287
|
+
}
|
288
|
+
|
289
|
+
/* @end */
|
290
|
+
|
291
|
+
/* @group Documentation Section */
|
292
|
+
.description {
|
293
|
+
font-size: 100%;
|
294
|
+
color: #333;
|
295
|
+
}
|
296
|
+
|
297
|
+
.description p {
|
298
|
+
margin: 1em 0.4em;
|
299
|
+
}
|
300
|
+
|
301
|
+
.description li p {
|
302
|
+
margin: 0;
|
303
|
+
}
|
304
|
+
|
305
|
+
.description ol,
|
306
|
+
.description ul {
|
307
|
+
margin-left: 1.5em;
|
308
|
+
}
|
309
|
+
.description ol li,
|
310
|
+
.description ul li {
|
311
|
+
line-height: 1.4em;
|
312
|
+
}
|
313
|
+
|
314
|
+
.note-list {
|
315
|
+
margin: 8px 0;
|
316
|
+
}
|
317
|
+
|
318
|
+
.label-list {
|
319
|
+
margin: 8px 1.5em;
|
320
|
+
border: 1px solid #ccc;
|
321
|
+
}
|
322
|
+
.description .label-list {
|
323
|
+
font-size: 14px;
|
324
|
+
}
|
325
|
+
|
326
|
+
.note-list dt {
|
327
|
+
font-weight: bold;
|
328
|
+
}
|
329
|
+
.note-list dd {
|
330
|
+
padding: 0 12px;
|
331
|
+
}
|
332
|
+
|
333
|
+
.label-list dt {
|
334
|
+
padding: 2px 4px;
|
335
|
+
font-weight: bold;
|
336
|
+
background: #ddd;
|
337
|
+
}
|
338
|
+
.label-list dd {
|
339
|
+
padding: 2px 12px;
|
340
|
+
}
|
341
|
+
.label-list dd + dt,
|
342
|
+
.note-list dd + dt {
|
343
|
+
margin-top: 0.7em;
|
344
|
+
}
|
345
|
+
|
346
|
+
#documentation .section {
|
347
|
+
font-size: 90%;
|
348
|
+
}
|
349
|
+
|
350
|
+
#documentation h2.section-header {
|
351
|
+
margin-top: 1em;
|
352
|
+
padding: 0.25em 0.5em;
|
353
|
+
background: #ccc;
|
354
|
+
color: #333;
|
355
|
+
font-size: 175%;
|
356
|
+
border: 1px solid #bbb;
|
357
|
+
-moz-border-radius: 3px;
|
358
|
+
-webkit-border-radius: 3px;
|
359
|
+
}
|
360
|
+
|
361
|
+
.documentation-section-title {
|
362
|
+
position: relative;
|
363
|
+
}
|
364
|
+
.documentation-section-title .section-click-top {
|
365
|
+
position: absolute;
|
366
|
+
top: 6px;
|
367
|
+
right: 12px;
|
368
|
+
font-size: 10px;
|
369
|
+
color: #9b9877;
|
370
|
+
visibility: hidden;
|
371
|
+
padding-right: 0.5px;
|
372
|
+
}
|
373
|
+
|
374
|
+
.documentation-section-title:hover .section-click-top {
|
375
|
+
visibility: visible;
|
376
|
+
}
|
377
|
+
|
378
|
+
#documentation h3.section-header {
|
379
|
+
margin-top: 1em;
|
380
|
+
padding: 0.25em 0.5em;
|
381
|
+
background-color: #dedede;
|
382
|
+
color: #333;
|
383
|
+
font-size: 150%;
|
384
|
+
border: 1px solid #bbb;
|
385
|
+
-moz-border-radius: 3px;
|
386
|
+
-webkit-border-radius: 3px;
|
387
|
+
}
|
388
|
+
|
389
|
+
#constants-list > dl,
|
390
|
+
#attributes-list > dl {
|
391
|
+
margin: 1em 0 2em;
|
392
|
+
border: 0;
|
393
|
+
}
|
394
|
+
#constants-list > dl dt,
|
395
|
+
#attributes-list > dl dt {
|
396
|
+
padding-left: 0;
|
397
|
+
font-weight: bold;
|
398
|
+
font-family: Monaco, "Andale Mono";
|
399
|
+
background: inherit;
|
400
|
+
}
|
401
|
+
#constants-list > dl dt a,
|
402
|
+
#attributes-list > dl dt a {
|
403
|
+
color: inherit;
|
404
|
+
}
|
405
|
+
#constants-list > dl dd,
|
406
|
+
#attributes-list > dl dd {
|
407
|
+
margin: 0 0 1em 0;
|
408
|
+
padding: 0;
|
409
|
+
color: #666;
|
410
|
+
}
|
411
|
+
|
412
|
+
.documentation-section h2 {
|
413
|
+
position: relative;
|
414
|
+
}
|
415
|
+
|
416
|
+
.documentation-section h2 a {
|
417
|
+
position: absolute;
|
418
|
+
top: 8px;
|
419
|
+
right: 10px;
|
420
|
+
font-size: 12px;
|
421
|
+
color: #9b9877;
|
422
|
+
visibility: hidden;
|
423
|
+
}
|
424
|
+
|
425
|
+
.documentation-section h2:hover a {
|
426
|
+
visibility: visible;
|
427
|
+
}
|
428
|
+
|
429
|
+
/* @group Method Details */
|
430
|
+
|
431
|
+
#documentation .method-source-code {
|
432
|
+
display: none;
|
433
|
+
}
|
434
|
+
|
435
|
+
#documentation .method-description .method-calls-super {
|
436
|
+
color: #333;
|
437
|
+
font-weight: bolder;
|
438
|
+
}
|
439
|
+
|
440
|
+
#documentation .method-detail {
|
441
|
+
margin: 0.5em 0;
|
442
|
+
padding: 0.5em 0;
|
443
|
+
cursor: pointer;
|
444
|
+
}
|
445
|
+
#documentation .method-detail:hover {
|
446
|
+
background-color: #f1edba;
|
447
|
+
}
|
448
|
+
#documentation .method-heading {
|
449
|
+
position: relative;
|
450
|
+
padding: 2px 4px 0 20px;
|
451
|
+
font-size: 125%;
|
452
|
+
font-weight: bold;
|
453
|
+
color: #333;
|
454
|
+
background: url(images/brick.png) no-repeat left bottom;
|
455
|
+
}
|
456
|
+
#documentation .method-heading :link,
|
457
|
+
#documentation .method-heading :visited {
|
458
|
+
color: inherit;
|
459
|
+
}
|
460
|
+
#documentation .method-click-advice {
|
461
|
+
position: absolute;
|
462
|
+
top: 2px;
|
463
|
+
right: 5px;
|
464
|
+
font-size: 10px;
|
465
|
+
color: #9b9877;
|
466
|
+
visibility: hidden;
|
467
|
+
padding-right: 20px;
|
468
|
+
line-height: 20px;
|
469
|
+
background: url(images/zoom.png) no-repeat right top;
|
470
|
+
}
|
471
|
+
#documentation .method-heading:hover .method-click-advice {
|
472
|
+
visibility: visible;
|
473
|
+
}
|
474
|
+
|
475
|
+
#documentation .method-alias .method-heading {
|
476
|
+
color: #666;
|
477
|
+
background: url(images/brick_link.png) no-repeat left bottom;
|
478
|
+
}
|
479
|
+
|
480
|
+
#documentation .method-description,
|
481
|
+
#documentation .aliases {
|
482
|
+
margin: 0 20px;
|
483
|
+
color: #666;
|
484
|
+
}
|
485
|
+
|
486
|
+
#documentation .method-description p,
|
487
|
+
#documentation .aliases p {
|
488
|
+
line-height: 1.2em;
|
489
|
+
}
|
490
|
+
|
491
|
+
#documentation .aliases {
|
492
|
+
padding-top: 4px;
|
493
|
+
font-style: italic;
|
494
|
+
cursor: default;
|
495
|
+
}
|
496
|
+
#documentation .method-description p {
|
497
|
+
margin-bottom: 0.5em;
|
498
|
+
}
|
499
|
+
#documentation .method-description ul {
|
500
|
+
margin-left: 1.5em;
|
501
|
+
}
|
502
|
+
pre {
|
503
|
+
margin: 0.5em 0;
|
504
|
+
}
|
505
|
+
|
506
|
+
#documentation .attribute-method-heading {
|
507
|
+
background: url(images/tag_green.png) no-repeat left bottom;
|
508
|
+
}
|
509
|
+
#documentation #attribute-method-details .method-detail:hover {
|
510
|
+
background-color: transparent;
|
511
|
+
cursor: default;
|
512
|
+
}
|
513
|
+
#documentation .attribute-access-type {
|
514
|
+
font-size: 60%;
|
515
|
+
text-transform: uppercase;
|
516
|
+
vertical-align: super;
|
517
|
+
padding: 0 2px;
|
518
|
+
}
|
519
|
+
/* @end */
|
520
|
+
|
521
|
+
/* @end */
|
522
|
+
|
523
|
+
/* @group Source Code */
|
524
|
+
|
525
|
+
pre {
|
526
|
+
overflow: auto;
|
527
|
+
background: #262626;
|
528
|
+
color: white;
|
529
|
+
border: 1px dashed #999;
|
530
|
+
padding: 0.5em;
|
531
|
+
}
|
532
|
+
|
533
|
+
.description pre {
|
534
|
+
margin: 0 0.4em;
|
535
|
+
}
|
536
|
+
|
537
|
+
.ruby-constant { color: #7fffd4; background: transparent; }
|
538
|
+
.ruby-keyword { color: #00ffff; background: transparent; }
|
539
|
+
.ruby-ivar { color: #eedd82; background: transparent; }
|
540
|
+
.ruby-operator { color: #00ffee; background: transparent; }
|
541
|
+
.ruby-identifier { color: #ffdead; background: transparent; }
|
542
|
+
.ruby-node { color: #ffa07a; background: transparent; }
|
543
|
+
.ruby-comment { color: #dc0000; font-weight: bold; background: transparent; }
|
544
|
+
.ruby-regexp { color: #ffa07a; background: transparent; }
|
545
|
+
.ruby-value { color: #7fffd4; background: transparent; }
|
546
|
+
|
547
|
+
/* @end */
|
548
|
+
|
549
|
+
|
550
|
+
/* @group search results */
|
551
|
+
#search-results h1 {
|
552
|
+
font-size: 1em;
|
553
|
+
font-weight: normal;
|
554
|
+
text-shadow: none;
|
555
|
+
}
|
556
|
+
|
557
|
+
#search-results .current {
|
558
|
+
background: #ccc;
|
559
|
+
border-bottom: 1px solid transparent;
|
560
|
+
}
|
561
|
+
|
562
|
+
#search-results li {
|
563
|
+
list-style: none;
|
564
|
+
border-bottom: 1px solid #aaa;
|
565
|
+
-moz-border-radius: 4px;
|
566
|
+
-webkit-border-radius: 4px;
|
567
|
+
border-radius: 4px;
|
568
|
+
margin-bottom: 0.5em;
|
569
|
+
}
|
570
|
+
|
571
|
+
#search-results li:last-child {
|
572
|
+
border-bottom: none;
|
573
|
+
margin-bottom: 0;
|
574
|
+
}
|
575
|
+
|
576
|
+
#search-results li p {
|
577
|
+
padding: 0;
|
578
|
+
margin: 0.5em;
|
579
|
+
}
|
580
|
+
|
581
|
+
#search-results .search-namespace {
|
582
|
+
font-weight: bold;
|
583
|
+
}
|
584
|
+
|
585
|
+
#search-results li em {
|
586
|
+
background: yellow;
|
587
|
+
font-style: normal;
|
588
|
+
}
|
589
|
+
|
590
|
+
#search-results pre {
|
591
|
+
margin: 0.5em;
|
592
|
+
}
|
593
|
+
|
594
|
+
/* @end */
|
595
|
+
|