Basic YARD documentation

This commit is contained in:
Jeff Casimir 2011-09-01 01:17:12 -04:00
parent 8ff68f3f96
commit 842dfbcf8c
25 changed files with 4023 additions and 0 deletions

1
.gitignore vendored
View File

@ -5,3 +5,4 @@ Gemfile.lock
pkg/*
coverage.data
coverage/*
.yardoc

1
.yardopts Normal file
View File

@ -0,0 +1 @@
yardoc 'lib/draper/**/*.rb' -m markdown

View File

@ -9,5 +9,6 @@ gem 'guard-rspec'
gem 'launchy'
gem 'rcov', :platforms => [:mri_18]
gem 'cover_me', '>= 1.0.0.rc6', :platforms => [:mri_19]
gem 'yard'
gemspec

View File

@ -0,0 +1,147 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Class: ApplicationDecorator
&mdash; Documentation by YARD 0.7.2
</title>
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
<script type="text/javascript" charset="utf-8">
relpath = '';
if (relpath != '') relpath += '/';
</script>
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
</head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.top.frames.main) document.body.className = 'frames';
</script>
<div id="header">
<div id="menu">
<a href="_index.html">Index (A)</a> &raquo;
<span class="title">ApplicationDecorator</span>
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
</div>
<div id="search">
<a id="class_list_link" href="#">Class List</a>
<a id="method_list_link" href="#">Method List</a>
<a id="file_list_link" href="#">File List</a>
</div>
<div class="clear"></div>
</div>
<iframe id="search_frame"></iframe>
<div id="content"><h1>Class: ApplicationDecorator
</h1>
<dl class="box">
<dt class="r1">Inherits:</dt>
<dd class="r1">
<span class="inheritName"><span class='object_link'><a href="Draper/Base.html" title="Draper::Base (class)">Draper::Base</a></span></span>
<ul class="fullTree">
<li>Object</li>
<li class="next"><span class='object_link'><a href="Draper/Base.html" title="Draper::Base (class)">Draper::Base</a></span></li>
<li class="next">ApplicationDecorator</li>
</ul>
<a href="#" class="inheritanceTree">show all</a>
</dd>
<dt class="r2 last">Defined in:</dt>
<dd class="r2 last">lib/generators/draper/decorator/templates/application_decorator.rb</dd>
</dl>
<div class="clear"></div>
<h2>Constant Summary</h2>
<h3 class="inherited">Constants inherited from <span class='object_link'><a href="Draper/Base.html" title="Draper::Base (class)">Draper::Base</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Draper/Base.html#DEFAULT_DENIED-constant" title="Draper::Base::DEFAULT_DENIED (constant)">DEFAULT_DENIED</a></span>, <span class='object_link'><a href="Draper/Base.html#FORCED_PROXY-constant" title="Draper::Base::FORCED_PROXY (constant)">FORCED_PROXY</a></span></p>
<h2>Instance Attribute Summary</h2>
<h3 class="inherited">Attributes inherited from <span class='object_link'><a href="Draper/Base.html" title="Draper::Base (class)">Draper::Base</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Draper/Base.html#context-instance_method" title="Draper::Base#context (method)">context</a></span>, <span class='object_link'><a href="Draper/Base.html#model-instance_method" title="Draper::Base#model (method)">model</a></span></p>
<h2>Method Summary</h2>
<h3 class="inherited">Methods inherited from <span class='object_link'><a href="Draper/Base.html" title="Draper::Base (class)">Draper::Base</a></span></h3>
<p class="inherited"><span class='object_link'><a href="Draper/Base.html#allows-class_method" title="Draper::Base.allows (method)">allows</a></span>, <span class='object_link'><a href="Draper/Base.html#decorate-class_method" title="Draper::Base.decorate (method)">decorate</a></span>, <span class='object_link'><a href="Draper/Base.html#decorates-class_method" title="Draper::Base.decorates (method)">decorates</a></span>, <span class='object_link'><a href="Draper/Base.html#denies-class_method" title="Draper::Base.denies (method)">denies</a></span>, <span class='object_link'><a href="Draper/Base.html#find-class_method" title="Draper::Base.find (method)">find</a></span>, <span class='object_link'><a href="Draper/Base.html#helpers-instance_method" title="Draper::Base#helpers (method)">#helpers</a></span>, <span class='object_link'><a href="Draper/Base.html#initialize-instance_method" title="Draper::Base#initialize (method)">#initialize</a></span>, <span class='object_link'><a href="Draper/Base.html#lazy_helpers-class_method" title="Draper::Base.lazy_helpers (method)">lazy_helpers</a></span>, <span class='object_link'><a href="Draper/Base.html#model_name-class_method" title="Draper::Base.model_name (method)">model_name</a></span>, <span class='object_link'><a href="Draper/Base.html#to_model-instance_method" title="Draper::Base#to_model (method)">#to_model</a></span></p>
<div id="constructor_details" class="method_details_list">
<h2>Constructor Details</h2>
<p class="notice">This class inherits a constructor from <span class='object_link'><a href="Draper/Base.html#initialize-instance_method" title="Draper::Base#initialize (method)">Draper::Base</a></span></p>
</div>
</div>
<div id="footer">
Generated on Wed Aug 31 23:53:09 2011 by
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
0.7.2 (ruby-1.8.7).
</div>
</body>
</html>

123
doc/Draper.html Normal file
View File

@ -0,0 +1,123 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Module: Draper
&mdash; Documentation by YARD 0.7.2
</title>
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
<script type="text/javascript" charset="utf-8">
relpath = '';
if (relpath != '') relpath += '/';
</script>
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
</head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.top.frames.main) document.body.className = 'frames';
</script>
<div id="header">
<div id="menu">
<a href="_index.html">Index (D)</a> &raquo;
<span class="title">Draper</span>
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
</div>
<div id="search">
<a id="class_list_link" href="#">Class List</a>
<a id="method_list_link" href="#">Method List</a>
<a id="file_list_link" href="#">File List</a>
</div>
<div class="clear"></div>
</div>
<iframe id="search_frame"></iframe>
<div id="content"><h1>Module: Draper
</h1>
<dl class="box">
<dt class="r1 last">Defined in:</dt>
<dd class="r1 last">lib/draper/base.rb<span class="defines">,<br />
lib/draper/system.rb,<br /> lib/draper/version.rb,<br /> lib/draper/all_helpers.rb,<br /> lib/draper/lazy_helpers.rb</span>
</dd>
</dl>
<div class="clear"></div>
<h2>Defined Under Namespace</h2>
<p class="children">
<strong class="modules">Modules:</strong> <span class='object_link'><a href="Draper/AllHelpers.html" title="Draper::AllHelpers (module)">AllHelpers</a></span>, <span class='object_link'><a href="Draper/LazyHelpers.html" title="Draper::LazyHelpers (module)">LazyHelpers</a></span>, <span class='object_link'><a href="Draper/ModelSupport.html" title="Draper::ModelSupport (module)">ModelSupport</a></span>
<strong class="classes">Classes:</strong> <span class='object_link'><a href="Draper/Base.html" title="Draper::Base (class)">Base</a></span>, <span class='object_link'><a href="Draper/System.html" title="Draper::System (class)">System</a></span>
</p>
<h2>Constant Summary</h2>
<dl class="constants">
<dt id="VERSION-constant" class="">VERSION =
</dt>
<dd><pre class="code"><span class='string val'>&quot;0.7.3&quot;</span>
</pre></dd>
</dl>
</div>
<div id="footer">
Generated on Thu Sep 1 01:13:36 2011 by
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
0.7.2 (ruby-1.8.7).
</div>
</body>
</html>

256
doc/Draper/AllHelpers.html Normal file
View File

@ -0,0 +1,256 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Module: Draper::AllHelpers
&mdash; Documentation by YARD 0.7.2
</title>
<link rel="stylesheet" href="../css/style.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="../css/common.css" type="text/css" media="screen" charset="utf-8" />
<script type="text/javascript" charset="utf-8">
relpath = '..';
if (relpath != '') relpath += '/';
</script>
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
</head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.top.frames.main) document.body.className = 'frames';
</script>
<div id="header">
<div id="menu">
<a href="../_index.html">Index (A)</a> &raquo;
<span class='title'><span class='object_link'><a href="../Draper.html" title="Draper (module)">Draper</a></span></span>
&raquo;
<span class="title">AllHelpers</span>
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
</div>
<div id="search">
<a id="class_list_link" href="#">Class List</a>
<a id="method_list_link" href="#">Method List</a>
<a id="file_list_link" href="#">File List</a>
</div>
<div class="clear"></div>
</div>
<iframe id="search_frame"></iframe>
<div id="content"><h1>Module: Draper::AllHelpers
</h1>
<dl class="box">
<dt class="r1 last">Defined in:</dt>
<dd class="r1 last">lib/draper/all_helpers.rb</dd>
</dl>
<div class="clear"></div>
<h2>
Instance Method Summary
<small>(<a href="#" class="summary_toggle">collapse</a>)</small>
</h2>
<ul class="summary">
<li class="public ">
<span class="summary_signature">
<a href="#all_helpers-instance_method" title="#all_helpers (instance method)">- (Object) <strong>all_helpers</strong> </a>
</span>
<span class="summary_desc"><div class='inline'><p>Most of the black magic here thanks to Xavier Shay (@xshay)
Provide access to helper methods from outside controllers and views,
such as in Presenter objects.</p>
</div></span>
</li>
</ul>
<div id="instance_method_details" class="method_details_list">
<h2>Instance Method Details</h2>
<div class="method_details first">
<p class="signature first" id="all_helpers-instance_method">
- (<tt>Object</tt>) <strong>all_helpers</strong>
</p><div class="docstring">
<div class="discussion">
<p>Most of the black magic here thanks to Xavier Shay (@xshay)
Provide access to helper methods from outside controllers and views,
such as in Presenter objects. Rails provides ActionController::Base.helpers,
but this does not include any of our application helpers.</p>
</div>
</div>
<div class="tags">
</div><table class="source_code">
<tr>
<td>
<pre class="lines">
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/draper/all_helpers.rb', line 7</span>
<span class='def def kw'>def</span> <span class='all_helpers identifier id'>all_helpers</span>
<span class='@all_helpers_proxy ivar id'>@all_helpers_proxy</span> <span class='opasgn op'>||=</span> <span class='begin begin kw'>begin</span>
<span class='comment val'># Start with just the rails helpers. This is the same method used</span>
<span class='comment val'># by ActionController::Base.helpers</span>
<span class='comment val'># proxy = ActionView::Base.new.extend(_helpers)</span>
<span class='proxy identifier id'>proxy</span> <span class='assign token'>=</span> <span class='ActionController constant id'>ActionController</span><span class='colon2 op'>::</span><span class='Base constant id'>Base</span><span class='dot token'>.</span><span class='helpers identifier id'>helpers</span>
<span class='comment val'># url_for depends on _routes method being defined</span>
<span class='proxy identifier id'>proxy</span><span class='dot token'>.</span><span class='instance_eval identifier id'>instance_eval</span> <span class='do do kw'>do</span>
<span class='def def kw'>def</span> <span class='_routes identifier id'>_routes</span>
<span class='Rails constant id'>Rails</span><span class='dot token'>.</span><span class='application identifier id'>application</span><span class='dot token'>.</span><span class='routes identifier id'>routes</span>
<span class='end end kw'>end</span>
<span class='end end kw'>end</span>
<span class='comment val'># Import all named path methods</span>
<span class='proxy identifier id'>proxy</span><span class='dot token'>.</span><span class='extend identifier id'>extend</span><span class='lparen token'>(</span><span class='Rails constant id'>Rails</span><span class='dot token'>.</span><span class='application identifier id'>application</span><span class='dot token'>.</span><span class='routes identifier id'>routes</span><span class='dot token'>.</span><span class='named_routes identifier id'>named_routes</span><span class='dot token'>.</span><span class='module identifier id'>module</span><span class='rparen token'>)</span>
<span class='comment val'># Load all our application helpers to extend</span>
<span class='modules_for_helpers identifier id'>modules_for_helpers</span><span class='lparen token'>(</span><span class='lbrack token'>[</span><span class='symbol val'>:all</span><span class='rbrack token'>]</span><span class='rparen token'>)</span><span class='dot token'>.</span><span class='each identifier id'>each</span> <span class='do do kw'>do</span> <span class='bitor op'>|</span><span class='mod identifier id'>mod</span><span class='bitor op'>|</span>
<span class='proxy identifier id'>proxy</span><span class='dot token'>.</span><span class='extend identifier id'>extend</span><span class='lparen token'>(</span><span class='mod identifier id'>mod</span><span class='rparen token'>)</span>
<span class='end end kw'>end</span>
<span class='proxy identifier id'>proxy</span><span class='dot token'>.</span><span class='instance_eval identifier id'>instance_eval</span> <span class='do do kw'>do</span>
<span class='def def kw'>def</span> <span class='controller identifier id'>controller</span>
<span class='comment val'>#Object.controller</span>
<span class='end end kw'>end</span>
<span class='end end kw'>end</span>
<span class='proxy identifier id'>proxy</span><span class='dot token'>.</span><span class='instance_eval identifier id'>instance_eval</span> <span class='do do kw'>do</span>
<span class='comment val'># A hack since this proxy doesn't pick up default_url_options from anywhere</span>
<span class='def def kw'>def</span> <span class='url_for identifier id'>url_for</span><span class='lparen token'>(</span><span class='mult op'>*</span><span class='args identifier id'>args</span><span class='rparen token'>)</span>
<span class='if if kw'>if</span> <span class='args identifier id'>args</span><span class='dot token'>.</span><span class='last identifier id'>last</span><span class='dot token'>.</span><span class='is_a? fid id'>is_a?</span><span class='lparen token'>(</span><span class='Hash constant id'>Hash</span><span class='rparen token'>)</span> <span class='andop op'>&amp;&amp;</span> <span class='notop op'>!</span><span class='args identifier id'>args</span><span class='dot token'>.</span><span class='last identifier id'>last</span><span class='lbrack token'>[</span><span class='symbol val'>:only_path</span><span class='rbrack token'>]</span>
<span class='args identifier id'>args</span> <span class='assign token'>=</span> <span class='args identifier id'>args</span><span class='dot token'>.</span><span class='dup identifier id'>dup</span>
<span class='args identifier id'>args</span> <span class='lshft op'>&lt;&lt;</span> <span class='args identifier id'>args</span><span class='dot token'>.</span><span class='pop identifier id'>pop</span><span class='dot token'>.</span><span class='merge identifier id'>merge</span><span class='lparen token'>(</span><span class='string val'>'host'</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='ActionMailer constant id'>ActionMailer</span><span class='colon2 op'>::</span><span class='Base constant id'>Base</span><span class='dot token'>.</span><span class='default_url_options identifier id'>default_url_options</span><span class='lbrack token'>[</span><span class='symbol val'>:host</span><span class='rbrack token'>]</span><span class='rparen token'>)</span>
<span class='end end kw'>end</span>
<span class='super super kw'>super</span><span class='lparen token'>(</span><span class='mult op'>*</span><span class='args identifier id'>args</span><span class='rparen token'>)</span>
<span class='end end kw'>end</span>
<span class='end end kw'>end</span>
<span class='proxy identifier id'>proxy</span>
<span class='end end kw'>end</span>
<span class='end end kw'>end</span>
</pre>
</td>
</tr>
</table>
</div>
</div>
</div>
<div id="footer">
Generated on Thu Sep 1 01:13:37 2011 by
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
0.7.2 (ruby-1.8.7).
</div>
</body>
</html>

1222
doc/Draper/Base.html Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,216 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Class: Draper::DecoratorGenerator
&mdash; Documentation by YARD 0.7.2
</title>
<link rel="stylesheet" href="../css/style.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="../css/common.css" type="text/css" media="screen" charset="utf-8" />
<script type="text/javascript" charset="utf-8">
relpath = '..';
if (relpath != '') relpath += '/';
</script>
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
</head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.top.frames.main) document.body.className = 'frames';
</script>
<div id="header">
<div id="menu">
<a href="../_index.html">Index (D)</a> &raquo;
<span class='title'><span class='object_link'><a href="../Draper.html" title="Draper (module)">Draper</a></span></span>
&raquo;
<span class="title">DecoratorGenerator</span>
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
</div>
<div id="search">
<a id="class_list_link" href="#">Class List</a>
<a id="method_list_link" href="#">Method List</a>
<a id="file_list_link" href="#">File List</a>
</div>
<div class="clear"></div>
</div>
<iframe id="search_frame"></iframe>
<div id="content"><h1>Class: Draper::DecoratorGenerator
</h1>
<dl class="box">
<dt class="r1">Inherits:</dt>
<dd class="r1">
<span class="inheritName">Rails::Generators::NamedBase</span>
<ul class="fullTree">
<li>Object</li>
<li class="next">Rails::Generators::NamedBase</li>
<li class="next">Draper::DecoratorGenerator</li>
</ul>
<a href="#" class="inheritanceTree">show all</a>
</dd>
<dt class="r2 last">Defined in:</dt>
<dd class="r2 last">lib/generators/draper/decorator/decorator_generator.rb</dd>
</dl>
<div class="clear"></div>
<h2>Constant Summary</h2>
<dl class="constants">
<dt id="DECORATORS_ROOT-constant" class="">DECORATORS_ROOT =
</dt>
<dd><pre class="code"><span class='string val'>'app/decorators/'</span>
</pre></dd>
<dt id="APPLICATION_DECORATOR-constant" class="">APPLICATION_DECORATOR =
</dt>
<dd><pre class="code"><span class='string val'>'application_decorator.rb'</span>
</pre></dd>
<dt id="APPLICATION_DECORATOR_PATH-constant" class="">APPLICATION_DECORATOR_PATH =
</dt>
<dd><pre class="code"><span class='DECORATORS_ROOT constant id'>DECORATORS_ROOT</span> <span class='plus op'>+</span> <span class='APPLICATION_DECORATOR constant id'>APPLICATION_DECORATOR</span>
</pre></dd>
</dl>
<h2>
Instance Method Summary
<small>(<a href="#" class="summary_toggle">collapse</a>)</small>
</h2>
<ul class="summary">
<li class="public ">
<span class="summary_signature">
<a href="#build_model_and_application_decorators-instance_method" title="#build_model_and_application_decorators (instance method)">- (Object) <strong>build_model_and_application_decorators</strong> </a>
</span>
<span class="summary_desc"><div class='inline'></div></span>
</li>
</ul>
<div id="instance_method_details" class="method_details_list">
<h2>Instance Method Details</h2>
<div class="method_details first">
<p class="signature first" id="build_model_and_application_decorators-instance_method">
- (<tt>Object</tt>) <strong>build_model_and_application_decorators</strong>
</p><table class="source_code">
<tr>
<td>
<pre class="lines">
9
10
11
12
13
14
15</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/generators/draper/decorator/decorator_generator.rb', line 9</span>
<span class='def def kw'>def</span> <span class='build_model_and_application_decorators identifier id'>build_model_and_application_decorators</span>
<span class='empty_directory identifier id'>empty_directory</span> <span class='string val'>&quot;app/decorators&quot;</span>
<span class='unless unless kw'>unless</span> <span class='File constant id'>File</span><span class='dot token'>.</span><span class='exists? fid id'>exists?</span><span class='lparen token'>(</span><span class='APPLICATION_DECORATOR_PATH constant id'>APPLICATION_DECORATOR_PATH</span><span class='rparen token'>)</span>
<span class='template identifier id'>template</span> <span class='APPLICATION_DECORATOR constant id'>APPLICATION_DECORATOR</span><span class='comma token'>,</span> <span class='APPLICATION_DECORATOR_PATH constant id'>APPLICATION_DECORATOR_PATH</span>
<span class='end end kw'>end</span>
<span class='template identifier id'>template</span> <span class='string val'>'decorator.rb'</span><span class='comma token'>,</span> <span class='dstring node'>&quot;#{DECORATORS_ROOT}#{singular_name}_decorator.rb&quot;</span>
<span class='end end kw'>end</span>
</pre>
</td>
</tr>
</table>
</div>
</div>
</div>
<div id="footer">
Generated on Wed Aug 31 23:53:09 2011 by
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
0.7.2 (ruby-1.8.7).
</div>
</body>
</html>

174
doc/Draper/LazyHelpers.html Normal file
View File

@ -0,0 +1,174 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Module: Draper::LazyHelpers
&mdash; Documentation by YARD 0.7.2
</title>
<link rel="stylesheet" href="../css/style.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="../css/common.css" type="text/css" media="screen" charset="utf-8" />
<script type="text/javascript" charset="utf-8">
relpath = '..';
if (relpath != '') relpath += '/';
</script>
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
</head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.top.frames.main) document.body.className = 'frames';
</script>
<div id="header">
<div id="menu">
<a href="../_index.html">Index (L)</a> &raquo;
<span class='title'><span class='object_link'><a href="../Draper.html" title="Draper (module)">Draper</a></span></span>
&raquo;
<span class="title">LazyHelpers</span>
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
</div>
<div id="search">
<a id="class_list_link" href="#">Class List</a>
<a id="method_list_link" href="#">Method List</a>
<a id="file_list_link" href="#">File List</a>
</div>
<div class="clear"></div>
</div>
<iframe id="search_frame"></iframe>
<div id="content"><h1>Module: Draper::LazyHelpers
</h1>
<dl class="box">
<dt class="r1 last">Defined in:</dt>
<dd class="r1 last">lib/draper/lazy_helpers.rb</dd>
</dl>
<div class="clear"></div>
<h2>
Instance Method Summary
<small>(<a href="#" class="summary_toggle">collapse</a>)</small>
</h2>
<ul class="summary">
<li class="public ">
<span class="summary_signature">
<a href="#method_missing-instance_method" title="#method_missing (instance method)">- (Object) <strong>method_missing</strong>(method_name, *args, &amp;block) </a>
</span>
<span class="summary_desc"><div class='inline'>
</div></span>
</li>
</ul>
<div id="method_missing_details" class="method_details_list">
<h2>Dynamic Method Handling</h2>
<p class="notice this">
This class handles dynamic methods through the <tt>method_missing</tt> method
</p>
<div class="method_details first">
<p class="signature first" id="method_missing-instance_method">
- (<tt>Object</tt>) <strong>method_missing</strong>(method_name, *args, &amp;block)
</p><table class="source_code">
<tr>
<td>
<pre class="lines">
3
4
5
6
7
8
9</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/draper/lazy_helpers.rb', line 3</span>
<span class='def def kw'>def</span> <span class='method_missing identifier id'>method_missing</span><span class='lparen token'>(</span><span class='method_name identifier id'>method_name</span><span class='comma token'>,</span> <span class='mult op'>*</span><span class='args identifier id'>args</span><span class='comma token'>,</span> <span class='bitand op'>&amp;</span><span class='block identifier id'>block</span><span class='rparen token'>)</span>
<span class='begin begin kw'>begin</span>
<span class='helpers identifier id'>helpers</span><span class='dot token'>.</span><span class='send identifier id'>send</span> <span class='method_name identifier id'>method_name</span><span class='comma token'>,</span> <span class='mult op'>*</span><span class='args identifier id'>args</span><span class='comma token'>,</span> <span class='bitand op'>&amp;</span><span class='block identifier id'>block</span>
<span class='rescue rescue kw'>rescue</span> <span class='NoMethodError constant id'>NoMethodError</span>
<span class='super super kw'>super</span>
<span class='end end kw'>end</span>
<span class='end end kw'>end</span>
</pre>
</td>
</tr>
</table>
</div>
</div>
</div>
<div id="footer">
Generated on Thu Sep 1 01:13:36 2011 by
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
0.7.2 (ruby-1.8.7).
</div>
</body>
</html>

View File

@ -0,0 +1,164 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Module: Draper::ModelSupport
&mdash; Documentation by YARD 0.7.2
</title>
<link rel="stylesheet" href="../css/style.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="../css/common.css" type="text/css" media="screen" charset="utf-8" />
<script type="text/javascript" charset="utf-8">
relpath = '..';
if (relpath != '') relpath += '/';
</script>
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
</head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.top.frames.main) document.body.className = 'frames';
</script>
<div id="header">
<div id="menu">
<a href="../_index.html">Index (M)</a> &raquo;
<span class='title'><span class='object_link'><a href="../Draper.html" title="Draper (module)">Draper</a></span></span>
&raquo;
<span class="title">ModelSupport</span>
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
</div>
<div id="search">
<a id="class_list_link" href="#">Class List</a>
<a id="method_list_link" href="#">Method List</a>
<a id="file_list_link" href="#">File List</a>
</div>
<div class="clear"></div>
</div>
<iframe id="search_frame"></iframe>
<div id="content"><h1>Module: Draper::ModelSupport
</h1>
<dl class="box">
<dt class="r1 last">Defined in:</dt>
<dd class="r1 last">lib/draper/model_support.rb</dd>
</dl>
<div class="clear"></div>
<h2>
Instance Method Summary
<small>(<a href="#" class="summary_toggle">collapse</a>)</small>
</h2>
<ul class="summary">
<li class="public ">
<span class="summary_signature">
<a href="#decorator-instance_method" title="#decorator (instance method)">- (Object) <strong>decorator</strong> </a>
</span>
<span class="summary_desc"><div class='inline'>
</div></span>
</li>
</ul>
<div id="instance_method_details" class="method_details_list">
<h2>Instance Method Details</h2>
<div class="method_details first">
<p class="signature first" id="decorator-instance_method">
- (<tt>Object</tt>) <strong>decorator</strong>
</p><table class="source_code">
<tr>
<td>
<pre class="lines">
2
3
4</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/draper/model_support.rb', line 2</span>
<span class='def def kw'>def</span> <span class='decorator identifier id'>decorator</span>
<span class='@decorator ivar id'>@decorator</span> <span class='opasgn op'>||=</span> <span class='dstring node'>&quot;#{self.class.name}Decorator&quot;</span><span class='dot token'>.</span><span class='constantize identifier id'>constantize</span><span class='dot token'>.</span><span class='decorate identifier id'>decorate</span><span class='lparen token'>(</span><span class='self self kw'>self</span><span class='rparen token'>)</span>
<span class='end end kw'>end</span>
</pre>
</td>
</tr>
</table>
</div>
</div>
</div>
<div id="footer">
Generated on Thu Sep 1 01:13:37 2011 by
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
0.7.2 (ruby-1.8.7).
</div>
</body>
</html>

179
doc/Draper/System.html Normal file
View File

@ -0,0 +1,179 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Class: Draper::System
&mdash; Documentation by YARD 0.7.2
</title>
<link rel="stylesheet" href="../css/style.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="../css/common.css" type="text/css" media="screen" charset="utf-8" />
<script type="text/javascript" charset="utf-8">
relpath = '..';
if (relpath != '') relpath += '/';
</script>
<script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
</head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.top.frames.main) document.body.className = 'frames';
</script>
<div id="header">
<div id="menu">
<a href="../_index.html">Index (S)</a> &raquo;
<span class='title'><span class='object_link'><a href="../Draper.html" title="Draper (module)">Draper</a></span></span>
&raquo;
<span class="title">System</span>
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
</div>
<div id="search">
<a id="class_list_link" href="#">Class List</a>
<a id="method_list_link" href="#">Method List</a>
<a id="file_list_link" href="#">File List</a>
</div>
<div class="clear"></div>
</div>
<iframe id="search_frame"></iframe>
<div id="content"><h1>Class: Draper::System
</h1>
<dl class="box">
<dt class="r1">Inherits:</dt>
<dd class="r1">
<span class="inheritName">Object</span>
<ul class="fullTree">
<li>Object</li>
<li class="next">Draper::System</li>
</ul>
<a href="#" class="inheritanceTree">show all</a>
</dd>
<dt class="r2 last">Defined in:</dt>
<dd class="r2 last">lib/draper/system.rb</dd>
</dl>
<div class="clear"></div>
<h2>
Class Method Summary
<small>(<a href="#" class="summary_toggle">collapse</a>)</small>
</h2>
<ul class="summary">
<li class="public ">
<span class="summary_signature">
<a href="#setup-class_method" title="setup (class method)">+ (Object) <strong>setup</strong> </a>
</span>
<span class="summary_desc"><div class='inline'>
</div></span>
</li>
</ul>
<div id="class_method_details" class="method_details_list">
<h2>Class Method Details</h2>
<div class="method_details first">
<p class="signature first" id="setup-class_method">
+ (<tt>Object</tt>) <strong>setup</strong>
</p><table class="source_code">
<tr>
<td>
<pre class="lines">
3
4
5</pre>
</td>
<td>
<pre class="code"><span class="info file"># File 'lib/draper/system.rb', line 3</span>
<span class='def def kw'>def</span> <span class='self self kw'>self</span><span class='dot token'>.</span><span class='setup identifier id'>setup</span>
<span class='ActionController constant id'>ActionController</span><span class='colon2 op'>::</span><span class='Base constant id'>Base</span><span class='dot token'>.</span><span class='send identifier id'>send</span><span class='lparen token'>(</span><span class='symbol val'>:extend</span><span class='comma token'>,</span> <span class='Draper constant id'>Draper</span><span class='colon2 op'>::</span><span class='AllHelpers constant id'>AllHelpers</span><span class='rparen token'>)</span> <span class='if if_mod kw'>if</span> <span class='defined? defined kw'>defined?</span><span class='lparen token'>(</span><span class='ActionController constant id'>ActionController</span><span class='colon2 op'>::</span><span class='Base constant id'>Base</span><span class='rparen token'>)</span>
<span class='end end kw'>end</span>
</pre>
</td>
</tr>
</table>
</div>
</div>
</div>
<div id="footer">
Generated on Thu Sep 1 01:13:37 2011 by
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
0.7.2 (ruby-1.8.7).
</div>
</body>
</html>

172
doc/_index.html Normal file
View File

@ -0,0 +1,172 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Documentation by YARD 0.7.2
</title>
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
<script type="text/javascript" charset="utf-8">
relpath = '';
if (relpath != '') relpath += '/';
</script>
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
</head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.top.frames.main) document.body.className = 'frames';
</script>
<div id="header">
<div id="menu">
<span class="title"></span>
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
</div>
<div id="search">
<a id="class_list_link" href="#">Class List</a>
<a id="method_list_link" href="#">Method List</a>
<a id="file_list_link" href="#">File List</a>
</div>
<div class="clear"></div>
</div>
<iframe id="search_frame"></iframe>
<div id="content"><h1 class="noborder title">Documentation by YARD 0.7.2</h1>
<div id="listing">
<h1 class="alphaindex">Alphabetic Index</h1>
<div class="clear"></div>
<h2>Namespace Listing A-Z</h2>
<table>
<tr>
<td valign='top' width="33%">
<ul id="alpha_A" class="alpha">
<li class="letter">A</li>
<ul>
<li>
<span class='object_link'><a href="Draper/AllHelpers.html" title="Draper::AllHelpers (module)">AllHelpers</a></span>
<small>(Draper)</small>
</li>
</ul>
</ul>
<ul id="alpha_B" class="alpha">
<li class="letter">B</li>
<ul>
<li>
<span class='object_link'><a href="Draper/Base.html" title="Draper::Base (class)">Base</a></span>
<small>(Draper)</small>
</li>
</ul>
</ul>
<ul id="alpha_D" class="alpha">
<li class="letter">D</li>
<ul>
<li>
<span class='object_link'><a href="Draper.html" title="Draper (module)">Draper</a></span>
</li>
</ul>
</ul>
<ul id="alpha_L" class="alpha">
<li class="letter">L</li>
<ul>
<li>
<span class='object_link'><a href="Draper/LazyHelpers.html" title="Draper::LazyHelpers (module)">LazyHelpers</a></span>
<small>(Draper)</small>
</li>
</ul>
</ul>
<ul id="alpha_M" class="alpha">
<li class="letter">M</li>
<ul>
<li>
<span class='object_link'><a href="Draper/ModelSupport.html" title="Draper::ModelSupport (module)">ModelSupport</a></span>
<small>(Draper)</small>
</li>
</ul>
</ul>
<ul id="alpha_S" class="alpha">
<li class="letter">S</li>
<ul>
<li>
<span class='object_link'><a href="Draper/System.html" title="Draper::System (class)">System</a></span>
<small>(Draper)</small>
</li>
</ul>
</ul>
</td>
</tr>
</table>
</div>
</div>
<div id="footer">
Generated on Thu Sep 1 01:13:36 2011 by
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
0.7.2 (ruby-1.8.7).
</div>
</body>
</html>

47
doc/class_list.html Normal file
View File

@ -0,0 +1,47 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
<base id="base_target" target="_parent" />
</head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.top.frames.main) {
document.getElementById('base_target').target = 'main';
document.body.className = 'frames';
}
</script>
<div id="content">
<h1 id="full_list_header">Class List</h1>
<div id="nav">
<a target="_self" href="class_list.html">Classes</a>
<a target="_self" href="method_list.html">Methods</a>
<a target="_self" href="file_list.html">Files</a>
</div>
<div id="search">Search: <input type="text" /></div>
<ul id="full_list" class="class">
<li><span class='object_link'><a href="top-level-namespace.html" title=" (root)">Top Level Namespace</a></span></li>
<li><a class='toggle'></a> <span class='object_link'><a href="Draper.html" title="Draper (module)">Draper</a></span><small class='search_info'>Top Level Namespace</small></li><ul><li><span class='object_link'><a href="Draper/AllHelpers.html" title="Draper::AllHelpers (module)">AllHelpers</a></span><small class='search_info'>Draper</small></li><li><span class='object_link'><a href="Draper/Base.html" title="Draper::Base (class)">Base</a></span> &lt; Object<small class='search_info'>Draper</small></li><li><span class='object_link'><a href="Draper/LazyHelpers.html" title="Draper::LazyHelpers (module)">LazyHelpers</a></span><small class='search_info'>Draper</small></li><li><span class='object_link'><a href="Draper/ModelSupport.html" title="Draper::ModelSupport (module)">ModelSupport</a></span><small class='search_info'>Draper</small></li><li><span class='object_link'><a href="Draper/System.html" title="Draper::System (class)">System</a></span> &lt; Object<small class='search_info'>Draper</small></li></ul>
</ul>
</div>
</body>
</html>

1
doc/css/common.css Normal file
View File

@ -0,0 +1 @@
/* Override this file with custom rules */

53
doc/css/full_list.css Normal file
View File

@ -0,0 +1,53 @@
body {
margin: 0;
font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif;
font-size: 13px;
height: 101%;
overflow-x: hidden;
}
h1 { padding: 12px 10px; padding-bottom: 0; margin: 0; font-size: 1.4em; }
.clear { clear: both; }
#search { position: absolute; right: 5px; top: 9px; padding-left: 24px; }
#content.insearch #search, #content.insearch #noresults { background: url(data:image/gif;base64,R0lGODlhEAAQAPYAAP///wAAAPr6+pKSkoiIiO7u7sjIyNjY2J6engAAAI6OjsbGxjIyMlJSUuzs7KamppSUlPLy8oKCghwcHLKysqSkpJqamvT09Pj4+KioqM7OzkRERAwMDGBgYN7e3ujo6Ly8vCoqKjY2NkZGRtTU1MTExDw8PE5OTj4+PkhISNDQ0MrKylpaWrS0tOrq6nBwcKysrLi4uLq6ul5eXlxcXGJiYoaGhuDg4H5+fvz8/KKiohgYGCwsLFZWVgQEBFBQUMzMzDg4OFhYWBoaGvDw8NbW1pycnOLi4ubm5kBAQKqqqiQkJCAgIK6urnJyckpKSjQ0NGpqatLS0sDAwCYmJnx8fEJCQlRUVAoKCggICLCwsOTk5ExMTPb29ra2tmZmZmhoaNzc3KCgoBISEiIiIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCAAAACwAAAAAEAAQAAAHaIAAgoMgIiYlg4kACxIaACEJCSiKggYMCRselwkpghGJBJEcFgsjJyoAGBmfggcNEx0flBiKDhQFlIoCCA+5lAORFb4AJIihCRbDxQAFChAXw9HSqb60iREZ1omqrIPdJCTe0SWI09GBACH5BAkIAAAALAAAAAAQABAAAAdrgACCgwc0NTeDiYozCQkvOTo9GTmDKy8aFy+NOBA7CTswgywJDTIuEjYFIY0JNYMtKTEFiRU8Pjwygy4ws4owPyCKwsMAJSTEgiQlgsbIAMrO0dKDGMTViREZ14kYGRGK38nHguHEJcvTyIEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDAggPg4iJAAMJCRUAJRIqiRGCBI0WQEEJJkWDERkYAAUKEBc4Po1GiKKJHkJDNEeKig4URLS0ICImJZAkuQAhjSi/wQyNKcGDCyMnk8u5rYrTgqDVghgZlYjcACTA1sslvtHRgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCQARAtOUoQRGRiFD0kJUYWZhUhKT1OLhR8wBaaFBzQ1NwAlkIszCQkvsbOHL7Y4q4IuEjaqq0ZQD5+GEEsJTDCMmIUhtgk1lo6QFUwJVDKLiYJNUd6/hoEAIfkECQgAAAAsAAAAABAAEAAAB2iAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4uen4ICCA+IkIsDCQkVACWmhwSpFqAABQoQF6ALTkWFnYMrVlhWvIKTlSAiJiVVPqlGhJkhqShHV1lCW4cMqSkAR1ofiwsjJyqGgQAh+QQJCAAAACwAAAAAEAAQAAAHZ4AAgoOEhYaCJSWHgxGDJCSMhREZGIYYGY2ElYebi56fhyWQniSKAKKfpaCLFlAPhl0gXYNGEwkhGYREUywag1wJwSkHNDU3D0kJYIMZQwk8MjPBLx9eXwuETVEyAC/BOKsuEjYFhoEAIfkECQgAAAAsAAAAABAAEAAAB2eAAIKDhIWGgiUlh4MRgyQkjIURGRiGGBmNhJWHm4ueICImip6CIQkJKJ4kigynKaqKCyMnKqSEK05StgAGQRxPYZaENqccFgIID4KXmQBhXFkzDgOnFYLNgltaSAAEpxa7BQoQF4aBACH5BAkIAAAALAAAAAAQABAAAAdogACCg4SFggJiPUqCJSWGgkZjCUwZACQkgxGEXAmdT4UYGZqCGWQ+IjKGGIUwPzGPhAc0NTewhDOdL7Ykji+dOLuOLhI2BbaFETICx4MlQitdqoUsCQ2vhKGjglNfU0SWmILaj43M5oEAOwAAAAAAAAAAAA==) no-repeat center left; }
#full_list { padding: 0; list-style: none; margin-left: 0; }
#full_list ul { padding: 0; }
#full_list li { padding: 5px; padding-left: 12px; margin: 0; font-size: 1.1em; list-style: none; }
#noresults { padding: 7px 12px; }
#content.insearch #noresults { margin-left: 7px; }
ul.collapsed ul, ul.collapsed li { display: none; }
li a.toggle { cursor: default; position: relative; left: -5px; top: 4px; text-indent: -999px; width: 10px; height: 9px; margin-left: -10px; display: block; float: left; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAK8AAACvABQqw0mAAAABx0RVh0U29mdHdhcmUAQWRvYmUgRmlyZXdvcmtzIENTM5jWRgMAAAAVdEVYdENyZWF0aW9uIFRpbWUAMy8xNC8wOeNZPpQAAAE2SURBVDiNrZTBccIwEEXfelIAHUA6CZ24BGaWO+FuzZAK4k6gg5QAdGAq+Bxs2Yqx7BzyL7Llp/VfzZeQhCTc/ezuGzKKnKSzpCxXJM8fwNXda3df5RZETlIt6YUzSQDs93sl8w3wBZxCCE10GM1OcWbWjB2mWgEH4Mfdyxm3PSepBHibgQE2wLe7r4HjEidpnXMYdQPKEMJcsZ4zs2POYQOcaPfwMVOo58zsAdMt18BuoVDPxUJRacELbXv3hUIX2vYmOUvi8C8ydz/ThjXrqKqqLbDIAdsCKBd+Wo7GWa7o9qzOQHVVVXeAbs+yHHCH4aTsaCOQqunmUy1yBUAXkdMIfMlgF5EXLo2OpV/c/Up7jG4hhHcYLgWzAZXUc2b2ixsfvc/RmNNfOXD3Q/oeL9axJE1yT9IOoUu6MGUkAAAAAElFTkSuQmCC) no-repeat bottom left; }
li.collapsed a.toggle { opacity: 0.5; cursor: default; background-position: top left; }
li { color: #888; cursor: pointer; }
li.deprecated { text-decoration: line-through; font-style: italic; }
li.r1 { background: #f0f0f0; }
li.r2 { background: #fafafa; }
li:hover { background: #ddd; }
li small:before { content: "("; }
li small:after { content: ")"; }
li small.search_info { display: none; }
a:link, a:visited { text-decoration: none; color: #05a; }
li.clicked { background: #05a; color: #ccc; }
li.clicked a:link, li.clicked a:visited { color: #eee; }
li.clicked a.toggle { opacity: 0.5; background-position: bottom right; }
li.collapsed.clicked a.toggle { background-position: top right; }
#search input { border: 1px solid #bbb; -moz-border-radius: 3px; -webkit-border-radius: 3px; }
#nav { margin-left: 10px; font-size: 0.9em; display: none; color: #aaa; }
#nav a:link, #nav a:visited { color: #358; }
#nav a:hover { background: transparent; color: #5af; }
.frames #content h1 { margin-top: 0; }
.frames li { white-space: nowrap; cursor: normal; }
.frames li small { display: block; font-size: 0.8em; }
.frames li small:before { content: ""; }
.frames li small:after { content: ""; }
.frames li small.search_info { display: none; }
.frames #search { width: 170px; position: static; margin: 3px; margin-left: 10px; font-size: 0.9em; color: #888; padding-left: 0; padding-right: 24px; }
.frames #content.insearch #search { background-position: center right; }
.frames #search input { width: 110px; }
.frames #nav { display: block; }
#full_list.insearch li { display: none; }
#full_list.insearch li.found { display: list-item; padding-left: 10px; }
#full_list.insearch li a.toggle { display: none; }
#full_list.insearch li small.search_info { display: block; }

320
doc/css/style.css Normal file
View File

@ -0,0 +1,320 @@
body {
padding: 0 20px;
font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif;
font-size: 13px;
}
body.frames { padding: 0 5px; }
h1 { font-size: 25px; margin: 1em 0 0.5em; padding-top: 4px; border-top: 1px dotted #d5d5d5; }
h1.noborder { border-top: 0px; margin-top: 0; padding-top: 4px; }
h1.title { margin-bottom: 10px; }
h1.alphaindex { margin-top: 0; font-size: 22px; }
h2 {
padding: 0;
padding-bottom: 3px;
border-bottom: 1px #aaa solid;
font-size: 1.4em;
margin: 1.8em 0 0.5em;
}
h2 small { font-weight: normal; font-size: 0.7em; display: block; float: right; }
.clear { clear: both; }
.inline { display: inline; }
.inline p:first-child { display: inline; }
.docstring h1, .docstring h2, .docstring h3, .docstring h4 { padding: 0; border: 0; border-bottom: 1px dotted #bbb; }
.docstring h1 { font-size: 1.2em; }
.docstring h2 { font-size: 1.1em; }
.docstring h3, .docstring h4 { font-size: 1em; border-bottom: 0; padding-top: 10px; }
.summary_desc .object_link, .docstring .object_link { font-family: monospace; }
/* style for <ul> */
#filecontents li > p, .docstring li > p { margin: 0px; }
#filecontents ul, .docstring ul { padding-left: 20px; }
/* style for <dl> */
#filecontents dl, .docstring dl { border: 1px solid #ccc; }
#filecontents dt, .docstring dt { background: #ddd; font-weight: bold; padding: 3px 5px; }
#filecontents dd, .docstring dd { padding: 5px 0px; margin-left: 18px; }
#filecontents dd > p, .docstring dd > p { margin: 0px; }
.note {
color: #222;
-moz-border-radius: 3px; -webkit-border-radius: 3px;
background: #e3e4e3; border: 1px solid #d5d5d5; padding: 7px 10px;
display: block;
}
.note.todo { background: #ffffc5; border-color: #ececaa; }
.note.returns_void { background: #efefef; }
.note.deprecated { background: #ffe5e5; border-color: #e9dada; }
.note.private { background: #ffffc5; border-color: #ececaa; }
.note.title { text-transform: lowercase; padding: 1px 5px; font-size: 0.9em; font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif; display: inline; }
.summary_signature + .note.title { margin-left: 7px; }
h1 .note.title { font-size: 0.5em; font-weight: normal; padding: 3px 5px; position: relative; top: -3px; text-transform: capitalize; }
.note.title.constructor { color: #fff; background: #6a98d6; border-color: #6689d6; }
.note.title.writeonly { color: #fff; background: #45a638; border-color: #2da31d; }
.note.title.readonly { color: #fff; background: #6a98d6; border-color: #6689d6; }
.note.title.private { background: #d5d5d5; border-color: #c5c5c5; }
.discussion .note { margin-top: 6px; }
.discussion .note:first-child { margin-top: 0; }
h3.inherited {
font-style: italic;
font-family: "Lucida Sans", "Lucida Grande", Verdana, Arial, sans-serif;
font-weight: normal;
padding: 0;
margin: 0;
margin-top: 12px;
margin-bottom: 3px;
font-size: 13px;
}
p.inherited {
padding: 0;
margin: 0;
margin-left: 25px;
}
#filecontents dl.box, dl.box {
border: 0;
width: 520px;
font-size: 1em;
}
#filecontents dl.box dt, dl.box dt {
float: left;
display: block;
width: 100px;
margin: 0;
text-align: right;
font-weight: bold;
background: transparent;
border: 1px solid #aaa;
border-width: 1px 0px 0px 1px;
padding: 6px 0;
padding-right: 10px;
}
#filecontents dl.box dd, dl.box dd {
float: left;
display: block;
width: 380px;
margin: 0;
padding: 6px 0;
padding-right: 20px;
border: 1px solid #aaa;
border-width: 1px 1px 0 0;
}
#filecontents dl.box .last, dl.box .last {
border-bottom: 1px solid #aaa;
}
#filecontents dl.box .r1, dl.box .r1 { background: #eee; }
ul.toplevel { list-style: none; padding-left: 0; font-size: 1.1em; }
#files { padding-left: 15px; font-size: 1.1em; }
#files { padding: 0; }
#files li { list-style: none; display: inline; padding: 7px 12px; line-height: 35px; }
dl.constants { margin-left: 40px; }
dl.constants dt { font-weight: bold; font-size: 1.1em; margin-bottom: 5px; }
dl.constants dd { width: 75%; white-space: pre; font-family: monospace; margin-bottom: 18px; }
.summary_desc { margin-left: 32px; display: block; font-family: sans-serif; }
.summary_desc tt { font-size: 0.9em; }
dl.constants .note { padding: 2px 6px; padding-right: 12px; margin-top: 6px; }
dl.constants .docstring { margin-left: 32px; font-size: 0.9em; font-weight: normal; }
dl.constants .tags { padding-left: 32px; font-size: 0.9em; line-height: 0.8em; }
dl.constants .discussion *:first-child { margin-top: 0; }
dl.constants .discussion *:last-child { margin-bottom: 0; }
.method_details { border-top: 1px dotted #aaa; margin-top: 15px; padding-top: 0; }
.method_details.first { border: 0; }
p.signature {
font-size: 1.1em; font-weight: normal; font-family: Monaco, Consolas, Courier, monospace;
padding: 6px 10px; margin-top: 18px;
background: #e5e8ff; border: 1px solid #d8d8e5; -moz-border-radius: 3px; -webkit-border-radius: 3px;
}
p.signature tt { font-family: Monaco, Consolas, Courier, monospace; }
p.signature .overload { display: block; }
p.signature .extras { font-weight: normal; font-family: sans-serif; color: #444; font-size: 1em; }
p.signature .aliases { display: block; font-weight: normal; font-size: 0.9em; font-family: sans-serif; margin-top: 0px; color: #555; }
p.signature .aliases .names { font-family: Monaco, Consolas, Courier, monospace; font-weight: bold; color: #000; font-size: 1.2em; }
.tags h3 { font-size: 1em; margin-bottom: 0; }
.tags ul { margin-top: 5px; padding-left: 30px; list-style: square; }
.tags ul li { margin-bottom: 3px; }
.tags ul .name { font-family: monospace; font-weight: bold; }
.tags ul .note { padding: 3px 6px; }
.tags { margin-bottom: 12px; }
.tags .examples h3 { margin-bottom: 10px; }
.tags .examples h4 { padding: 0; margin: 0; margin-left: 15px; font-weight: bold; font-size: 0.9em; }
.tags .overload .overload_item { list-style: none; margin-bottom: 25px; }
.tags .overload .overload_item .signature {
padding: 2px 8px;
background: #e5e8ff; border: 1px solid #d8d8e5; -moz-border-radius: 3px; -webkit-border-radius: 3px;
}
.tags .overload .signature { margin-left: -15px; font-family: monospace; display: block; font-size: 1.1em; }
.tags .overload .docstring { margin-top: 15px; }
.defines { display: none; }
#method_missing_details .notice.this { position: relative; top: -8px; color: #888; padding: 0; margin: 0; }
.showSource { font-size: 0.9em; }
.showSource a:link, .showSource a:visited { text-decoration: none; color: #666; }
#content a:link, #content a:visited { text-decoration: none; color: #05a; }
#content a:hover { background: #ffffa5; }
.docstring { margin-right: 6em; }
ul.summary {
list-style: none;
font-family: monospace;
font-size: 1em;
line-height: 1.5em;
}
ul.summary a:link, ul.summary a:visited {
text-decoration: none; font-size: 1.1em;
}
ul.summary li { margin-bottom: 5px; }
.summary .summary_signature {
padding: 1px 10px;
background: #eaeaff; border: 1px solid #dfdfe5;
-moz-border-radius: 3px; -webkit-border-radius: 3px;
}
.summary_signature:hover { background: #eeeeff; cursor: pointer; }
ul.summary.compact li { display: inline-block; margin: 0px 5px 0px 0px; line-height: 2.6em;}
ul.summary.compact .summary_signature { padding: 5px 7px; padding-right: 4px; }
#content .summary_signature:hover a:link,
#content .summary_signature:hover a:visited {
background: transparent;
color: #48f;
}
p.inherited a { font-family: monospace; font-size: 0.9em; }
p.inherited { word-spacing: 5px; font-size: 1.2em; }
p.children { font-size: 1.2em; }
p.children a { font-size: 0.9em; }
p.children strong { font-size: 0.8em; }
p.children strong.modules { padding-left: 5px; }
ul.fullTree { display: none; padding-left: 0; list-style: none; margin-left: 0; margin-bottom: 10px; }
ul.fullTree ul { margin-left: 0; padding-left: 0; list-style: none; }
ul.fullTree li { text-align: center; padding-top: 18px; padding-bottom: 12px; background: url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAHtJREFUeNqMzrEJAkEURdGzuhgZbSoYWcAWoBVsB4JgZAGmphsZCZYzTQgWNCYrDN9RvMmHx+X916SUBFbo8CzD1idXrLErw1mQttgXtyrOcQ/Ny5p4Qh+2XqLYYazsPWNTiuMkRxa4vcV+evuNAUOLIx5+c2hyzv7hNQC67Q+/HHmlEwAAAABJRU5ErkJggg==) no-repeat top center; }
ul.fullTree li:first-child { padding-top: 0; background: transparent; }
ul.fullTree li:last-child { padding-bottom: 0; }
.showAll ul.fullTree { display: block; }
.showAll .inheritName { display: none; }
#search { position: absolute; right: 14px; top: 0px; }
#search a:link, #search a:visited {
display: block; float: left; margin-right: 4px;
padding: 8px 10px; text-decoration: none; color: #05a;
border: 1px solid #d8d8e5;
-moz-border-radius-bottomleft: 3px; -moz-border-radius-bottomright: 3px;
-webkit-border-bottom-left-radius: 3px; -webkit-border-bottom-right-radius: 3px;
background: #eaf0ff;
-webkit-box-shadow: -1px 1px 3px #ddd;
}
#search a:hover { background: #f5faff; color: #06b; }
#search a.active {
background: #568; padding-bottom: 20px; color: #fff; border: 1px solid #457;
-moz-border-radius-topleft: 5px; -moz-border-radius-topright: 5px;
-webkit-border-top-left-radius: 5px; -webkit-border-top-right-radius: 5px;
}
#search a.inactive { color: #999; }
.frames #search { display: none; }
.inheritanceTree, .toggleDefines { float: right; }
#menu { font-size: 1.3em; color: #bbb; top: -5px; position: relative; }
#menu .title, #menu a { font-size: 0.7em; }
#menu .title a { font-size: 1em; }
#menu .title { color: #555; }
#menu a:link, #menu a:visited { color: #333; text-decoration: none; border-bottom: 1px dotted #bbd; }
#menu a:hover { color: #05a; }
#menu .noframes { display: none; }
.frames #menu .noframes { display: inline; float: right; }
#footer { margin-top: 15px; border-top: 1px solid #ccc; text-align: center; padding: 7px 0; color: #999; }
#footer a:link, #footer a:visited { color: #444; text-decoration: none; border-bottom: 1px dotted #bbd; }
#footer a:hover { color: #05a; }
#listing ul.alpha { font-size: 1.1em; }
#listing ul.alpha { margin: 0; padding: 0; padding-bottom: 10px; list-style: none; }
#listing ul.alpha li.letter { font-size: 1.4em; padding-bottom: 10px; }
#listing ul.alpha ul { margin: 0; padding-left: 15px; }
#listing ul small { color: #666; font-size: 0.7em; }
li.r1 { background: #f0f0f0; }
li.r2 { background: #fafafa; }
#search_frame {
z-index: 9999;
background: #fff;
display: none;
position: absolute;
top: 36px;
right: 18px;
width: 500px;
height: 80%;
overflow-y: scroll;
border: 1px solid #999;
border-collapse: collapse;
-webkit-box-shadow: -7px 5px 25px #aaa;
-moz-box-shadow: -7px 5px 25px #aaa;
-moz-border-radius: 2px;
-webkit-border-radius: 2px;
}
#content ul.summary li.deprecated .summary_signature a:link,
#content ul.summary li.deprecated .summary_signature a:visited { text-decoration: line-through; font-style: italic; }
#toc {
padding: 20px; padding-right: 30px; border: 1px solid #ddd; float: right; background: #fff; margin-left: 20px; margin-bottom: 20px;
max-width: 300px;
-webkit-box-shadow: -2px 2px 6px #bbb;
-moz-box-shadow: -2px 2px 6px #bbb;
z-index: 5000;
position: relative;
}
#toc.nofloat { float: none; max-width: none; border: none; padding: 0; margin: 20px 0; -webkit-box-shadow: none; -moz-box-shadow: none; }
#toc.nofloat.hidden { padding: 0; background: 0; margin-bottom: 5px; }
#toc .title { margin: 0; }
#toc ol { padding-left: 1.8em; }
#toc li { font-size: 1.1em; line-height: 1.7em; }
#toc > ol > li { font-size: 1.1em; font-weight: bold; }
#toc ol > ol { font-size: 0.9em; }
#toc ol ol > ol { padding-left: 2.3em; }
#toc ol + li { margin-top: 0.3em; }
#toc.hidden { padding: 10px; background: #f6f6f6; -webkit-box-shadow: none; -moz-box-shadow: none; }
#filecontents h1 + #toc.nofloat { margin-top: 0; }
/* syntax highlighting */
.source_code { display: none; padding: 3px 8px; border-left: 8px solid #ddd; margin-top: 5px; }
#filecontents pre.code, .docstring pre.code, .source_code pre { font-family: monospace; }
#filecontents pre.code, .docstring pre.code { display: block; }
.source_code .lines { padding-right: 12px; color: #555; text-align: right; }
#filecontents pre.code, .docstring pre.code,
.tags .example { padding: 5px 12px; margin-top: 4px; border: 1px solid #eef; background: #f5f5ff; }
pre.code { color: #000; }
pre.code .info.file { color: #555; }
pre.code .val { color: #036A07; }
pre.code .tstring_content,
pre.code .heredoc_beg, pre.code .heredoc_end,
pre.code .qwords_beg, pre.code .qwords_end,
pre.code .tstring, pre.code .dstring { color: #036A07; }
pre.code .fid, pre.code .id.new, pre.code .id.to_s,
pre.code .id.to_sym, pre.code .id.to_f,
pre.code .dot + pre.code .id,
pre.code .id.to_i pre.code .id.each { color: #0085FF; }
pre.code .comment { color: #0066FF; }
pre.code .const, pre.code .constant { color: #585CF6; }
pre.code .symbol { color: #C5060B; }
pre.code .kw,
pre.code .label,
pre.code .id.require,
pre.code .id.extend,
pre.code .id.include { color: #0000FF; }
pre.code .ivar { color: #318495; }
pre.code .gvar,
pre.code .id.backref,
pre.code .id.nth_ref { color: #6D79DE; }
pre.code .regexp, .dregexp { color: #036A07; }
pre.code a { border-bottom: 1px dotted #bbf; }

46
doc/file_list.html Normal file
View File

@ -0,0 +1,46 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
<base id="base_target" target="_parent" />
</head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.top.frames.main) {
document.getElementById('base_target').target = 'main';
document.body.className = 'frames';
}
</script>
<div id="content">
<h1 id="full_list_header">File List</h1>
<div id="nav">
<a target="_self" href="class_list.html">Classes</a>
<a target="_self" href="method_list.html">Methods</a>
<a target="_self" href="file_list.html">Files</a>
</div>
<div id="search">Search: <input type="text" /></div>
<ul id="full_list" class="files">
</ul>
</div>
</body>
</html>

13
doc/frames.html Normal file
View File

@ -0,0 +1,13 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Documentation by YARD 0.7.2</title>
</head>
<frameset cols="20%,*">
<frame name="list" src="class_list.html" />
<frame name="main" src="index.html" />
</frameset>
</html>

172
doc/index.html Normal file
View File

@ -0,0 +1,172 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Documentation by YARD 0.7.2
</title>
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
<script type="text/javascript" charset="utf-8">
relpath = '';
if (relpath != '') relpath += '/';
</script>
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
</head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.top.frames.main) document.body.className = 'frames';
</script>
<div id="header">
<div id="menu">
<span class="title"></span>
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
</div>
<div id="search">
<a id="class_list_link" href="#">Class List</a>
<a id="method_list_link" href="#">Method List</a>
<a id="file_list_link" href="#">File List</a>
</div>
<div class="clear"></div>
</div>
<iframe id="search_frame"></iframe>
<div id="content"><h1 class="noborder title">Documentation by YARD 0.7.2</h1>
<div id="listing">
<h1 class="alphaindex">Alphabetic Index</h1>
<div class="clear"></div>
<h2>Namespace Listing A-Z</h2>
<table>
<tr>
<td valign='top' width="33%">
<ul id="alpha_A" class="alpha">
<li class="letter">A</li>
<ul>
<li>
<span class='object_link'><a href="Draper/AllHelpers.html" title="Draper::AllHelpers (module)">AllHelpers</a></span>
<small>(Draper)</small>
</li>
</ul>
</ul>
<ul id="alpha_B" class="alpha">
<li class="letter">B</li>
<ul>
<li>
<span class='object_link'><a href="Draper/Base.html" title="Draper::Base (class)">Base</a></span>
<small>(Draper)</small>
</li>
</ul>
</ul>
<ul id="alpha_D" class="alpha">
<li class="letter">D</li>
<ul>
<li>
<span class='object_link'><a href="Draper.html" title="Draper (module)">Draper</a></span>
</li>
</ul>
</ul>
<ul id="alpha_L" class="alpha">
<li class="letter">L</li>
<ul>
<li>
<span class='object_link'><a href="Draper/LazyHelpers.html" title="Draper::LazyHelpers (module)">LazyHelpers</a></span>
<small>(Draper)</small>
</li>
</ul>
</ul>
<ul id="alpha_M" class="alpha">
<li class="letter">M</li>
<ul>
<li>
<span class='object_link'><a href="Draper/ModelSupport.html" title="Draper::ModelSupport (module)">ModelSupport</a></span>
<small>(Draper)</small>
</li>
</ul>
</ul>
<ul id="alpha_S" class="alpha">
<li class="letter">S</li>
<ul>
<li>
<span class='object_link'><a href="Draper/System.html" title="Draper::System (class)">System</a></span>
<small>(Draper)</small>
</li>
</ul>
</ul>
</td>
</tr>
</table>
</div>
</div>
<div id="footer">
Generated on Thu Sep 1 01:13:36 2011 by
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
0.7.2 (ruby-1.8.7).
</div>
</body>
</html>

205
doc/js/app.js Normal file
View File

@ -0,0 +1,205 @@
function createSourceLinks() {
$('.method_details_list .source_code').
before("<span class='showSource'>[<a href='#' class='toggleSource'>View source</a>]</span>");
$('.toggleSource').toggle(function() {
$(this).parent().next().slideDown(100);
$(this).text("Hide source");
},
function() {
$(this).parent().next().slideUp(100);
$(this).text("View source");
});
}
function createDefineLinks() {
var tHeight = 0;
$('.defines').after(" <a href='#' class='toggleDefines'>more...</a>");
$('.toggleDefines').toggle(function() {
tHeight = $(this).parent().prev().height();
$(this).prev().show();
$(this).parent().prev().height($(this).parent().height());
$(this).text("(less)");
},
function() {
$(this).prev().hide();
$(this).parent().prev().height(tHeight);
$(this).text("more...");
});
}
function createFullTreeLinks() {
var tHeight = 0;
$('.inheritanceTree').toggle(function() {
tHeight = $(this).parent().prev().height();
$(this).parent().toggleClass('showAll');
$(this).text("(hide)");
$(this).parent().prev().height($(this).parent().height());
},
function() {
$(this).parent().toggleClass('showAll');
$(this).parent().prev().height(tHeight);
$(this).text("show all");
});
}
function fixBoxInfoHeights() {
$('dl.box dd.r1, dl.box dd.r2').each(function() {
$(this).prev().height($(this).height());
});
}
function searchFrameLinks() {
$('#method_list_link').click(function() {
toggleSearchFrame(this, relpath + 'method_list.html');
});
$('#class_list_link').click(function() {
toggleSearchFrame(this, relpath + 'class_list.html');
});
$('#file_list_link').click(function() {
toggleSearchFrame(this, relpath + 'file_list.html');
});
}
function toggleSearchFrame(id, link) {
var frame = $('#search_frame');
$('#search a').removeClass('active').addClass('inactive');
if (frame.attr('src') == link && frame.css('display') != "none") {
frame.slideUp(100);
$('#search a').removeClass('active inactive');
}
else {
$(id).addClass('active').removeClass('inactive');
frame.attr('src', link).slideDown(100);
}
}
function linkSummaries() {
$('.summary_signature').click(function() {
document.location = $(this).find('a').attr('href');
});
}
function framesInit() {
if (window.top.frames.main) {
document.body.className = 'frames';
$('#menu .noframes a').attr('href', document.location);
$('html head title', window.parent.document).text($('html head title').text());
}
}
function keyboardShortcuts() {
if (window.top.frames.main) return;
$(document).keypress(function(evt) {
if (evt.altKey || evt.ctrlKey || evt.metaKey || evt.shiftKey) return;
if (typeof evt.target !== "undefined" &&
(evt.target.nodeName == "INPUT" ||
evt.target.nodeName == "TEXTAREA")) return;
switch (evt.charCode) {
case 67: case 99: $('#class_list_link').click(); break; // 'c'
case 77: case 109: $('#method_list_link').click(); break; // 'm'
case 70: case 102: $('#file_list_link').click(); break; // 'f'
default: break;
}
});
}
function summaryToggle() {
$('.summary_toggle').click(function() {
localStorage.summaryCollapsed = $(this).text();
$(this).text($(this).text() == "collapse" ? "expand" : "collapse");
var next = $(this).parent().parent().next();
if (next.hasClass('compact')) {
next.toggle();
next.next().toggle();
}
else if (next.hasClass('summary')) {
var list = $('<ul class="summary compact" />');
list.html(next.html());
list.find('.summary_desc, .note').remove();
list.find('a').each(function() {
$(this).html($(this).find('strong').html());
$(this).parent().html($(this)[0].outerHTML);
});
next.before(list);
next.toggle();
}
return false;
});
if (localStorage) {
if (localStorage.summaryCollapsed == "collapse") $('.summary_toggle').click();
else localStorage.summaryCollapsed = "expand";
}
}
function fixOutsideWorldLinks() {
$('a').each(function() {
if (window.location.host != this.host) this.target = '_parent';
});
}
function generateTOC() {
if ($('#filecontents').length === 0) return;
var _toc = $('<ol class="top"></ol>');
var show = false;
var toc = _toc;
var counter = 0;
var tags = ['h2', 'h3', 'h4', 'h5', 'h6'];
var i;
if ($('#filecontents h1').length > 1) tags.unshift('h1');
for (i = 0; i < tags.length; i++) { tags[i] = '#filecontents ' + tags[i]; }
var lastTag = parseInt(tags[0][1], 10);
$(tags.join(', ')).each(function() {
if (this.id == "filecontents") return;
show = true;
var thisTag = parseInt(this.tagName[1], 10);
if (this.id.length === 0) {
var proposedId = $(this).text().replace(/[^a-z0-9-]/ig, '_');
if ($('#' + proposedId).length > 0) { proposedId += counter; counter++; }
this.id = proposedId;
}
if (thisTag > lastTag) {
for (i = 0; i < thisTag - lastTag; i++) {
var tmp = $('<ol/>'); toc.append(tmp); toc = tmp;
}
}
if (thisTag < lastTag) {
for (i = 0; i < lastTag - thisTag; i++) toc = toc.parent();
}
toc.append('<li><a href="#' + this.id + '">' + $(this).text() + '</a></li>');
lastTag = thisTag;
});
if (!show) return;
html = '<div id="toc"><p class="title"><a class="hide_toc" href="#"><strong>Table of Contents</strong></a> <small>(<a href="#" class="float_toc">left</a>)</small></p></div>';
$('#content').prepend(html);
$('#toc').append(_toc);
$('#toc .hide_toc').toggle(function() {
$('#toc .top').slideUp('fast');
$('#toc').toggleClass('hidden');
$('#toc .title small').toggle();
}, function() {
$('#toc .top').slideDown('fast');
$('#toc').toggleClass('hidden');
$('#toc .title small').toggle();
});
$('#toc .float_toc').toggle(function() {
$(this).text('float');
$('#toc').toggleClass('nofloat');
}, function() {
$(this).text('left');
$('#toc').toggleClass('nofloat');
});
}
$(framesInit);
$(createSourceLinks);
$(createDefineLinks);
$(createFullTreeLinks);
$(fixBoxInfoHeights);
$(searchFrameLinks);
$(linkSummaries);
$(keyboardShortcuts);
$(summaryToggle);
$(fixOutsideWorldLinks);
$(generateTOC);

150
doc/js/full_list.js Normal file
View File

@ -0,0 +1,150 @@
var inSearch = null;
var searchIndex = 0;
var searchCache = [];
var searchString = '';
function fullListSearch() {
// generate cache
searchCache = [];
$('#full_list li').each(function() {
var link = $(this).find('.object_link a');
searchCache.push({name:link.text(), node:$(this), link:link});
});
$('#search input').keyup(function() {
searchString = this.value.toLowerCase();
if (searchString === "") {
clearTimeout(inSearch);
inSearch = null;
$('#full_list, #content').removeClass('insearch');
$('#full_list li').removeClass('found').each(function() {
var link = $(this).find('.object_link a');
link.text(link.text());
});
if (clicked) {
clicked.parents('ul').each(function() {
$(this).removeClass('collapsed').prev().removeClass('collapsed');
});
}
highlight();
}
else {
if (inSearch) clearTimeout(inSearch);
searchIndex = 0;
lastRowClass = '';
$('#full_list, #content').addClass('insearch');
$('#noresults').text('');
searchItem();
}
});
$('#search input').focus();
$('#full_list').after("<div id='noresults'></div>");
}
var lastRowClass = '';
function searchItem() {
for (var i = 0; i < searchCache.length / 50; i++) {
var item = searchCache[searchIndex];
if (item.name.toLowerCase().indexOf(searchString) == -1) {
item.node.removeClass('found');
}
else {
item.node.css('padding-left', '10px').addClass('found');
item.node.removeClass(lastRowClass).addClass(lastRowClass == 'r1' ? 'r2' : 'r1');
lastRowClass = item.node.hasClass('r1') ? 'r1' : 'r2';
item.link.html(item.name.replace(new RegExp("(" +
searchString.replace(/([\/.*+?|()\[\]{}\\])/g, "\\$1") + ")", "ig"),
'<strong>$1</strong>'));
}
if (searchCache.length === searchIndex + 1) {
searchDone();
return;
}
else {
searchIndex++;
}
}
inSearch = setTimeout('searchItem()', 0);
}
function searchDone() {
highlight(true);
if ($('#full_list li:visible').size() === 0) {
$('#noresults').text('No results were found.').hide().fadeIn();
}
else {
$('#noresults').text('');
}
$('#content').removeClass('insearch');
clearTimeout(inSearch);
inSearch = null;
}
clicked = null;
function linkList() {
$('#full_list li, #full_list li a:last').click(function(evt) {
if ($(this).hasClass('toggle')) return true;
if (this.tagName.toLowerCase() == "li") {
var toggle = $(this).children('a.toggle');
if (toggle.size() > 0 && evt.pageX < toggle.offset().left) {
toggle.click();
return false;
}
}
if (clicked) clicked.removeClass('clicked');
var win = window.top.frames.main ? window.top.frames.main : window.parent;
if (this.tagName.toLowerCase() == "a") {
clicked = $(this).parent('li').addClass('clicked');
win.location = this.href;
}
else {
clicked = $(this).addClass('clicked');
win.location = $(this).find('a:last').attr('href');
}
return false;
});
}
function collapse() {
if (!$('#full_list').hasClass('class')) return;
$('#full_list.class a.toggle').click(function() {
$(this).parent().toggleClass('collapsed').next().toggleClass('collapsed');
highlight();
return false;
});
$('#full_list.class ul').each(function() {
$(this).addClass('collapsed').prev().addClass('collapsed');
});
$('#full_list.class').children().removeClass('collapsed');
highlight();
}
function highlight(no_padding) {
var n = 1;
$('#full_list li:visible').each(function() {
var next = n == 1 ? 2 : 1;
$(this).removeClass("r" + next).addClass("r" + n);
if (!no_padding && $('#full_list').hasClass('class')) {
$(this).css('padding-left', (10 + $(this).parents('ul').size() * 15) + 'px');
}
n = next;
});
}
function escapeShortcut() {
$(document).keydown(function(evt) {
if (evt.which == 27) {
$('#search_frame', window.top.document).slideUp(100);
$('#search a', window.top.document).removeClass('active inactive');
$(window.top).focus();
}
});
}
$(escapeShortcut);
$(fullListSearch);
$(linkList);
$(collapse);

16
doc/js/jquery.js vendored Normal file

File diff suppressed because one or more lines are too long

174
doc/method_list.html Normal file
View File

@ -0,0 +1,174 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="css/full_list.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="js/full_list.js"></script>
<base id="base_target" target="_parent" />
</head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.top.frames.main) {
document.getElementById('base_target').target = 'main';
document.body.className = 'frames';
}
</script>
<div id="content">
<h1 id="full_list_header">Method List</h1>
<div id="nav">
<a target="_self" href="class_list.html">Classes</a>
<a target="_self" href="method_list.html">Methods</a>
<a target="_self" href="file_list.html">Files</a>
</div>
<div id="search">Search: <input type="text" /></div>
<ul id="full_list" class="methods">
<li class="r1 ">
<span class='object_link'><a href="Draper/AllHelpers.html#all_helpers-instance_method" title="Draper::AllHelpers#all_helpers (method)">#all_helpers</a></span>
<small>Draper::AllHelpers</small>
</li>
<li class="r2 ">
<span class='object_link'><a href="Draper/Base.html#allows-class_method" title="Draper::Base.allows (method)">allows</a></span>
<small>Draper::Base</small>
</li>
<li class="r1 ">
<span class='object_link'><a href="Draper/Base.html#context-instance_method" title="Draper::Base#context (method)">#context</a></span>
<small>Draper::Base</small>
</li>
<li class="r2 ">
<span class='object_link'><a href="Draper/Base.html#decorate-class_method" title="Draper::Base.decorate (method)">decorate</a></span>
<small>Draper::Base</small>
</li>
<li class="r1 ">
<span class='object_link'><a href="Draper/Base.html#decorates-class_method" title="Draper::Base.decorates (method)">decorates</a></span>
<small>Draper::Base</small>
</li>
<li class="r2 ">
<span class='object_link'><a href="Draper/ModelSupport.html#decorator-instance_method" title="Draper::ModelSupport#decorator (method)">#decorator</a></span>
<small>Draper::ModelSupport</small>
</li>
<li class="r1 ">
<span class='object_link'><a href="Draper/Base.html#denies-class_method" title="Draper::Base.denies (method)">denies</a></span>
<small>Draper::Base</small>
</li>
<li class="r2 ">
<span class='object_link'><a href="Draper/Base.html#find-class_method" title="Draper::Base.find (method)">find</a></span>
<small>Draper::Base</small>
</li>
<li class="r1 ">
<span class='object_link'><a href="Draper/Base.html#helpers-instance_method" title="Draper::Base#helpers (method)">#helpers</a></span>
<small>Draper::Base</small>
</li>
<li class="r2 ">
<span class='object_link'><a href="Draper/Base.html#initialize-instance_method" title="Draper::Base#initialize (method)">#initialize</a></span>
<small>Draper::Base</small>
</li>
<li class="r1 ">
<span class='object_link'><a href="Draper/Base.html#lazy_helpers-class_method" title="Draper::Base.lazy_helpers (method)">lazy_helpers</a></span>
<small>Draper::Base</small>
</li>
<li class="r2 ">
<span class='object_link'><a href="Draper/LazyHelpers.html#method_missing-instance_method" title="Draper::LazyHelpers#method_missing (method)">#method_missing</a></span>
<small>Draper::LazyHelpers</small>
</li>
<li class="r1 ">
<span class='object_link'><a href="Draper/Base.html#model-instance_method" title="Draper::Base#model (method)">#model</a></span>
<small>Draper::Base</small>
</li>
<li class="r2 ">
<span class='object_link'><a href="Draper/Base.html#model_name-class_method" title="Draper::Base.model_name (method)">model_name</a></span>
<small>Draper::Base</small>
</li>
<li class="r1 ">
<span class='object_link'><a href="Draper/System.html#setup-class_method" title="Draper::System.setup (method)">setup</a></span>
<small>Draper::System</small>
</li>
<li class="r2 ">
<span class='object_link'><a href="Draper/Base.html#to_model-instance_method" title="Draper::Base#to_model (method)">#to_model</a></span>
<small>Draper::Base</small>
</li>
</ul>
</div>
</body>
</html>

View File

@ -0,0 +1,103 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
Top Level Namespace
&mdash; Documentation by YARD 0.7.2
</title>
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" charset="utf-8" />
<link rel="stylesheet" href="css/common.css" type="text/css" media="screen" charset="utf-8" />
<script type="text/javascript" charset="utf-8">
relpath = '';
if (relpath != '') relpath += '/';
</script>
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
</head>
<body>
<script type="text/javascript" charset="utf-8">
if (window.top.frames.main) document.body.className = 'frames';
</script>
<div id="header">
<div id="menu">
<a href="_index.html">Index</a> &raquo;
<span class="title">Top Level Namespace</span>
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
</div>
<div id="search">
<a id="class_list_link" href="#">Class List</a>
<a id="method_list_link" href="#">Method List</a>
<a id="file_list_link" href="#">File List</a>
</div>
<div class="clear"></div>
</div>
<iframe id="search_frame"></iframe>
<div id="content"><h1>Top Level Namespace
</h1>
<dl class="box">
</dl>
<div class="clear"></div>
<h2>Defined Under Namespace</h2>
<p class="children">
<strong class="modules">Modules:</strong> <span class='object_link'><a href="Draper.html" title="Draper (module)">Draper</a></span>
</p>
</div>
<div id="footer">
Generated on Thu Sep 1 01:13:37 2011 by
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
0.7.2 (ruby-1.8.7).
</div>
</body>
</html>

View File

@ -8,6 +8,12 @@ module Draper
FORCED_PROXY = [:to_param]
self.denied = DEFAULT_DENIED
# Initialize a new decorator instance by passing in
# an instance of the source class. Pass in an optional
# context is stored for later use.
#
# @param [Object] instance to wrap
# @param [Object] context (optional)
def initialize(input, context = nil)
input.inspect # forces evaluation of a lazy query from AR
self.class.model_class = input.class if model_class.nil?
@ -16,44 +22,105 @@ module Draper
build_methods
end
# Proxies to the class specified by `decorates` to automatically
# lookup an object in the database and decorate it.
#
# @param [Symbol or String] id to lookup
# @return [Object] instance of this decorator class
def self.find(input)
self.new(model_class.find(input))
end
# Typically called within a decorator definition, this method
# specifies the name of the wrapped object class.
#
# For instance, a `ProductDecorator` class might call `decorates :product`
#
# But they don't have to match in name, so a `EmployeeDecorator`
# class could call `decorates :person` to wrap instances of `Person`
#
# This is primarilly set so the `.find` method knows which class
# to query.
#
# @param [Symbol] class_name snakecase name of the decorated class, like `:product`
def self.decorates(input)
self.model_class = input.to_s.camelize.constantize
model_class.send :include, Draper::ModelSupport
end
# Specifies a black list of methods which may *not* be proxied to
# to the wrapped object.
#
# Do not use both `.allows` and `.denies` together, either write
# a whitelist with `.allows` or a blacklist with `.denies`
#
# @param [Symbols*] methods to deny like `:find, :find_by_name`
def self.denies(*input_denied)
raise ArgumentError, "Specify at least one method (as a symbol) to exclude when using denies" if input_denied.empty?
raise ArgumentError, "Use either 'allows' or 'denies', but not both." if self.allowed?
self.denied += input_denied
end
# Specifies a white list of methods which *may* be proxied to
# to the wrapped object. When `allows` is used, only the listed
# methods and methods defined in the decorator itself will be
# available.
#
# Do not use both `.allows` and `.denies` together, either write
# a whitelist with `.allows` or a blacklist with `.denies`
#
# @param [Symbols*] methods to allow like `:find, :find_by_name`
def self.allows(*input_allows)
raise ArgumentError, "Specify at least one method (as a symbol) to allow when using allows" if input_allows.empty?
raise ArgumentError, "Use either 'allows' or 'denies', but not both." unless (self.denied == DEFAULT_DENIED)
self.allowed = input_allows
end
# Initialize a new decorator instance by passing in
# an instance of the source class. Pass in an optional
# context is stored for later use.
#
# When passing in a single object, using `.decorate` is
# identical to calling `.new`. However, `.decorate` can
# also accept a collection and return a collection of
# individually decorated objects.
#
# @param [Object] instance(s) to wrap
# @param [Object] context (optional)
def self.decorate(input, context = nil)
input.respond_to?(:each) ? input.map{|i| new(i, context)} : new(input, context)
end
# Access the helpers proxy to call built-in and user-defined
# Rails helpers. Aliased to `.h` for convinience.
#
# @return [Object] proxy
def helpers
@helpers ||= ApplicationController::all_helpers
end
alias :h :helpers
# Calling `lazy_helpers` will make the built-in and
# user-defined Rails helpers accessible as class methods
# in the decorator without using the `h.` or `helpers.` proxy.
#
# The drawback is that you dump many methods into your decorator's
# namespace and collisions could create unexpected results.
def self.lazy_helpers
self.send(:include, Draper::LazyHelpers)
end
# Use primarily by `form_for`, this returns an instance of
# `ActiveModel::Name` set to the wrapped model's class name
#
# @return [ActiveModel::Name] model_name
def self.model_name
ActiveModel::Name.new(model_class)
end
# Fetch the original wrapped model.
#
# @return [Object] original_model
def to_model
@model
end