/docs/gem.erubis-2.7.0/classes/Erubis/TinyEruby.html
HTML | 287 lines | 196 code | 91 blank | 0 comment | 0 complexity | ae7d52fe73c0f69d34c55150d28d680c MD5 | raw file
- <?xml version="1.0" encoding="utf-8"?>
- <!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>
- <title>Erubis::TinyEruby</title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <link rel="stylesheet" href="../../css/reset.css" type="text/css" media="screen" />
- <link rel="stylesheet" href="../../css/main.css" type="text/css" media="screen" />
- <script src="../../js/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script>
- <script src="../../js/jquery-effect.js" type="text/javascript" charset="utf-8"></script>
- <script src="../../js/main.js" type="text/javascript" charset="utf-8"></script>
- </head>
- <body>
- <div class="banner">
- <h1>
- <span class="type">Class</span>
- Erubis::TinyEruby
-
- <span class="parent"><
-
- <a href="../Object.html">Object</a>
-
- </span>
-
- </h1>
- <ul class="files">
-
- <li><a href="../../files/lib/erubis/tiny_rb.html">lib/erubis/tiny.rb</a></li>
-
- </ul>
- </div>
- <div id="bodyContent">
- <div id="content">
-
- <div class="description">
- <p>
- tiny and the simplest implementation of eRuby
- </p>
- <p>
- ex.
- </p>
- <pre>
- eruby = TinyEruby.new(File.read('example.rhtml'))
- print eruby.src # print ruby code
- print eruby.result(binding()) # eval ruby code with Binding object
- print eruby.evalute(context) # eval ruby code with context object
- </pre>
- </div>
-
-
-
-
-
-
- <div class="sectiontitle">Methods</div>
- <dl class="methods">
-
- <dt>C</dt>
- <dd>
- <ul>
-
- <li><a href="#M000286">convert</a></li>
-
- </ul>
- </dd>
-
- <dt>E</dt>
- <dd>
- <ul>
-
- <li><a href="#M000289">evaluate</a></li>
-
- </ul>
- </dd>
-
- <dt>N</dt>
- <dd>
- <ul>
-
- <li><a href="#M000285">new</a></li>
-
- </ul>
- </dd>
-
- <dt>R</dt>
- <dd>
- <ul>
-
- <li><a href="#M000288">result</a></li>
-
- </ul>
- </dd>
-
- </dl>
-
-
-
-
-
- <div class="sectiontitle">Constants</div>
- <table border='0' cellpadding='5'>
-
- <tr valign='top'>
- <td class="attr-name">EMBEDDED_PATTERN</td>
- <td>=</td>
- <td class="attr-value">/<%(=+|\#)?(.*?)-?%>/m</td>
- </tr>
-
-
- </table>
-
-
- <div class="sectiontitle">Attributes</div>
- <table border='0' cellpadding='5'>
-
- <tr valign='top'>
- <td class='attr-rw'>
- [R]
- </td>
- <td class='attr-name'>src</td>
- <td class='attr-desc'></td>
- </tr>
-
- </table>
-
-
- <div class="sectiontitle">Class Public methods</div>
-
- <div class="method">
- <div class="title" id="M000285">
-
- <a name="M000285"></a><b>new</b>(input=nil)
-
- </div>
-
-
-
-
- <div class="sourcecode">
- <p class="source-link">
- Source: <a href="javascript:toggleSource('M000285_source')" id="l_M000285_source">show</a>
-
- </p>
- <div id="M000285_source" class="dyn-source">
- <pre> <span class="ruby-comment cmt"># File lib/erubis/tiny.rb, line 19</span>
- 19: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">input</span>=<span class="ruby-keyword kw">nil</span>)
- 20: <span class="ruby-ivar">@src</span> = <span class="ruby-identifier">convert</span>(<span class="ruby-identifier">input</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">input</span>
- 21: <span class="ruby-keyword kw">end</span></pre>
- </div>
- </div>
-
- </div>
-
- <div class="sectiontitle">Instance Public methods</div>
-
- <div class="method">
- <div class="title" id="M000286">
-
- <a name="M000286"></a><b>convert</b>(input)
-
- </div>
-
-
-
-
- <div class="sourcecode">
- <p class="source-link">
- Source: <a href="javascript:toggleSource('M000286_source')" id="l_M000286_source">show</a>
-
- </p>
- <div id="M000286_source" class="dyn-source">
- <pre> <span class="ruby-comment cmt"># File lib/erubis/tiny.rb, line 26</span>
- 26: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convert</span>(<span class="ruby-identifier">input</span>)
- 27: <span class="ruby-identifier">src</span> = <span class="ruby-value str">"_buf = '';"</span> <span class="ruby-comment cmt"># preamble</span>
- 28: <span class="ruby-identifier">pos</span> = <span class="ruby-value">0</span>
- 29: <span class="ruby-identifier">input</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-constant">EMBEDDED_PATTERN</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">indicator</span>, <span class="ruby-identifier">code</span><span class="ruby-operator">|</span>
- 30: <span class="ruby-identifier">m</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">last_match</span>
- 31: <span class="ruby-identifier">text</span> = <span class="ruby-identifier">input</span>[<span class="ruby-identifier">pos</span><span class="ruby-operator">...</span><span class="ruby-identifier">m</span>.<span class="ruby-identifier">begin</span>(<span class="ruby-value">0</span>)]
- 32: <span class="ruby-identifier">pos</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>)
- 33: <span class="ruby-comment cmt">#src << " _buf << '" << escape_text(text) << "';"</span>
- 34: <span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/['\\]/</span>, <span class="ruby-value str">'\\\\\&'</span>)
- 35: <span class="ruby-identifier">src</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">" _buf << '"</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">text</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"';"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">empty?</span>
- 36: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">indicator</span> <span class="ruby-comment cmt"># <% %></span>
- 37: <span class="ruby-identifier">src</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">code</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">";"</span>
- 38: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">indicator</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'#'</span> <span class="ruby-comment cmt"># <%# %></span>
- 39: <span class="ruby-identifier">src</span> <span class="ruby-operator"><<</span> (<span class="ruby-value str">"\n"</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">code</span>.<span class="ruby-identifier">count</span>(<span class="ruby-value str">"\n"</span>))
- 40: <span class="ruby-keyword kw">else</span> <span class="ruby-comment cmt"># <%= %></span>
- 41: <span class="ruby-identifier">src</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">" _buf << ("</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">code</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">").to_s;"</span>
- 42: <span class="ruby-keyword kw">end</span>
- 43: <span class="ruby-keyword kw">end</span>
- 44: <span class="ruby-comment cmt">#rest = $' || input # ruby1.8</span>
- 45: <span class="ruby-identifier">rest</span> = <span class="ruby-identifier">pos</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">input</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">input</span>[<span class="ruby-identifier">pos</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>] <span class="ruby-comment cmt"># ruby1.9</span>
- 46: <span class="ruby-comment cmt">#src << " _buf << '" << escape_text(rest) << "';"</span>
- 47: <span class="ruby-identifier">rest</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/['\\]/</span>, <span class="ruby-value str">'\\\\\&'</span>)
- 48: <span class="ruby-identifier">src</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">" _buf << '"</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">rest</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"';"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">rest</span>.<span class="ruby-identifier">empty?</span>
- 49: <span class="ruby-identifier">src</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"\n_buf.to_s\n"</span> <span class="ruby-comment cmt"># postamble</span>
- 50: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">src</span>
- 51: <span class="ruby-keyword kw">end</span></pre>
- </div>
- </div>
-
- </div>
-
- <div class="method">
- <div class="title" id="M000289">
-
- <a name="M000289"></a><b>evaluate</b>(_context=Object.new)
-
- </div>
-
-
-
-
- <div class="sourcecode">
- <p class="source-link">
- Source: <a href="javascript:toggleSource('M000289_source')" id="l_M000289_source">show</a>
-
- </p>
- <div id="M000289_source" class="dyn-source">
- <pre> <span class="ruby-comment cmt"># File lib/erubis/tiny.rb, line 61</span>
- 61: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">evaluate</span>(<span class="ruby-identifier">_context</span>=<span class="ruby-constant">Object</span>.<span class="ruby-identifier">new</span>)
- 62: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">_context</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>)
- 63: <span class="ruby-identifier">_obj</span> = <span class="ruby-constant">Object</span>.<span class="ruby-identifier">new</span>
- 64: <span class="ruby-identifier">_context</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">k</span>, <span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">_obj</span>.<span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-node">"@#{k}"</span>, <span class="ruby-identifier">v</span>) <span class="ruby-keyword kw">end</span>
- 65: <span class="ruby-identifier">_context</span> = <span class="ruby-identifier">_obj</span>
- 66: <span class="ruby-keyword kw">end</span>
- 67: <span class="ruby-identifier">_context</span>.<span class="ruby-identifier">instance_eval</span> <span class="ruby-ivar">@src</span>
- 68: <span class="ruby-keyword kw">end</span></pre>
- </div>
- </div>
-
- </div>
-
- <div class="method">
- <div class="title" id="M000288">
-
- <a name="M000288"></a><b>result</b>(_binding=TOPLEVEL_BINDING)
-
- </div>
-
- <div class="description">
- <p>
- def escape_text(text)
- </p>
- <pre>
- return text.gsub!(/['\\]/, '\\\\\&') || text
- </pre>
- <p>
- end
- </p>
- </div>
-
-
-
-
- <div class="sourcecode">
- <p class="source-link">
- Source: <a href="javascript:toggleSource('M000288_source')" id="l_M000288_source">show</a>
-
- </p>
- <div id="M000288_source" class="dyn-source">
- <pre> <span class="ruby-comment cmt"># File lib/erubis/tiny.rb, line 57</span>
- 57: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">result</span>(<span class="ruby-identifier">_binding</span>=<span class="ruby-constant">TOPLEVEL_BINDING</span>)
- 58: <span class="ruby-identifier">eval</span> <span class="ruby-ivar">@src</span>, <span class="ruby-identifier">_binding</span>
- 59: <span class="ruby-keyword kw">end</span></pre>
- </div>
- </div>
-
- </div>
-
- </div>
- </div>
- </body>
- </html>