PageRenderTime 68ms CodeModel.GetById 37ms RepoModel.GetById 0ms app.codeStats 0ms

/docs/gem.erubis-2.7.0/classes/Erubis/TinyEruby.html

https://github.com/toy/rb
HTML | 287 lines | 196 code | 91 blank | 0 comment | 0 complexity | ae7d52fe73c0f69d34c55150d28d680c MD5 | raw file
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  5. <head>
  6. <title>Erubis::TinyEruby</title>
  7. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  8. <link rel="stylesheet" href="../../css/reset.css" type="text/css" media="screen" />
  9. <link rel="stylesheet" href="../../css/main.css" type="text/css" media="screen" />
  10. <script src="../../js/jquery-1.3.2.min.js" type="text/javascript" charset="utf-8"></script>
  11. <script src="../../js/jquery-effect.js" type="text/javascript" charset="utf-8"></script>
  12. <script src="../../js/main.js" type="text/javascript" charset="utf-8"></script>
  13. </head>
  14. <body>
  15. <div class="banner">
  16. <h1>
  17. <span class="type">Class</span>
  18. Erubis::TinyEruby
  19. <span class="parent">&lt;
  20. <a href="../Object.html">Object</a>
  21. </span>
  22. </h1>
  23. <ul class="files">
  24. <li><a href="../../files/lib/erubis/tiny_rb.html">lib/erubis/tiny.rb</a></li>
  25. </ul>
  26. </div>
  27. <div id="bodyContent">
  28. <div id="content">
  29. <div class="description">
  30. <p>
  31. tiny and the simplest implementation of eRuby
  32. </p>
  33. <p>
  34. ex.
  35. </p>
  36. <pre>
  37. eruby = TinyEruby.new(File.read('example.rhtml'))
  38. print eruby.src # print ruby code
  39. print eruby.result(binding()) # eval ruby code with Binding object
  40. print eruby.evalute(context) # eval ruby code with context object
  41. </pre>
  42. </div>
  43. <div class="sectiontitle">Methods</div>
  44. <dl class="methods">
  45. <dt>C</dt>
  46. <dd>
  47. <ul>
  48. <li><a href="#M000286">convert</a></li>
  49. </ul>
  50. </dd>
  51. <dt>E</dt>
  52. <dd>
  53. <ul>
  54. <li><a href="#M000289">evaluate</a></li>
  55. </ul>
  56. </dd>
  57. <dt>N</dt>
  58. <dd>
  59. <ul>
  60. <li><a href="#M000285">new</a></li>
  61. </ul>
  62. </dd>
  63. <dt>R</dt>
  64. <dd>
  65. <ul>
  66. <li><a href="#M000288">result</a></li>
  67. </ul>
  68. </dd>
  69. </dl>
  70. <div class="sectiontitle">Constants</div>
  71. <table border='0' cellpadding='5'>
  72. <tr valign='top'>
  73. <td class="attr-name">EMBEDDED_PATTERN</td>
  74. <td>=</td>
  75. <td class="attr-value">/&lt;%(=+|\#)?(.*?)-?%&gt;/m</td>
  76. </tr>
  77. </table>
  78. <div class="sectiontitle">Attributes</div>
  79. <table border='0' cellpadding='5'>
  80. <tr valign='top'>
  81. <td class='attr-rw'>
  82. [R]
  83. </td>
  84. <td class='attr-name'>src</td>
  85. <td class='attr-desc'></td>
  86. </tr>
  87. </table>
  88. <div class="sectiontitle">Class Public methods</div>
  89. <div class="method">
  90. <div class="title" id="M000285">
  91. <a name="M000285"></a><b>new</b>(input=nil)
  92. </div>
  93. <div class="sourcecode">
  94. <p class="source-link">
  95. Source: <a href="javascript:toggleSource('M000285_source')" id="l_M000285_source">show</a>
  96. </p>
  97. <div id="M000285_source" class="dyn-source">
  98. <pre> <span class="ruby-comment cmt"># File lib/erubis/tiny.rb, line 19</span>
  99. 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>)
  100. 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>
  101. 21: <span class="ruby-keyword kw">end</span></pre>
  102. </div>
  103. </div>
  104. </div>
  105. <div class="sectiontitle">Instance Public methods</div>
  106. <div class="method">
  107. <div class="title" id="M000286">
  108. <a name="M000286"></a><b>convert</b>(input)
  109. </div>
  110. <div class="sourcecode">
  111. <p class="source-link">
  112. Source: <a href="javascript:toggleSource('M000286_source')" id="l_M000286_source">show</a>
  113. </p>
  114. <div id="M000286_source" class="dyn-source">
  115. <pre> <span class="ruby-comment cmt"># File lib/erubis/tiny.rb, line 26</span>
  116. 26: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convert</span>(<span class="ruby-identifier">input</span>)
  117. 27: <span class="ruby-identifier">src</span> = <span class="ruby-value str">&quot;_buf = '';&quot;</span> <span class="ruby-comment cmt"># preamble</span>
  118. 28: <span class="ruby-identifier">pos</span> = <span class="ruby-value">0</span>
  119. 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>
  120. 30: <span class="ruby-identifier">m</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">last_match</span>
  121. 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>)]
  122. 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>)
  123. 33: <span class="ruby-comment cmt">#src &lt;&lt; &quot; _buf &lt;&lt; '&quot; &lt;&lt; escape_text(text) &lt;&lt; &quot;';&quot;</span>
  124. 34: <span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/['\\]/</span>, <span class="ruby-value str">'\\\\\&amp;'</span>)
  125. 35: <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; _buf &lt;&lt; '&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">text</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;';&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">empty?</span>
  126. 36: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">indicator</span> <span class="ruby-comment cmt"># &lt;% %&gt;</span>
  127. 37: <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">code</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;;&quot;</span>
  128. 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"># &lt;%# %&gt;</span>
  129. 39: <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">code</span>.<span class="ruby-identifier">count</span>(<span class="ruby-value str">&quot;\n&quot;</span>))
  130. 40: <span class="ruby-keyword kw">else</span> <span class="ruby-comment cmt"># &lt;%= %&gt;</span>
  131. 41: <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; _buf &lt;&lt; (&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">code</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;).to_s;&quot;</span>
  132. 42: <span class="ruby-keyword kw">end</span>
  133. 43: <span class="ruby-keyword kw">end</span>
  134. 44: <span class="ruby-comment cmt">#rest = $' || input # ruby1.8</span>
  135. 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>
  136. 46: <span class="ruby-comment cmt">#src &lt;&lt; &quot; _buf &lt;&lt; '&quot; &lt;&lt; escape_text(rest) &lt;&lt; &quot;';&quot;</span>
  137. 47: <span class="ruby-identifier">rest</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/['\\]/</span>, <span class="ruby-value str">'\\\\\&amp;'</span>)
  138. 48: <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; _buf &lt;&lt; '&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">rest</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;';&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">rest</span>.<span class="ruby-identifier">empty?</span>
  139. 49: <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;\n_buf.to_s\n&quot;</span> <span class="ruby-comment cmt"># postamble</span>
  140. 50: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">src</span>
  141. 51: <span class="ruby-keyword kw">end</span></pre>
  142. </div>
  143. </div>
  144. </div>
  145. <div class="method">
  146. <div class="title" id="M000289">
  147. <a name="M000289"></a><b>evaluate</b>(_context=Object.new)
  148. </div>
  149. <div class="sourcecode">
  150. <p class="source-link">
  151. Source: <a href="javascript:toggleSource('M000289_source')" id="l_M000289_source">show</a>
  152. </p>
  153. <div id="M000289_source" class="dyn-source">
  154. <pre> <span class="ruby-comment cmt"># File lib/erubis/tiny.rb, line 61</span>
  155. 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>)
  156. 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>)
  157. 63: <span class="ruby-identifier">_obj</span> = <span class="ruby-constant">Object</span>.<span class="ruby-identifier">new</span>
  158. 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">&quot;@#{k}&quot;</span>, <span class="ruby-identifier">v</span>) <span class="ruby-keyword kw">end</span>
  159. 65: <span class="ruby-identifier">_context</span> = <span class="ruby-identifier">_obj</span>
  160. 66: <span class="ruby-keyword kw">end</span>
  161. 67: <span class="ruby-identifier">_context</span>.<span class="ruby-identifier">instance_eval</span> <span class="ruby-ivar">@src</span>
  162. 68: <span class="ruby-keyword kw">end</span></pre>
  163. </div>
  164. </div>
  165. </div>
  166. <div class="method">
  167. <div class="title" id="M000288">
  168. <a name="M000288"></a><b>result</b>(_binding=TOPLEVEL_BINDING)
  169. </div>
  170. <div class="description">
  171. <p>
  172. def escape_text(text)
  173. </p>
  174. <pre>
  175. return text.gsub!(/['\\]/, '\\\\\&amp;') || text
  176. </pre>
  177. <p>
  178. end
  179. </p>
  180. </div>
  181. <div class="sourcecode">
  182. <p class="source-link">
  183. Source: <a href="javascript:toggleSource('M000288_source')" id="l_M000288_source">show</a>
  184. </p>
  185. <div id="M000288_source" class="dyn-source">
  186. <pre> <span class="ruby-comment cmt"># File lib/erubis/tiny.rb, line 57</span>
  187. 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>)
  188. 58: <span class="ruby-identifier">eval</span> <span class="ruby-ivar">@src</span>, <span class="ruby-identifier">_binding</span>
  189. 59: <span class="ruby-keyword kw">end</span></pre>
  190. </div>
  191. </div>
  192. </div>
  193. </div>
  194. </div>
  195. </body>
  196. </html>