firescan 0.07
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.
- data/LICENSE.txt +202 -0
- data/README.txt +37 -0
- data/USAGE.txt +43 -0
- data/VERSION.txt +4 -0
- data/bin/firescan +4 -0
- data/build +7 -0
- data/doc/Example.html +224 -0
- data/doc/Firebind.html +213 -0
- data/doc/Firebind/Client.html +750 -0
- data/doc/Firebind/Portspec.html +390 -0
- data/doc/Firebind/Scan.html +413 -0
- data/doc/Firebind/ScanError.html +277 -0
- data/doc/Firebind/ScanState.html +1015 -0
- data/doc/Firebind/SimpleProtocol.html +292 -0
- data/doc/Firebind/TcpTransport.html +481 -0
- data/doc/Firebind/Transport.html +275 -0
- data/doc/Firebind/UdpTransport.html +472 -0
- data/doc/LICENSE_txt.html +323 -0
- data/doc/README_txt.html +171 -0
- data/doc/Runner.html +166 -0
- data/doc/TestPortspec.html +289 -0
- data/doc/Tools.html +321 -0
- data/doc/USAGE_txt.html +184 -0
- data/doc/VERSION_txt.html +126 -0
- data/doc/build.html +125 -0
- data/doc/created.rid +22 -0
- data/doc/doc/created_rid.html +121 -0
- data/doc/firescan_gemspec.html +140 -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 +118 -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 +230 -0
- data/firescan.gemspec +18 -0
- data/lib/example.rb +20 -0
- data/lib/firebind/client.rb +308 -0
- data/lib/firebind/portspec.rb +107 -0
- data/lib/firebind/scan.rb +288 -0
- data/lib/firebind/scan_error.rb +32 -0
- data/lib/firebind/scan_state.rb +140 -0
- data/lib/firebind/simple_protocol.rb +59 -0
- data/lib/firebind/tcp_transport.rb +184 -0
- data/lib/firebind/tools.rb +107 -0
- data/lib/firebind/transport.rb +44 -0
- data/lib/firebind/udp_transport.rb +174 -0
- data/test/portspec_test.rb +53 -0
- data/test/runner.rb +7 -0
- metadata +136 -0
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":["example","firebind","client","portspec","scan","scanerror","scanstate","simpleprotocol","tcptransport","transport","udptransport","runner","testportspec","tools","arguments_valid?()","big_endian()","close()","closed_ports()","connect()","connect()","debug()","description()","do_output()","do_scan_output()","echo()","new()","new()","new()","new()","new()","new()","new()","new()","new()","on_error()","on_port_complete()","on_port_start()","on_port_tick()","on_scan_complete()","on_scan_start()","on_scan_stop()","on_start_failure()","open_ports()","out()","output_options()","parsed_options?()","percent_complete()","port_delay_seconds()","port_duration()","receive()","receive()","run()","scan()","send()","send()","setup()","size()","stop()","teardown()","test_fail()","to_s()","to_s()","to_s()","update()","update()","verbose()","license","readme","usage","version","build","created.rid","firescan.gemspec"],"longSearchIndex":["example","firebind","firebind::client","firebind::portspec","firebind::scan","firebind::scanerror","firebind::scanstate","firebind::simpleprotocol","firebind::tcptransport","firebind::transport","firebind::udptransport","runner","testportspec","tools","firebind::client#arguments_valid?()","tools#big_endian()","firebind::transport#close()","firebind::scanstate#closed_ports()","firebind::tcptransport#connect()","firebind::udptransport#connect()","tools#debug()","firebind::scanstate#description()","firebind::client#do_output()","firebind::client#do_scan_output()","firebind::simpleprotocol#echo()","firebind::client::new()","firebind::portspec::new()","firebind::scan::new()","firebind::scanerror::new()","firebind::scanstate::new()","firebind::simpleprotocol::new()","firebind::tcptransport::new()","firebind::transport::new()","firebind::udptransport::new()","firebind::scanstate#on_error()","firebind::scanstate#on_port_complete()","firebind::scanstate#on_port_start()","firebind::scanstate#on_port_tick()","firebind::scanstate#on_scan_complete()","firebind::scanstate#on_scan_start()","firebind::scanstate#on_scan_stop()","firebind::scanstate#on_start_failure()","firebind::scanstate#open_ports()","tools#out()","firebind::client#output_options()","firebind::client#parsed_options?()","firebind::scanstate#percent_complete()","firebind::scanstate#port_delay_seconds()","firebind::scanstate#port_duration()","firebind::tcptransport#receive()","firebind::udptransport#receive()","firebind::client#run()","firebind::scan#scan()","firebind::tcptransport#send()","firebind::udptransport#send()","testportspec#setup()","firebind::portspec#size()","firebind::scan#stop()","testportspec#teardown()","testportspec#test_fail()","firebind::portspec#to_s()","firebind::scanerror#to_s()","firebind::scanstate#to_s()","example#update()","firebind::client#update()","tools#verbose()","","","","","","",""],"info":[["Example","","Example.html","",""],["Firebind","","Firebind.html","","<p>Firebind – Path Scan Client Software Copyright (C) 2013 Firebind Inc. All\nrights reserved. Authors - …\n"],["Firebind::Client","","Firebind/Client.html","","<p>Firescan command line Ruby client for path scanning to a Firebind server\n"],["Firebind::Portspec","","Firebind/Portspec.html","","<p>This data structure encapsulates the properties and operations of a port\nlist. Arbitrary lists of comma …\n"],["Firebind::Scan","","Firebind/Scan.html","","<p>This is the primary API object for performing scans. Simply supply the\nnecessary arguments to create …\n"],["Firebind::ScanError","","Firebind/ScanError.html","",""],["Firebind::ScanState","","Firebind/ScanState.html","","\n<pre>Scan lifecycle states\n SCAN_SETUP\n SCAN_START\n PORT_START\n PORT_TICK\n PORT_COMPLETE\n ...\n SCAN_STOP ...</pre>\n"],["Firebind::SimpleProtocol","","Firebind/SimpleProtocol.html","","<p>Simplest of all echo protocols. This simply sends and receives an 8-byte\npayload representing the ID …\n"],["Firebind::TcpTransport","","Firebind/TcpTransport.html","","<p>Send and receive echo using TCP transport.\n"],["Firebind::Transport","","Firebind/Transport.html","",""],["Firebind::UdpTransport","","Firebind/UdpTransport.html","","<p>Send and receive echo using UDP transport.\n"],["Runner","","Runner.html","",""],["TestPortspec","","TestPortspec.html","",""],["Tools","","Tools.html","","<p>Utility module for translating socket and result codes.\n"],["arguments_valid?","Firebind::Client","Firebind/Client.html#method-i-arguments_valid-3F","()","<p>True if required arguments were provided\n"],["big_endian","Tools","Tools.html#method-i-big_endian","(a_number)",""],["close","Firebind::Transport","Firebind/Transport.html#method-i-close","()",""],["closed_ports","Firebind::ScanState","Firebind/ScanState.html#method-i-closed_ports","()","<p>return a Portspec of the closed ports for this scan\n"],["connect","Firebind::TcpTransport","Firebind/TcpTransport.html#method-i-connect","(port)","<p>establish connection to echo server on port\n"],["connect","Firebind::UdpTransport","Firebind/UdpTransport.html#method-i-connect","(port)",""],["debug","Tools","Tools.html#method-i-debug","(msg)",""],["description","Firebind::ScanState","Firebind/ScanState.html#method-i-description","(port_result_code)",""],["do_output","Firebind::Client","Firebind/Client.html#method-i-do_output","()",""],["do_scan_output","Firebind::Client","Firebind/Client.html#method-i-do_scan_output","(state)","<p>command line output formatting helpers\n"],["echo","Firebind::SimpleProtocol","Firebind/SimpleProtocol.html#method-i-echo","(port)",""],["new","Firebind::Client","Firebind/Client.html#method-c-new","(arguments)",""],["new","Firebind::Portspec","Firebind/Portspec.html#method-c-new","(port_list)","<p>Supply either a string or int array examples: 1,2,3,55,10-20 or\n[56,34,443,25,6000]\n"],["new","Firebind::Scan","Firebind/Scan.html#method-c-new","(command_server, ports, transport, timeout=5000, protocol=:SimpleProtocol, username=NIL, password=NIL)","<p>Create a new Scan\n"],["new","Firebind::ScanError","Firebind/ScanError.html#method-c-new","(status_code, error=nil)",""],["new","Firebind::ScanState","Firebind/ScanState.html#method-c-new","(command_server,protocol,transport,portspec,timeout)","<p>@param [Firebind::Portspec] portspec\n"],["new","Firebind::SimpleProtocol","Firebind/SimpleProtocol.html#method-c-new","(guid,echo_host,transport,timeout,state=NIL)","<p>@param [Object] transport\n"],["new","Firebind::TcpTransport","Firebind/TcpTransport.html#method-c-new","(echo_server,timeout)",""],["new","Firebind::Transport","Firebind/Transport.html#method-c-new","(echo_server, timeout)",""],["new","Firebind::UdpTransport","Firebind/UdpTransport.html#method-c-new","(echo_server,timeout)",""],["on_error","Firebind::ScanState","Firebind/ScanState.html#method-i-on_error","(status_code)",""],["on_port_complete","Firebind::ScanState","Firebind/ScanState.html#method-i-on_port_complete","(port,port_result_code)","<p>@param [Object] port\n"],["on_port_start","Firebind::ScanState","Firebind/ScanState.html#method-i-on_port_start","(port)",""],["on_port_tick","Firebind::ScanState","Firebind/ScanState.html#method-i-on_port_tick","()",""],["on_scan_complete","Firebind::ScanState","Firebind/ScanState.html#method-i-on_scan_complete","(status_code)",""],["on_scan_start","Firebind::ScanState","Firebind/ScanState.html#method-i-on_scan_start","(guid,echo_server,port_delay)","<p>lifecycle methods\n"],["on_scan_stop","Firebind::ScanState","Firebind/ScanState.html#method-i-on_scan_stop","()",""],["on_start_failure","Firebind::ScanState","Firebind/ScanState.html#method-i-on_start_failure","(status_code)",""],["open_ports","Firebind::ScanState","Firebind/ScanState.html#method-i-open_ports","()","<p>return a Portspec of the open ports for this scan\n"],["out","Tools","Tools.html#method-i-out","(msg)",""],["output_options","Firebind::Client","Firebind/Client.html#method-i-output_options","()",""],["parsed_options?","Firebind::Client","Firebind/Client.html#method-i-parsed_options-3F","()","<p>figure what arguments we have to work with\n"],["percent_complete","Firebind::ScanState","Firebind/ScanState.html#method-i-percent_complete","()",""],["port_delay_seconds","Firebind::ScanState","Firebind/ScanState.html#method-i-port_delay_seconds","()",""],["port_duration","Firebind::ScanState","Firebind/ScanState.html#method-i-port_duration","()","<p>data methods\n"],["receive","Firebind::TcpTransport","Firebind/TcpTransport.html#method-i-receive","()","<p>Receive echo response from server.\n<p>PAYLOAD_REFUSED_ON_RECV PAYLOAD_ERROR_ON_RECV PAYLOAD_TIMED_OUT_ON_RECV …\n"],["receive","Firebind::UdpTransport","Firebind/UdpTransport.html#method-i-receive","()","<p>Receive echo response from server. Partway through the timeout we’ll call\nsend() again to send more datagrams …\n"],["run","Firebind::Client","Firebind/Client.html#method-i-run","()","<p>Parse options, check arguments, then process the command\n"],["scan","Firebind::Scan","Firebind/Scan.html#method-i-scan","()","<p>Perform the path scan\n"],["send","Firebind::TcpTransport","Firebind/TcpTransport.html#method-i-send","(payload)","<p>Send data to the echo server\n<p>@param [Array payload - array of bytes\n"],["send","Firebind::UdpTransport","Firebind/UdpTransport.html#method-i-send","(payload,num_payloads = 10)","<p>Send data to the echo server, we’ll send multiple copies of the same data.\nSo long as the echo server …\n"],["setup","TestPortspec","TestPortspec.html#method-i-setup","()","<p>Called before every test method runs. Can be used to set up fixture\ninformation.\n"],["size","Firebind::Portspec","Firebind/Portspec.html#method-i-size","()",""],["stop","Firebind::Scan","Firebind/Scan.html#method-i-stop","()",""],["teardown","TestPortspec","TestPortspec.html#method-i-teardown","()","<p>Called after every test method runs. Can be used to tear down fixture\ninformation.\n"],["test_fail","TestPortspec","TestPortspec.html#method-i-test_fail","()","<p>Fake test\n"],["to_s","Firebind::Portspec","Firebind/Portspec.html#method-i-to_s","()",""],["to_s","Firebind::ScanError","Firebind/ScanError.html#method-i-to_s","()",""],["to_s","Firebind::ScanState","Firebind/ScanState.html#method-i-to_s","()",""],["update","Example","Example.html#method-i-update","(state)",""],["update","Firebind::Client","Firebind/Client.html#method-i-update","(state)","<p>scan callback interface @param [Object] state\n"],["verbose","Tools","Tools.html#method-i-verbose","(msg)",""],["LICENSE","","LICENSE_txt.html","","\n<pre> Apache License\n Version 2.0, January 2004\nhttp://www.apache.org/licenses/</pre>\n<p>TERMS AND CONDITIONS …\n"],["README","","README_txt.html","","<p>firescan-ruby\n<p>\n<p>Ruby reference implementation for the Firebind Firescan path scan client\nThis code has been …\n"],["USAGE","","USAGE_txt.html","","<p>Firescan - path scan client\n<p>Synopsis\n\n<pre>This is the Ruby reference implementation for the Firebind Firescan ...</pre>\n"],["VERSION","","VERSION_txt.html","","<p>Firescan Versioning\n<p>Version 0.07 - 12/2/2013 - Inital release\n"],["build","","build.html","","<p>#!/bin/bash rm *.gem rm -rf doc rdoc gem uninstall -x firescan gem build\nfirescan.gemspec gem install …\n"],["created.rid","","doc/created_rid.html","",""],["firescan.gemspec","","firescan_gemspec.html","","<p>Gem::Specification.new do |s|\n\n<pre>s.name = 'firescan'\ns.summary = 'Perform network path scanning'\ns.description ...</pre>\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
|
+
|