yard 0.5.8 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of yard might be problematic. Click here for more details.
- data/.yardopts +2 -0
- data/ChangeLog +1064 -0
- data/README.md +103 -42
- data/Rakefile +3 -2
- data/benchmarks/parsing.rb +2 -1
- data/bin/yard +4 -0
- data/bin/yard-graph +1 -1
- data/bin/yard-server +4 -0
- data/docs/GettingStarted.md +8 -8
- data/docs/Handlers.md +5 -5
- data/docs/Overview.md +5 -5
- data/docs/Parser.md +1 -1
- data/docs/Tags.md +1 -1
- data/docs/Templates.md +27 -6
- data/docs/WhatsNew.md +222 -2
- data/lib/rubygems_plugin.rb +1 -0
- data/lib/yard.rb +7 -1
- data/lib/yard/autoload.rb +46 -6
- data/lib/yard/cli/{base.rb → command.rb} +20 -6
- data/lib/yard/cli/command_parser.rb +87 -0
- data/lib/yard/cli/diff.rb +176 -0
- data/lib/yard/cli/gems.rb +74 -0
- data/lib/yard/cli/{yard_graph.rb → graph.rb} +9 -8
- data/lib/yard/cli/help.rb +18 -0
- data/lib/yard/cli/server.rb +137 -0
- data/lib/yard/cli/stats.rb +210 -0
- data/lib/yard/cli/yardoc.rb +315 -116
- data/lib/yard/cli/yri.rb +45 -4
- data/lib/yard/code_objects/base.rb +73 -30
- data/lib/yard/code_objects/class_object.rb +9 -1
- data/lib/yard/code_objects/method_object.rb +11 -0
- data/lib/yard/code_objects/namespace_object.rb +8 -2
- data/lib/yard/code_objects/proxy.rb +2 -2
- data/lib/yard/core_ext/array.rb +3 -49
- data/lib/yard/core_ext/file.rb +7 -0
- data/lib/yard/core_ext/insertion.rb +60 -0
- data/lib/yard/docstring.rb +34 -7
- data/lib/yard/globals.rb +2 -2
- data/lib/yard/handlers/base.rb +101 -20
- data/lib/yard/handlers/processor.rb +23 -7
- data/lib/yard/handlers/ruby/alias_handler.rb +1 -0
- data/lib/yard/handlers/ruby/attribute_handler.rb +8 -0
- data/lib/yard/handlers/ruby/base.rb +71 -2
- data/lib/yard/handlers/ruby/class_condition_handler.rb +10 -0
- data/lib/yard/handlers/ruby/class_handler.rb +7 -4
- data/lib/yard/handlers/ruby/class_variable_handler.rb +1 -0
- data/lib/yard/handlers/ruby/constant_handler.rb +1 -0
- data/lib/yard/handlers/ruby/exception_handler.rb +1 -0
- data/lib/yard/handlers/ruby/extend_handler.rb +2 -3
- data/lib/yard/handlers/ruby/legacy/alias_handler.rb +1 -0
- data/lib/yard/handlers/ruby/legacy/attribute_handler.rb +2 -0
- data/lib/yard/handlers/ruby/legacy/base.rb +15 -2
- data/lib/yard/handlers/ruby/legacy/class_condition_handler.rb +5 -0
- data/lib/yard/handlers/ruby/legacy/class_handler.rb +7 -4
- data/lib/yard/handlers/ruby/legacy/class_variable_handler.rb +1 -0
- data/lib/yard/handlers/ruby/legacy/constant_handler.rb +1 -0
- data/lib/yard/handlers/ruby/legacy/exception_handler.rb +1 -0
- data/lib/yard/handlers/ruby/legacy/extend_handler.rb +1 -3
- data/lib/yard/handlers/ruby/legacy/method_handler.rb +7 -3
- data/lib/yard/handlers/ruby/legacy/mixin_handler.rb +2 -1
- data/lib/yard/handlers/ruby/legacy/module_handler.rb +1 -0
- data/lib/yard/handlers/ruby/legacy/process_handler.rb +1 -0
- data/lib/yard/handlers/ruby/legacy/visibility_handler.rb +1 -0
- data/lib/yard/handlers/ruby/legacy/yield_handler.rb +1 -0
- data/lib/yard/handlers/ruby/method_condition_handler.rb +1 -0
- data/lib/yard/handlers/ruby/method_handler.rb +5 -1
- data/lib/yard/handlers/ruby/mixin_handler.rb +2 -1
- data/lib/yard/handlers/ruby/module_handler.rb +1 -0
- data/lib/yard/handlers/ruby/process_handler.rb +7 -1
- data/lib/yard/handlers/ruby/struct_handler_methods.rb +3 -0
- data/lib/yard/handlers/ruby/visibility_handler.rb +8 -2
- data/lib/yard/handlers/ruby/yield_handler.rb +1 -0
- data/lib/yard/logging.rb +7 -1
- data/lib/yard/parser/base.rb +1 -0
- data/lib/yard/parser/c_parser.rb +2 -0
- data/lib/yard/parser/ruby/ast_node.rb +82 -63
- data/lib/yard/parser/ruby/legacy/ruby_lex.rb +36 -10
- data/lib/yard/parser/ruby/legacy/ruby_parser.rb +1 -0
- data/lib/yard/parser/ruby/legacy/statement.rb +9 -5
- data/lib/yard/parser/ruby/legacy/statement_list.rb +20 -11
- data/lib/yard/parser/ruby/ruby_parser.rb +18 -1
- data/lib/yard/parser/source_parser.rb +6 -1
- data/lib/yard/registry.rb +284 -278
- data/lib/yard/registry_store.rb +4 -2
- data/lib/yard/serializers/base.rb +30 -13
- data/lib/yard/serializers/file_system_serializer.rb +10 -1
- data/lib/yard/server/adapter.rb +51 -0
- data/lib/yard/server/commands/base.rb +98 -0
- data/lib/yard/server/commands/display_file_command.rb +20 -0
- data/lib/yard/server/commands/display_object_command.rb +50 -0
- data/lib/yard/server/commands/frames_command.rb +31 -0
- data/lib/yard/server/commands/library_command.rb +83 -0
- data/lib/yard/server/commands/library_index_command.rb +23 -0
- data/lib/yard/server/commands/list_command.rb +44 -0
- data/lib/yard/server/commands/search_command.rb +67 -0
- data/lib/yard/server/commands/static_file_command.rb +45 -0
- data/lib/yard/server/doc_server_helper.rb +22 -0
- data/lib/yard/server/doc_server_serializer.rb +29 -0
- data/lib/yard/server/library_version.rb +86 -0
- data/lib/yard/server/rack_adapter.rb +38 -0
- data/lib/yard/server/router.rb +110 -0
- data/lib/yard/server/static_caching.rb +16 -0
- data/lib/yard/server/templates/default/fulldoc/html/css/custom.css +78 -0
- data/lib/yard/server/templates/default/fulldoc/html/images/processing.gif +0 -0
- data/lib/yard/server/templates/default/fulldoc/html/js/autocomplete.js +12 -0
- data/lib/yard/server/templates/default/fulldoc/html/js/live.js +32 -0
- data/lib/yard/server/templates/default/layout/html/breadcrumb.erb +46 -0
- data/lib/yard/server/templates/default/layout/html/headers.erb +11 -0
- data/lib/yard/server/templates/doc_server/frames/html/frames.erb +13 -0
- data/lib/yard/server/templates/doc_server/frames/html/setup.rb +3 -0
- data/lib/yard/server/templates/doc_server/full_list/html/full_list.erb +34 -0
- data/lib/yard/server/templates/doc_server/full_list/html/setup.rb +10 -0
- data/lib/yard/server/templates/doc_server/library_list/html/contents.erb +13 -0
- data/lib/yard/server/templates/doc_server/library_list/html/headers.erb +26 -0
- data/lib/yard/server/templates/doc_server/library_list/html/library_list.erb +12 -0
- data/lib/yard/server/templates/doc_server/library_list/html/setup.rb +3 -0
- data/lib/yard/server/templates/doc_server/library_list/html/title.erb +2 -0
- data/lib/yard/server/templates/doc_server/processing/html/processing.erb +51 -0
- data/lib/yard/server/templates/doc_server/processing/html/setup.rb +3 -0
- data/lib/yard/server/templates/doc_server/search/html/search.erb +19 -0
- data/lib/yard/server/templates/doc_server/search/html/setup.rb +8 -0
- data/lib/yard/server/webrick_adapter.rb +38 -0
- data/lib/yard/tags/default_factory.rb +0 -5
- data/lib/yard/tags/library.rb +61 -22
- data/lib/yard/tags/tag.rb +26 -4
- data/lib/yard/templates/engine.rb +12 -1
- data/lib/yard/templates/erb_cache.rb +2 -1
- data/lib/yard/templates/helpers/base_helper.rb +96 -3
- data/lib/yard/templates/helpers/filter_helper.rb +5 -0
- data/lib/yard/templates/helpers/html_helper.rb +204 -94
- data/lib/yard/templates/helpers/html_syntax_highlight_helper.rb +4 -0
- data/lib/yard/templates/helpers/markup_helper.rb +58 -3
- data/lib/yard/templates/helpers/method_helper.rb +7 -0
- data/lib/yard/templates/helpers/module_helper.rb +5 -0
- data/lib/yard/templates/helpers/text_helper.rb +10 -1
- data/lib/yard/templates/helpers/uml_helper.rb +13 -0
- data/lib/yard/templates/section.rb +106 -0
- data/lib/yard/templates/template.rb +20 -19
- data/lib/yard/verifier.rb +21 -2
- data/spec/cli/command_parser_spec.rb +43 -0
- data/spec/cli/diff_spec.rb +170 -0
- data/spec/cli/help_spec.rb +22 -0
- data/spec/cli/server_spec.rb +140 -0
- data/spec/cli/stats_spec.rb +75 -0
- data/spec/cli/yardoc_spec.rb +438 -182
- data/spec/cli/yri_spec.rb +13 -1
- data/spec/code_objects/base_spec.rb +51 -6
- data/spec/code_objects/class_object_spec.rb +15 -1
- data/spec/code_objects/method_object_spec.rb +29 -0
- data/spec/code_objects/namespace_object_spec.rb +150 -129
- data/spec/core_ext/array_spec.rb +4 -23
- data/spec/core_ext/insertion_spec.rb +37 -0
- data/spec/docstring_spec.rb +63 -0
- data/spec/handlers/attribute_handler_spec.rb +4 -0
- data/spec/handlers/base_spec.rb +98 -26
- data/spec/handlers/class_handler_spec.rb +5 -1
- data/spec/handlers/examples/attribute_handler_001.rb.txt +5 -0
- data/spec/handlers/examples/class_handler_001.rb.txt +4 -0
- data/spec/handlers/examples/module_handler_001.rb.txt +6 -1
- data/spec/handlers/examples/visibility_handler_001.rb.txt +4 -0
- data/spec/handlers/method_handler_spec.rb +5 -0
- data/spec/handlers/module_handler_spec.rb +4 -0
- data/spec/handlers/visibility_handler_spec.rb +6 -0
- data/spec/parser/source_parser_spec.rb +24 -0
- data/spec/registry_spec.rb +44 -8
- data/spec/server/adapter_spec.rb +38 -0
- data/spec/server/commands/base_spec.rb +87 -0
- data/spec/server/commands/static_file_command_spec.rb +67 -0
- data/spec/server/doc_server_serializer_spec.rb +58 -0
- data/spec/server/router_spec.rb +115 -0
- data/spec/server/spec_helper.rb +17 -0
- data/spec/server/static_caching_spec.rb +39 -0
- data/spec/server/webrick_servlet_spec.rb +20 -0
- data/spec/templates/constant_spec.rb +40 -0
- data/spec/templates/engine_spec.rb +9 -5
- data/spec/templates/examples/class002.html +1 -3
- data/spec/templates/examples/constant001.txt +25 -0
- data/spec/templates/examples/constant002.txt +7 -0
- data/spec/templates/examples/constant003.txt +11 -0
- data/spec/templates/examples/module001.txt +1 -1
- data/spec/templates/examples/module002.html +319 -0
- data/spec/templates/helpers/base_helper_spec.rb +2 -2
- data/spec/templates/helpers/html_helper_spec.rb +93 -3
- data/spec/templates/helpers/html_syntax_highlight_helper_spec.rb +5 -0
- data/spec/templates/helpers/markup_helper_spec.rb +94 -67
- data/spec/templates/helpers/shared_signature_examples.rb +9 -0
- data/spec/templates/helpers/text_helper_spec.rb +12 -0
- data/spec/templates/module_spec.rb +21 -4
- data/spec/templates/section_spec.rb +146 -0
- data/spec/templates/template_spec.rb +9 -20
- data/templates/default/class/setup.rb +5 -5
- data/templates/default/constant/text/header.erb +11 -0
- data/templates/default/constant/text/setup.rb +3 -0
- data/templates/default/fulldoc/html/css/style.css +29 -3
- data/templates/default/fulldoc/html/js/app.js +67 -1
- data/templates/default/fulldoc/html/js/full_list.js +3 -8
- data/templates/default/fulldoc/html/js/jquery.js +150 -15
- data/templates/default/fulldoc/html/setup.rb +9 -0
- data/templates/default/layout/html/footer.erb +1 -1
- data/templates/default/layout/html/setup.rb +7 -25
- data/templates/default/method_details/html/source.erb +1 -1
- data/templates/default/module/html/attribute_summary.erb +2 -2
- data/templates/default/module/html/method_summary.erb +2 -2
- data/templates/default/module/setup.rb +27 -4
- data/templates/default/onefile/html/files.erb +5 -0
- data/templates/default/onefile/html/layout.erb +22 -0
- data/templates/default/onefile/html/readme.erb +3 -0
- data/templates/default/onefile/html/setup.rb +40 -0
- data/templates/default/root/html/setup.rb +1 -0
- data/templates/default/tags/setup.rb +26 -33
- metadata +80 -10
@@ -0,0 +1,16 @@
|
|
1
|
+
module YARD
|
2
|
+
module Server
|
3
|
+
module StaticCaching
|
4
|
+
def check_static_cache
|
5
|
+
return nil unless adapter.document_root
|
6
|
+
cache_path = File.join(adapter.document_root, request.path.sub(/\.html$/, '') + '.html')
|
7
|
+
cache_path = cache_path.sub(%r{/\.html$}, '.html')
|
8
|
+
if File.file?(cache_path)
|
9
|
+
log.debug "Loading cache from disk: #{cache_path}"
|
10
|
+
return [200, {'Content-Type' => 'text/html'}, [File.read_binary(cache_path)]]
|
11
|
+
end
|
12
|
+
nil
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
#search_results h1 { margin-bottom: 0; }
|
2
|
+
#search_results p { margin-top: 0; margin-bottom: 25px; }
|
3
|
+
#search_results ul { list-style-position: inside; padding-left: 0; list-style: none; }
|
4
|
+
#search_results ul li { padding: 7px 15px; font-size: 1.1em; }
|
5
|
+
|
6
|
+
#search_frame { z-index: 9999; }
|
7
|
+
|
8
|
+
form.search {
|
9
|
+
position: relative;
|
10
|
+
color: #fff;
|
11
|
+
margin-top: 3px; padding: 7px; border: 1px solid #99f; width: 315px; background: #05a;
|
12
|
+
-moz-border-radius: 4px; -webkit-border-radius: 4px;
|
13
|
+
margin-bottom: 10px;
|
14
|
+
}
|
15
|
+
form.search input { margin-left: 5px; width: 250px; border: 1px solid #99f; -moz-border-radius: 3px; font-family: monospace; }
|
16
|
+
|
17
|
+
#menu { padding-top: 5px; }
|
18
|
+
#content h1 { margin-top: 0; border-top: 0; }
|
19
|
+
|
20
|
+
#content.error { font-size: 1.2em; }
|
21
|
+
#content.error p tt { font-size: 1.2em; }
|
22
|
+
#content.error .note { padding: 12px; }
|
23
|
+
|
24
|
+
.signature .permalink { float: right; font-size: 0.9em; }
|
25
|
+
|
26
|
+
/* autocomplete */
|
27
|
+
.ac_results {
|
28
|
+
padding: 0px;
|
29
|
+
border: 1px solid black;
|
30
|
+
width: 500px;
|
31
|
+
overflow: hidden;
|
32
|
+
z-index: 99999;
|
33
|
+
}
|
34
|
+
|
35
|
+
.ac_results ul {
|
36
|
+
width: 100%;
|
37
|
+
list-style-position: outside;
|
38
|
+
list-style: none;
|
39
|
+
padding: 0;
|
40
|
+
margin: 0;
|
41
|
+
}
|
42
|
+
|
43
|
+
.ac_results li {
|
44
|
+
cursor: pointer;
|
45
|
+
margin: 0px;
|
46
|
+
padding: 3px;
|
47
|
+
display: block;
|
48
|
+
font-family: sans-serif;
|
49
|
+
font-size: 12px;
|
50
|
+
line-height: 16px;
|
51
|
+
overflow: hidden;
|
52
|
+
|
53
|
+
}
|
54
|
+
|
55
|
+
.ac_loading {
|
56
|
+
background: white url('/images/loading.gif') right center no-repeat;
|
57
|
+
}
|
58
|
+
|
59
|
+
.ac_even {
|
60
|
+
background: #fafafa; border: 1px dotted #fafafa; border-left-width: 0; border-right-width: 0;
|
61
|
+
}
|
62
|
+
|
63
|
+
.ac_odd {
|
64
|
+
background: #f0f0f0; border: 1px dotted #f0f0f0; border-left-width: 0; border-right-width: 0;
|
65
|
+
}
|
66
|
+
|
67
|
+
.ac_over {
|
68
|
+
background: #ddd; cursor: pointer; border: 1px dotted #fff; border-left-width: 0; border-right-width: 0;
|
69
|
+
}
|
70
|
+
|
71
|
+
#fade { display: none; position: absolute; top: 0px; left: 0; background: #eee; z-index: -1; width: 100%; height: 100%; border-top: 1px solid #e0e0e0; }
|
72
|
+
#processing {
|
73
|
+
position: absolute; width: 400px; height: 200px; margin: auto; background: #fff; padding: 10px 30px; z-index: 20;
|
74
|
+
-webkit-box-shadow: 0px 0px 20px #444; -moz-box-shadow: 0px 0px 20px #444;
|
75
|
+
-webkit-border-radius: 4px;
|
76
|
+
display: none;
|
77
|
+
}
|
78
|
+
#processing img { display: block; position: absolute; bottom: 30px; left: 44%; }
|
@@ -0,0 +1,12 @@
|
|
1
|
+
/*
|
2
|
+
* jQuery Autocomplete plugin 1.1
|
3
|
+
*
|
4
|
+
* Copyright (c) 2009 Jörn Zaefferer
|
5
|
+
*
|
6
|
+
* Dual licensed under the MIT and GPL licenses:
|
7
|
+
* http://www.opensource.org/licenses/mit-license.php
|
8
|
+
* http://www.gnu.org/licenses/gpl.html
|
9
|
+
*
|
10
|
+
* Revision: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $
|
11
|
+
*/
|
12
|
+
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';(3($){$.2e.1u({19:3(b,d){5 c=W b=="1B";d=$.1u({},$.M.1T,{Y:c?b:P,y:c?P:b,1J:c?$.M.1T.1J:10,X:d&&!d.1D?10:48},d);d.1y=d.1y||3(a){6 a};d.1v=d.1v||d.1R;6 A.I(3(){1M $.M(A,d)})},L:3(a){6 A.11("L",a)},1k:3(a){6 A.14("1k",[a])},2b:3(){6 A.14("2b")},28:3(a){6 A.14("28",[a])},24:3(){6 A.14("24")}});$.M=3(o,r){5 t={2Y:38,2S:40,2N:46,2I:9,2E:13,2B:27,2x:3I,2v:33,2p:34,2n:8};5 u=$(o).3r("19","3o").Q(r.2Q);5 p;5 m="";5 n=$.M.3c(r);5 s=0;5 k;5 h={1F:C};5 l=$.M.32(r,o,1Z,h);5 j;$.1Y.2X&&$(o.2U).11("45.19",3(){4(j){j=C;6 C}});u.11(($.1Y.2X?"43":"42")+".19",3(a){s=1;k=a.2M;3V(a.2M){O t.2Y:a.1d();4(l.N()){l.30()}w{12(0,D)}R;O t.2S:a.1d();4(l.N()){l.2D()}w{12(0,D)}R;O t.2v:a.1d();4(l.N()){l.2C()}w{12(0,D)}R;O t.2p:a.1d();4(l.N()){l.2A()}w{12(0,D)}R;O r.17&&$.1c(r.S)==","&&t.2x:O t.2I:O t.2E:4(1Z()){a.1d();j=D;6 C}R;O t.2B:l.Z();R;3J:1P(p);p=1O(12,r.1J);R}}).2t(3(){s++}).3E(3(){s=0;4(!h.1F){2r()}}).2q(3(){4(s++>1&&!l.N()){12(0,D)}}).11("1k",3(){5 c=(1r.7>1)?1r[1]:P;3 1N(q,a){5 b;4(a&&a.7){16(5 i=0;i<a.7;i++){4(a[i].L.J()==q.J()){b=a[i];R}}}4(W c=="3")c(b);w u.14("L",b&&[b.y,b.F])}$.I(15(u.K()),3(i,a){21(a,1N,1N)})}).11("2b",3(){n.1o()}).11("28",3(){$.1u(r,1r[1]);4("y"2h 1r[1])n.1e()}).11("24",3(){l.1p();u.1p();$(o.2U).1p(".19")});3 1Z(){5 e=l.2g();4(!e)6 C;5 v=e.L;m=v;4(r.17){5 b=15(u.K());4(b.7>1){5 f=r.S.7;5 c=$(o).18().1I;5 d,1H=0;$.I(b,3(i,a){1H+=a.7;4(c<=1H){d=i;6 C}1H+=f});b[d]=v;v=b.3f(r.S)}v+=r.S}u.K(v);1l();u.14("L",[e.y,e.F]);6 D}3 12(b,c){4(k==t.2N){l.Z();6}5 a=u.K();4(!c&&a==m)6;m=a;a=1m(a);4(a.7>=r.29){u.Q(r.26);4(!r.1s)a=a.J();21(a,3a,1l)}w{1q();l.Z()}};3 15(b){4(!b)6[""];4(!r.17)6[$.1c(b)];6 $.4h(b.23(r.S),3(a){6 $.1c(b).7?$.1c(a):P})}3 1m(a){4(!r.17)6 a;5 c=15(a);4(c.7==1)6 c[0];5 b=$(o).18().1I;4(b==a.7){c=15(a)}w{c=15(a.22(a.37(b),""))}6 c[c.7-1]}3 1G(q,a){4(r.1G&&(1m(u.K()).J()==q.J())&&k!=t.2n){u.K(u.K()+a.37(1m(m).7));$(o).18(m.7,m.7+a.7)}};3 2r(){1P(p);p=1O(1l,4g)};3 1l(){5 c=l.N();l.Z();1P(p);1q();4(r.36){u.1k(3(a){4(!a){4(r.17){5 b=15(u.K()).1n(0,-1);u.K(b.3f(r.S)+(b.7?r.S:""))}w{u.K("");u.14("L",P)}}})}};3 3a(q,a){4(a&&a.7&&s){1q();l.35(a,q);1G(q,a[0].F);l.20()}w{1l()}};3 21(f,d,g){4(!r.1s)f=f.J();5 e=n.31(f);4(e&&e.7){d(f,e)}w 4((W r.Y=="1B")&&(r.Y.7>0)){5 c={4f:+1M 4e()};$.I(r.2Z,3(a,b){c[a]=W b=="3"?b():b});$.4d({4c:"4b",4a:"19"+o.49,2V:r.2V,Y:r.Y,y:$.1u({q:1m(f),47:r.X},c),44:3(a){5 b=r.1A&&r.1A(a)||1A(a);n.1i(f,b);d(f,b)}})}w{l.2T();g(f)}};3 1A(c){5 d=[];5 b=c.23("\\n");16(5 i=0;i<b.7;i++){5 a=$.1c(b[i]);4(a){a=a.23("|");d[d.7]={y:a,F:a[0],L:r.1z&&r.1z(a,a[0])||a[0]}}}6 d};3 1q(){u.1h(r.26)}};$.M.1T={2Q:"41",2P:"3Z",26:"3Y",29:1,1J:3W,1s:C,1f:D,1w:C,1g:10,X:3U,36:C,2Z:{},1X:D,1R:3(a){6 a[0]},1v:P,1G:C,E:0,17:C,S:", ",1y:3(b,a){6 b.22(1M 3T("(?![^&;]+;)(?!<[^<>]*)("+a.22(/([\\^\\$\\(\\)\\[\\]\\{\\}\\*\\.\\+\\?\\|\\\\])/2K,"\\\\$1")+")(?![^<>]*>)(?![^&;]+;)","2K"),"<2J>$1</2J>")},1D:D,1E:3S};$.M.3c=3(g){5 h={};5 j=0;3 1f(s,a){4(!g.1s)s=s.J();5 i=s.2H(a);4(g.1w=="3R"){i=s.J().1k("\\\\b"+a.J())}4(i==-1)6 C;6 i==0||g.1w};3 1i(q,a){4(j>g.1g){1o()}4(!h[q]){j++}h[q]=a}3 1e(){4(!g.y)6 C;5 f={},2G=0;4(!g.Y)g.1g=1;f[""]=[];16(5 i=0,2F=g.y.7;i<2F;i++){5 c=g.y[i];c=(W c=="1B")?[c]:c;5 d=g.1v(c,i+1,g.y.7);4(d===C)1V;5 e=d.3Q(0).J();4(!f[e])f[e]=[];5 b={F:d,y:c,L:g.1z&&g.1z(c)||d};f[e].1U(b);4(2G++<g.X){f[""].1U(b)}};$.I(f,3(i,a){g.1g++;1i(i,a)})}1O(1e,25);3 1o(){h={};j=0}6{1o:1o,1i:1i,1e:1e,31:3(q){4(!g.1g||!j)6 P;4(!g.Y&&g.1w){5 a=[];16(5 k 2h h){4(k.7>0){5 c=h[k];$.I(c,3(i,x){4(1f(x.F,q)){a.1U(x)}})}}6 a}w 4(h[q]){6 h[q]}w 4(g.1f){16(5 i=q.7-1;i>=g.29;i--){5 c=h[q.3O(0,i)];4(c){5 a=[];$.I(c,3(i,x){4(1f(x.F,q)){a[a.7]=x}});6 a}}}6 P}}};$.M.32=3(e,g,f,k){5 h={H:"3N"};5 j,z=-1,y,1t="",1S=D,G,B;3 2y(){4(!1S)6;G=$("<3M/>").Z().Q(e.2P).T("3L","3K").1Q(1K.2w);B=$("<3H/>").1Q(G).3G(3(a){4(U(a).2u&&U(a).2u.3F()==\'2s\'){z=$("1L",B).1h(h.H).3D(U(a));$(U(a)).Q(h.H)}}).2q(3(a){$(U(a)).Q(h.H);f();g.2t();6 C}).3C(3(){k.1F=D}).3B(3(){k.1F=C});4(e.E>0)G.T("E",e.E);1S=C}3 U(a){5 b=a.U;3A(b&&b.3z!="2s")b=b.3y;4(!b)6[];6 b}3 V(b){j.1n(z,z+1).1h(h.H);2o(b);5 a=j.1n(z,z+1).Q(h.H);4(e.1D){5 c=0;j.1n(0,z).I(3(){c+=A.1a});4((c+a[0].1a-B.1b())>B[0].3x){B.1b(c+a[0].1a-B.3w())}w 4(c<B.1b()){B.1b(c)}}};3 2o(a){z+=a;4(z<0){z=j.1j()-1}w 4(z>=j.1j()){z=0}}3 2m(a){6 e.X&&e.X<a?e.X:a}3 2l(){B.2z();5 b=2m(y.7);16(5 i=0;i<b;i++){4(!y[i])1V;5 a=e.1R(y[i].y,i+1,b,y[i].F,1t);4(a===C)1V;5 c=$("<1L/>").3v(e.1y(a,1t)).Q(i%2==0?"3u":"3P").1Q(B)[0];$.y(c,"2k",y[i])}j=B.3t("1L");4(e.1X){j.1n(0,1).Q(h.H);z=0}4($.2e.2W)B.2W()}6{35:3(d,q){2y();y=d;1t=q;2l()},2D:3(){V(1)},30:3(){V(-1)},2C:3(){4(z!=0&&z-8<0){V(-z)}w{V(-8)}},2A:3(){4(z!=j.1j()-1&&z+8>j.1j()){V(j.1j()-1-z)}w{V(8)}},Z:3(){G&&G.Z();j&&j.1h(h.H);z=-1},N:3(){6 G&&G.3s(":N")},3q:3(){6 A.N()&&(j.2j("."+h.H)[0]||e.1X&&j[0])},20:3(){5 a=$(g).3p();G.T({E:W e.E=="1B"||e.E>0?e.E:$(g).E(),2i:a.2i+g.1a,1W:a.1W}).20();4(e.1D){B.1b(0);B.T({2L:e.1E,3n:\'3X\'});4($.1Y.3m&&W 1K.2w.3l.2L==="1x"){5 c=0;j.I(3(){c+=A.1a});5 b=c>e.1E;B.T(\'3k\',b?e.1E:c);4(!b){j.E(B.E()-2R(j.T("2O-1W"))-2R(j.T("2O-3j")))}}}},2g:3(){5 a=j&&j.2j("."+h.H).1h(h.H);6 a&&a.7&&$.y(a[0],"2k")},2T:3(){B&&B.2z()},1p:3(){G&&G.3i()}}};$.2e.18=3(b,f){4(b!==1x){6 A.I(3(){4(A.2d){5 a=A.2d();4(f===1x||b==f){a.4n("2c",b);a.3h()}w{a.4m(D);a.4l("2c",b);a.4k("2c",f);a.3h()}}w 4(A.3g){A.3g(b,f)}w 4(A.1C){A.1C=b;A.3e=f}})}5 c=A[0];4(c.2d){5 e=1K.18.4j(),3d=c.F,2a="<->",2f=e.3b.7;e.3b=2a;5 d=c.F.2H(2a);c.F=3d;A.18(d,d+2f);6{1I:d,39:d+2f}}w 4(c.1C!==1x){6{1I:c.1C,39:c.3e}}}})(4i);',62,272,'|||function|if|var|return|length|||||||||||||||||||||||||else||data|active|this|list|false|true|width|value|element|ACTIVE|each|toLowerCase|val|result|Autocompleter|visible|case|null|addClass|break|multipleSeparator|css|target|moveSelect|typeof|max|url|hide||bind|onChange||trigger|trimWords|for|multiple|selection|autocomplete|offsetHeight|scrollTop|trim|preventDefault|populate|matchSubset|cacheLength|removeClass|add|size|search|hideResultsNow|lastWord|slice|flush|unbind|stopLoading|arguments|matchCase|term|extend|formatMatch|matchContains|undefined|highlight|formatResult|parse|string|selectionStart|scroll|scrollHeight|mouseDownOnSelect|autoFill|progress|start|delay|document|li|new|findValueCallback|setTimeout|clearTimeout|appendTo|formatItem|needsInit|defaults|push|continue|left|selectFirst|browser|selectCurrent|show|request|replace|split|unautocomplete||loadingClass||setOptions|minChars|teststring|flushCache|character|createTextRange|fn|textLength|selected|in|top|filter|ac_data|fillList|limitNumberOfItems|BACKSPACE|movePosition|PAGEDOWN|click|hideResults|LI|focus|nodeName|PAGEUP|body|COMMA|init|empty|pageDown|ESC|pageUp|next|RETURN|ol|nullData|indexOf|TAB|strong|gi|maxHeight|keyCode|DEL|padding|resultsClass|inputClass|parseInt|DOWN|emptyList|form|dataType|bgiframe|opera|UP|extraParams|prev|load|Select|||display|mustMatch|substring||end|receiveData|text|Cache|orig|selectionEnd|join|setSelectionRange|select|remove|right|height|style|msie|overflow|off|offset|current|attr|is|find|ac_even|html|innerHeight|clientHeight|parentNode|tagName|while|mouseup|mousedown|index|blur|toUpperCase|mouseover|ul|188|default|absolute|position|div|ac_over|substr|ac_odd|charAt|word|180|RegExp|100|switch|400|auto|ac_loading|ac_results||ac_input|keydown|keypress|success|submit||limit|150|name|port|abort|mode|ajax|Date|timestamp|200|map|jQuery|createRange|moveEnd|moveStart|collapse|move'.split('|'),0,{}))
|
@@ -0,0 +1,32 @@
|
|
1
|
+
function searchFrameLinks() {
|
2
|
+
$('#method_list_link').unbind("click").click(function() {
|
3
|
+
toggleSearchFrame(this, '/' + library + '/methods');
|
4
|
+
});
|
5
|
+
|
6
|
+
$('#class_list_link').unbind("click").click(function() {
|
7
|
+
toggleSearchFrame(this, '/' + library + '/class');
|
8
|
+
});
|
9
|
+
|
10
|
+
$('#file_list_link').unbind("click").click(function() {
|
11
|
+
toggleSearchFrame(this, '/' + library + '/files');
|
12
|
+
});
|
13
|
+
}
|
14
|
+
|
15
|
+
function methodPermalinks() {
|
16
|
+
if ($($('#content h1')[0]).text().match(/^Method:/)) return;
|
17
|
+
|
18
|
+
$('#method_details .signature, #constructor_details .signature, ' +
|
19
|
+
'.method_details .signature, #method_missing_details .signature').each(function() {
|
20
|
+
var id = this.id;
|
21
|
+
var match = id.match(/^(.+?)-(class|instance)_method$/);
|
22
|
+
if (match) {
|
23
|
+
var name = match[1];
|
24
|
+
var scope = match[2] == "class" ? "." : ":";
|
25
|
+
var url = window.location.pathname + scope + escape(name);
|
26
|
+
$(this).prepend('<a class="permalink" href="' + url + '">permalink</a>');
|
27
|
+
}
|
28
|
+
});
|
29
|
+
}
|
30
|
+
|
31
|
+
$(searchFrameLinks);
|
32
|
+
$(methodPermalinks);
|
@@ -0,0 +1,46 @@
|
|
1
|
+
<form class="search" method="get" action="/<%= base_path(router.search_prefix) %>">
|
2
|
+
Search: <input name="q" type="search" placeholder="Search" id="search_box" size="30" value="<%= @query %>" />
|
3
|
+
</form>
|
4
|
+
<script type="text/javascript" charset="utf-8">
|
5
|
+
$(function() {
|
6
|
+
$('#search_box').autocomplete('/<%= base_path(router.search_prefix) %>', {
|
7
|
+
width: document.body.className == 'frames' ? 250 : 340,
|
8
|
+
formatItem: function(item) {
|
9
|
+
var values = item[0].split(",");
|
10
|
+
return values[0] + (values[1] == '' ? "" : " <small>(" + values[1] + ")</small>");
|
11
|
+
}
|
12
|
+
}).result(function(event, item) {
|
13
|
+
var values = item[0].split(",")
|
14
|
+
$('#search_box').val(values[1]);
|
15
|
+
location.href = values[3];
|
16
|
+
return false;
|
17
|
+
});
|
18
|
+
});
|
19
|
+
</script>
|
20
|
+
<style>
|
21
|
+
.frames form.search { position: absolute; right: 14px; top: -6px; padding-top: 10px; }
|
22
|
+
.frames #menu .noframes { float: none; }
|
23
|
+
.frames #menu { float: left; }
|
24
|
+
.frames #content h1 { margin-top: 15px; }
|
25
|
+
</style>
|
26
|
+
|
27
|
+
<div id="menu">
|
28
|
+
<% unless @single_library %>
|
29
|
+
<a href="/<%= router.docs_prefix %>" target="_top">Libraries</a> »
|
30
|
+
<span class="title"><%= @library.name %> <% if @library.version %><small>(<%= @library.version %>)</small><% end %></span>
|
31
|
+
<% end %>
|
32
|
+
<% if object.is_a?(CodeObjects::Base) && @file.nil? %>
|
33
|
+
<% unless @single_library %>»<% end %>
|
34
|
+
<a href="/<%= base_path(router.docs_prefix) %>"><% if object.root? || object.type == :method %>Index<% else %>Index (<%= object.name.to_s[0] %>)<% end %></a> »
|
35
|
+
<%= @breadcrumb.map {|obj| "<span class='title'>" + linkify(obj, obj.name) + "</span>" }.join(" » ") %>
|
36
|
+
<%= @breadcrumb.size > 0 ? " » " : "" %>
|
37
|
+
<span class='title'><%= object.root? ? "Top Level Namespace" : object.name(true) %></span>
|
38
|
+
<% else %>
|
39
|
+
<% if (@breadcrumb_title || object != '_index.html') && !@single_library %>» <% end %>
|
40
|
+
<% if object != '_index.html' %><a href="/<%= base_path(router.docs_prefix) %>">Index</a> » <% end %>
|
41
|
+
<span class='title'><%= @breadcrumb_title %></span>
|
42
|
+
<% end %>
|
43
|
+
|
44
|
+
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
45
|
+
</div>
|
46
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<meta name="Content-Type" content="text/html; charset=UTF-8" />
|
2
|
+
<title><%= @page_title %></title>
|
3
|
+
<link rel="stylesheet" href="/css/style.css" type="text/css" media="screen" charset="utf-8" />
|
4
|
+
<link rel="stylesheet" href="/css/custom.css" type="text/css" media="screen" charset="utf-8" />
|
5
|
+
<script type="text/javascript" charset="utf-8" src="/js/jquery.js"></script>
|
6
|
+
<script type="text/javascript" charset="utf-8" src="/js/autocomplete.js"></script>
|
7
|
+
<script type="text/javascript" charset="utf-8" src="/js/app.js"></script>
|
8
|
+
<script type="text/javascript" charset="utf-8" src="/js/live.js"></script>
|
9
|
+
<script type="text/javascript" charset="utf-8">
|
10
|
+
library = '<%= base_path(router.list_prefix) %>';
|
11
|
+
</script>
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
|
3
|
+
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
7
|
+
<title><%= @page_title %></title>
|
8
|
+
</head>
|
9
|
+
<frameset cols="20%,*">
|
10
|
+
<frame name="list" src="/<%= base_path(router.list_prefix) %>/class" />
|
11
|
+
<frame name="main" src="<%= @main_url %>" />
|
12
|
+
</frameset>
|
13
|
+
</html>
|
@@ -0,0 +1,34 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta name="Content-Type" content="text/html; charset=<%= charset %>" />
|
6
|
+
<link rel="stylesheet" href="/css/full_list.css" type="text/css" media="screen" charset="utf-8" />
|
7
|
+
<link rel="stylesheet" href="/css/common.css" type="text/css" media="screen" charset="utf-8" />
|
8
|
+
<script type="text/javascript" charset="utf-8" src="/js/jquery.js"></script>
|
9
|
+
<script type="text/javascript" charset="utf-8" src="/js/full_list.js"></script>
|
10
|
+
<base id="base_target" target="_parent" />
|
11
|
+
</head>
|
12
|
+
<body>
|
13
|
+
<script type="text/javascript" charset="utf-8">
|
14
|
+
if (window.top.frames.main) {
|
15
|
+
document.getElementById('base_target').target = 'main';
|
16
|
+
document.body.className = 'frames';
|
17
|
+
}
|
18
|
+
</script>
|
19
|
+
<div id="content">
|
20
|
+
<h1 id="full_list_header"><%= @list_title %></h1>
|
21
|
+
<div id="nav">
|
22
|
+
<a target="_self" href="/<%= base_path(router.list_prefix) %>/class">Classes</a> |
|
23
|
+
<a target="_self" href="/<%= base_path(router.list_prefix) %>/methods">Methods</a> |
|
24
|
+
<a target="_self" href="/<%= base_path(router.list_prefix) %>/files">Files</a>
|
25
|
+
</div>
|
26
|
+
<div id="search">Search: <input type="text" /></div>
|
27
|
+
|
28
|
+
<ul id="full_list" class="<%= @list_type %>">
|
29
|
+
<%= erb "full_list_#{@list_type}" %>
|
30
|
+
</ul>
|
31
|
+
</div>
|
32
|
+
</body>
|
33
|
+
</html>
|
34
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
<ul>
|
2
|
+
<% @libraries.sort_by {|name, y| name.downcase }.each do |name, library_versions| %>
|
3
|
+
<li class="r<%= @row = @row == 1 ? 2 : 1 %>">
|
4
|
+
<% library_versions = library_versions.dup %>
|
5
|
+
<% first_lib = library_versions.pop %>
|
6
|
+
<a href="/<%= router.docs_prefix %>/<%= first_lib %>/frames"><%= name %></a>
|
7
|
+
<% if first_lib.version %>
|
8
|
+
<small>(<%= first_lib.version %><% if library_versions.size > 0 %>,
|
9
|
+
<%= library_versions.reverse.map {|lib| "<a href=\"/#{router.docs_prefix}/#{lib}/frames\">#{lib.version}</a>" }.join(', ') %><% end %>)</small>
|
10
|
+
<% end %>
|
11
|
+
</li>
|
12
|
+
<% end %>
|
13
|
+
</ul>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<meta name="Content-Type" content="text/html; charset=UTF-8" />
|
2
|
+
<title>YARD Documentation Server <%= YARD::VERSION %> - Library Listing</title>
|
3
|
+
<link rel="stylesheet" href="/css/style.css" type="text/css" media="screen" charset="utf-8" />
|
4
|
+
<link rel="stylesheet" href="/css/custom.css" type="text/css" media="screen" charset="utf-8" />
|
5
|
+
<script type="text/javascript" charset="utf-8" src="/js/jquery.js"></script>
|
6
|
+
<script type="text/javascript">
|
7
|
+
function framesLinks() {
|
8
|
+
$('#framelink').toggle(function() {
|
9
|
+
$(this).text('links with frames');
|
10
|
+
$('ul li a').each(function() {
|
11
|
+
$(this).attr('href', $(this).attr('href').replace(/\/frames$/, ''));
|
12
|
+
});
|
13
|
+
}, function() {
|
14
|
+
$(this).text('links without frames');
|
15
|
+
$('ul li a').each(function() {
|
16
|
+
$(this).attr('href', $(this).attr('href') + '/frames');
|
17
|
+
});
|
18
|
+
})
|
19
|
+
}
|
20
|
+
|
21
|
+
$(framesLinks);
|
22
|
+
</script>
|
23
|
+
<style type="text/css" media="screen">
|
24
|
+
ul { list-style: circle inside none; padding: 0; }
|
25
|
+
li { font-size: 1.2em; line-height: 1.4em; padding: 3px 5px; }
|
26
|
+
</style>
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
4
|
+
<head>
|
5
|
+
<%= erb(:headers) %>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<div id="content">
|
9
|
+
<%= yieldall %>
|
10
|
+
</div>
|
11
|
+
</body>
|
12
|
+
</html>
|
@@ -0,0 +1,51 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html>
|
4
|
+
<head>
|
5
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
+
<link rel="stylesheet" href="/css/style.css" type="text/css" media="screen" charset="utf-8" />
|
7
|
+
<link rel="stylesheet" href="/css/custom.css" type="text/css" media="screen" charset="utf-8" />
|
8
|
+
<script type="text/javascript" charset="utf-8" src="/js/jquery.js"></script>
|
9
|
+
<script type="text/javascript" charset="utf-8">
|
10
|
+
function checkPage() {
|
11
|
+
$.ajax({cache: false, url: "<%= @path %>", success: function() { window.location = "<%= @path %>"; } });
|
12
|
+
setTimeout('checkPage()', 2000);
|
13
|
+
}
|
14
|
+
function setFade() {
|
15
|
+
centerMessage();
|
16
|
+
$(window).resize(function() { centerMessage(); });
|
17
|
+
$('#fade').fadeIn();
|
18
|
+
$('#processing').fadeIn();
|
19
|
+
}
|
20
|
+
function centerMessage() {
|
21
|
+
$('#fade').css('width', $(window).width() + 'px');
|
22
|
+
$('#fade').css('height', $(window).height() - parseInt($('#fade').css('top')) + 'px');
|
23
|
+
$('#processing').css('left', ($(window).width() / 2 - $('#processing').width() / 2) + 'px');
|
24
|
+
$('#processing').css('top', ($(window).height() / 2 - $('#processing').height() / 2) + 'px');
|
25
|
+
}
|
26
|
+
$(checkPage);
|
27
|
+
$(setFade);
|
28
|
+
</script>
|
29
|
+
<style type="text/css" media="screen">
|
30
|
+
body { overflow: hidden; }
|
31
|
+
</style>
|
32
|
+
<title>Processing <%= @library.to_s(false) %></title>
|
33
|
+
</head>
|
34
|
+
<body>
|
35
|
+
<div id="menu">
|
36
|
+
<% unless @single_library %>
|
37
|
+
<a href="/<%= router.docs_prefix %>" target="_top">Libraries</a> »
|
38
|
+
<span class="title"><%= @library.name %> <% if @library.version %><small>(<%= @library.version %>)</small><% end %></span>
|
39
|
+
<% end %>
|
40
|
+
</div>
|
41
|
+
<div id="fade"></div>
|
42
|
+
<div id="processing">
|
43
|
+
<h1>Processing <%= @library.name %></h1>
|
44
|
+
<p>
|
45
|
+
<strong><%= @library.name %></strong> <% if @library.version %>(<%= @library.version %>)<% end %> is being processed.
|
46
|
+
You'll be redirected when the pages are built, it shouldn't take much longer.
|
47
|
+
</p>
|
48
|
+
<img src="/images/processing.gif" align="center" />
|
49
|
+
</div>
|
50
|
+
</body>
|
51
|
+
</html>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<div id="search_results">
|
2
|
+
<h1>Search Results <small>(for '<%= h @query %>')</small></h1>
|
3
|
+
<p>Showing <%= @visible_results.size %> of <%= @results.size %> results</p>
|
4
|
+
<ul>
|
5
|
+
<% n = 1 %>
|
6
|
+
<% @visible_results.each do |result| %>
|
7
|
+
<% name = result.type == :method ? result.name(true).to_s : result.name.to_s %>
|
8
|
+
<% path = name.gsub(/(#{Regexp.quote @query})/i, '<strong>\1</strong>') %>
|
9
|
+
<li class="r<%= n %>">
|
10
|
+
<a href="<%= serializer.serialized_path(result) %>"
|
11
|
+
title="<%= result.path %>"><%= path %></a>
|
12
|
+
<% if !result.namespace.root? %>
|
13
|
+
<small>(<%= result.namespace.path %>)</small>
|
14
|
+
<% end %>
|
15
|
+
</li>
|
16
|
+
<% n = n == 2 ? 1 : 2 %>
|
17
|
+
<% end %>
|
18
|
+
</ul>
|
19
|
+
</div>
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'webrick'
|
2
|
+
|
3
|
+
module YARD
|
4
|
+
module Server
|
5
|
+
class WebrickAdapter < Adapter
|
6
|
+
def start
|
7
|
+
server_options[:ServerType] = WEBrick::Daemon if server_options[:daemonize]
|
8
|
+
server = WEBrick::HTTPServer.new(server_options)
|
9
|
+
server.mount('/', WebrickServlet, self)
|
10
|
+
trap("INT") { server.shutdown }
|
11
|
+
server.start
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
class WebrickServlet < WEBrick::HTTPServlet::AbstractServlet
|
16
|
+
attr_accessor :adapter
|
17
|
+
|
18
|
+
def initialize(server, adapter)
|
19
|
+
super
|
20
|
+
self.adapter = adapter
|
21
|
+
end
|
22
|
+
|
23
|
+
def do_GET(request, response)
|
24
|
+
status, headers, body = *adapter.router.call(request)
|
25
|
+
response.status = status
|
26
|
+
response.body = body.is_a?(Array) ? body[0] : body
|
27
|
+
headers.each do |key, value|
|
28
|
+
response[key] = value
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# @private
|
36
|
+
class WEBrick::HTTPRequest
|
37
|
+
def xhr?; (self['X-Requested-With'] || "").downcase == 'xmlhttprequest' end
|
38
|
+
end
|