/htdocs/haml/classes/Sass/Callbacks.html

https://github.com/JerryWho/railsdoccompilation · HTML · 87 lines · 72 code · 14 blank · 1 comment · 0 complexity · a079a0df4b2241c233951849929da5a5 MD5 · raw file

  1. <div id="C00000156">
  2. <div class='banner'>
  3. <span class="file-title-prefix">Module</span><br />Callbacks<br/>
  4. In:
  5. <a href="#" onclick="jsHref('files/lib/sass/callbacks_rb.html');">lib/sass/callbacks.rb</a>
  6. </div>
  7. <!-- banner header -->
  8. <div id="bodyContent" >
  9. <div id="content">
  10. <div class="description"><p>
  11. A lightweight infrastructure for defining and running callbacks. <a
  12. href="index.html?a=C00000156&name=Callbacks">Callbacks</a> are defined
  13. using \{define_callback\} at the class level, and called using
  14. `run_#{name}` at the instance level.
  15. </p>
  16. <p>
  17. Clients can add callbacks by calling the generated `on_#{name}` method, and
  18. passing in a block that&#8217;s run when the callback is activated.
  19. </p>
  20. <p>
  21. @example Define a callback class Munger
  22. </p>
  23. <pre>
  24. extend Sass::Callbacks
  25. define_callback :string_munged
  26. def munge(str)
  27. res = str.gsub(/[a-z]/, '\1\1')
  28. run_string_munged str, res
  29. res
  30. end
  31. </pre>
  32. <p>
  33. end
  34. </p>
  35. <p>
  36. @example Use a callback m = Munger.new m.on_string_munged {|str, res| puts
  37. &quot;#{str} was munged into #{res}!&quot;} m.munge &quot;bar&quot; #=&gt;
  38. bar was munged into bbaarr!
  39. </p>
  40. </div>
  41. <div class="sectiontitle">Methods</div>
  42. <ul>
  43. <li><a href="index.html?a=M001516&name=define_callback" >define_callback</a></li>
  44. </ul>
  45. <div class="sectiontitle">Protected Instance methods</div>
  46. <div id="M001516" class="method">
  47. <div id="M001516_title" class="title">
  48. <b>define_callback</b>(name)
  49. </div>
  50. <div class="description">
  51. <p>
  52. Define a callback with the given name. This will define an `on_#{name}`
  53. method that registers a block, and a `run_#{name}` method that runs that
  54. block (optionall with some arguments).
  55. </p>
  56. <p>
  57. @param name [Symbol] The name of the callback @return [void]
  58. </p>
  59. </div>
  60. <div class="sourcecode">
  61. <p class="source-link">[ <a href="javascript:toggleSource('M001516_source')" id="l_M001516_source">show source</a> ]</p>
  62. <div id="M001516_source" class="dyn-source">
  63. <pre>
  64. <span class="ruby-comment cmt"># File lib/sass/callbacks.rb, line 36</span>
  65. 36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">define_callback</span>(<span class="ruby-identifier">name</span>)
  66. 37: <span class="ruby-identifier">class_eval</span> <span class="ruby-value str">&quot;def on_\#{name}(&amp;block)\n @_sass_callbacks ||= {}\n (@_sass_callbacks[\#{name.inspect}] ||= []) &lt;&lt; block\nend\n\ndef run_\#{name}(*args)\n return unless @_sass_callbacks\n return unless @_sass_callbacks[\#{name.inspect}]\n @_sass_callbacks[\#{name.inspect}].each {|c| c[*args]}\nend\nprivate :run_\#{name}\n&quot;</span>
  67. 38: <span class="ruby-keyword kw">end</span>
  68. </pre>
  69. </div>
  70. </div>
  71. </div>
  72. </div>
  73. </div>