Permalink
Browse files

Created gh-pages branch via GitHub

  • Loading branch information...
0 parents commit 43c5293e768509f75e1c3db1f7f81daab44ea3bf @jbarnette committed Mar 29, 2012
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@@ -0,0 +1,164 @@
+<!DOCTYPE html>
+<html>
+
+ <head>
+ <meta charset='utf-8' />
+ <meta http-equiv="X-UA-Compatible" content="chrome=1" />
+ <meta name="description" content="Watchable : A simple event/notification mixin for Ruby." />
+
+ <link rel="stylesheet" type="text/css" media="screen" href="stylesheets/stylesheet.css">
+
+ <title>Watchable</title>
+ </head>
+
+ <body>
+
+ <!-- HEADER -->
+ <div id="header_wrap" class="outer">
+ <header class="inner">
+ <a id="forkme_banner" href="https://github.com/jbarnette/watchable">Fork Me on GitHub</a>
+
+ <h1 id="project_title">Watchable</h1>
+ <h2 id="project_tagline">A simple event/notification mixin for Ruby.</h2>
+
+ <section id="downloads">
+ <a class="zip_download_link" href="https://github.com/jbarnette/watchable/zipball/master">Download this project as a .zip file</a>
+ <a class="tar_download_link" href="https://github.com/jbarnette/watchable/tarball/master">Download this project as a tar.gz file</a>
+ </section>
+ </header>
+ </div>
+
+ <!-- MAIN CONTENT -->
+ <div id="main_content_wrap" class="outer">
+ <section id="main_content" class="inner">
+ <p>This is code I've had floating around for a few years now, but I've
+also incorporated a few extras from node.js' <a href="http://nodejs.org/api/events.html#events_class_events_eventemitter">EventEmitter</a>,
+<a href="http://api.jquery.com/on">jQuery</a>, and <a href="http://documentcloud.github.com/backbone/#Events">Backbone.Events</a>.</p>
+
+<h3>Examples</h3>
+
+<h4>Fixtures</h4>
+
+<div class="highlight">
+<pre><span class="nb">require</span> <span class="s2">"watchable"</span>
+
+<span class="k">class</span> <span class="nc">Frob</span>
+ <span class="kp">include</span> <span class="no">Watchable</span>
+<span class="k">end</span>
+
+<span class="k">class</span> <span class="nc">Callable</span>
+ <span class="k">def</span> <span class="nf">call</span> <span class="o">*</span><span class="n">args</span>
+ <span class="nb">p</span> <span class="ss">:called!</span> <span class="o">=&gt;</span> <span class="n">args</span>
+ <span class="k">end</span>
+<span class="k">end</span>
+</pre>
+</div>
+
+
+<h4>Watching and Firing</h4>
+
+<p>Events can have any number of watchers. Each watcher will be called
+in order, and any args provided when the event is fired will be passed
+along. Watchers will most commonly be blocks, but any object that
+responds to <code>call</code> can be used instead.</p>
+
+<div class="highlight">
+<pre><span class="n">frob</span> <span class="o">=</span> <span class="no">Frob</span><span class="o">.</span><span class="n">new</span>
+
+<span class="n">frob</span><span class="o">.</span><span class="n">on</span> <span class="ss">:twiddle</span> <span class="k">do</span> <span class="o">|</span><span class="nb">name</span><span class="o">|</span>
+ <span class="nb">puts</span> <span class="s2">"</span><span class="si">#{</span><span class="nb">name</span><span class="si">}</span><span class="s2"> twiddled the frob!"</span>
+<span class="k">end</span>
+
+<span class="n">frob</span><span class="o">.</span><span class="n">on</span> <span class="ss">:twiddle</span> <span class="k">do</span> <span class="o">|</span><span class="nb">name</span><span class="o">|</span>
+ <span class="nb">puts</span> <span class="s2">"(not that there's anything wrong with that)"</span>
+<span class="k">end</span>
+
+<span class="n">frob</span><span class="o">.</span><span class="n">on</span> <span class="ss">:twiddle</span><span class="p">,</span> <span class="no">Callable</span><span class="o">.</span><span class="n">new</span>
+<span class="n">frob</span><span class="o">.</span><span class="n">fire</span> <span class="ss">:twiddle</span><span class="p">,</span> <span class="s2">"John"</span>
+</pre>
+</div>
+
+
+<h5>Result</h5>
+
+<pre><code>John twiddled the frob!
+(not that there's anything wrong with that)
+{ :called! =&gt; ["John"] }
+</code></pre>
+
+<h4>Watching Everything</h4>
+
+<p>Want to see every event? Register for <code>:all</code>. The first argument will
+be the name of the fired event.</p>
+
+<div class="highlight">
+<pre><span class="n">frob</span> <span class="o">=</span> <span class="no">Frob</span><span class="o">.</span><span class="n">new</span>
+
+<span class="n">frob</span><span class="o">.</span><span class="n">on</span> <span class="ss">:all</span> <span class="k">do</span> <span class="o">|</span><span class="n">event</span><span class="p">,</span> <span class="n">culprit</span><span class="o">|</span>
+ <span class="nb">p</span> <span class="ss">:fired</span> <span class="o">=&gt;</span> <span class="o">[</span><span class="n">event</span><span class="p">,</span> <span class="n">culprit</span><span class="o">]</span>
+<span class="k">end</span>
+
+<span class="n">frob</span><span class="o">.</span><span class="n">fire</span> <span class="ss">:foo</span><span class="p">,</span> <span class="s2">"John"</span>
+</pre>
+</div>
+
+
+<h5>Result</h5>
+
+<pre><code>{:fired =&gt; [:foo, "John"]}
+</code></pre>
+
+<h4>Watching Once</h4>
+
+<p>Only want to be notified the first time something happens? <code>once</code> is
+like <code>on</code>, but fickle.</p>
+
+<div class="highlight">
+<pre><span class="n">frob</span> <span class="o">=</span> <span class="no">Frob</span><span class="o">.</span><span class="n">new</span>
+
+<span class="n">frob</span><span class="o">.</span><span class="n">once</span> <span class="ss">:twiddle</span> <span class="k">do</span>
+ <span class="nb">p</span> <span class="ss">:twiddled!</span>
+<span class="k">end</span>
+
+<span class="n">frob</span><span class="o">.</span><span class="n">fire</span> <span class="ss">:twiddle</span>
+<span class="n">frob</span><span class="o">.</span><span class="n">fire</span> <span class="ss">:twiddle</span>
+</pre>
+</div>
+
+
+<h5>Result</h5>
+
+<pre><code>:twiddled!
+</code></pre>
+
+<h4>Unwatching</h4>
+
+<p>Specific blocks or callable objects can be removed from an event's
+watchers, or all the event's watchers can be removed.</p>
+
+<div class="highlight">
+<pre><span class="n">b</span> <span class="o">=</span> <span class="nb">lambda</span> <span class="p">{}</span>
+<span class="n">frob</span> <span class="o">=</span> <span class="no">Frob</span><span class="o">.</span><span class="n">new</span>
+
+<span class="n">frob</span><span class="o">.</span><span class="n">on</span> <span class="ss">:twiddle</span><span class="p">,</span> <span class="o">&amp;</span><span class="n">b</span>
+
+<span class="n">frob</span><span class="o">.</span><span class="n">off</span> <span class="ss">:twiddle</span><span class="p">,</span> <span class="n">b</span> <span class="c1"># removes the 'b' watcher, same as frob.off :twiddle, &amp;b</span>
+<span class="n">frob</span><span class="o">.</span><span class="n">off</span> <span class="ss">:twiddle</span> <span class="c1"># removes all watchers for the 'twiddle' event</span>
+</pre>
+</div>
+
+ </section>
+ </div>
+
+ <!-- FOOTER -->
+ <div id="footer_wrap" class="outer">
+ <footer class="inner">
+ <p class="copyright">Watchable &copy; 2011 <a href="https://github.com/jbarnette">jbarnette</a></p>
+ <p>Published using <a href="http://pages.github.com">GitHub Pages</a> with the Slate Theme</p>
+ </footer>
+ </div>
+
+
+
+ </body>
+</html>
@@ -0,0 +1 @@
+console.log('This would be the main JS file.');
@@ -0,0 +1 @@
+{"name":"Watchable","body":"This is code I've had floating around for a few years now, but I've\r\nalso incorporated a few extras from node.js' [EventEmitter][ee],\r\n[jQuery][jq], and [Backbone.Events][be].\r\n\r\n[ee]: http://nodejs.org/api/events.html#events_class_events_eventemitter\r\n[jq]: http://api.jquery.com/on\r\n[be]: http://documentcloud.github.com/backbone/#Events\r\n\r\n### Examples\r\n\r\n#### Fixtures\r\n\r\n```ruby\r\nrequire \"watchable\"\r\n\r\nclass Frob\r\n include Watchable\r\nend\r\n\r\nclass Callable\r\n def call *args\r\n p :called! => args\r\n end\r\nend\r\n```\r\n\r\n#### Watching and Firing\r\n\r\nEvents can have any number of watchers. Each watcher will be called\r\nin order, and any args provided when the event is fired will be passed\r\nalong. Watchers will most commonly be blocks, but any object that\r\nresponds to `call` can be used instead.\r\n\r\n```ruby\r\nfrob = Frob.new\r\n\r\nfrob.on :twiddle do |name|\r\n puts \"#{name} twiddled the frob!\"\r\nend\r\n\r\nfrob.on :twiddle do |name|\r\n puts \"(not that there's anything wrong with that)\"\r\nend\r\n\r\nfrob.on :twiddle, Callable.new\r\nfrob.fire :twiddle, \"John\"\r\n```\r\n\r\n##### Result\r\n\r\n John twiddled the frob!\r\n (not that there's anything wrong with that)\r\n { :called! => [\"John\"] }\r\n\r\n#### Watching Everything\r\n\r\nWant to see every event? Register for `:all`. The first argument will\r\nbe the name of the fired event.\r\n\r\n```ruby\r\nfrob = Frob.new\r\n\r\nfrob.on :all do |event, culprit|\r\n p :fired => [event, culprit]\r\nend\r\n\r\nfrob.fire :foo, \"John\"\r\n```\r\n\r\n##### Result\r\n\r\n {:fired => [:foo, \"John\"]}\r\n\r\n#### Watching Once\r\n\r\nOnly want to be notified the first time something happens? `once` is\r\nlike `on`, but fickle.\r\n\r\n```ruby\r\nfrob = Frob.new\r\n\r\nfrob.once :twiddle do\r\n p :twiddled!\r\nend\r\n\r\nfrob.fire :twiddle\r\nfrob.fire :twiddle\r\n```\r\n\r\n##### Result\r\n\r\n :twiddled!\r\n\r\n#### Unwatching\r\n\r\nSpecific blocks or callable objects can be removed from an event's\r\nwatchers, or all the event's watchers can be removed.\r\n\r\n```ruby\r\nb = lambda {}\r\nfrob = Frob.new\r\n\r\nfrob.on :twiddle, &b\r\n\r\nfrob.off :twiddle, b # removes the 'b' watcher, same as frob.off :twiddle, &b\r\nfrob.off :twiddle # removes all watchers for the 'twiddle' event\r\n```","tagline":"A simple event/notification mixin for Ruby.","google":""}
@@ -0,0 +1,70 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #f0f3f3; }
+.highlight .c { color: #0099FF; font-style: italic } /* Comment */
+.highlight .err { color: #AA0000; background-color: #FFAAAA } /* Error */
+.highlight .k { color: #006699; font-weight: bold } /* Keyword */
+.highlight .o { color: #555555 } /* Operator */
+.highlight .cm { color: #0099FF; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #009999 } /* Comment.Preproc */
+.highlight .c1 { color: #0099FF; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #0099FF; font-weight: bold; font-style: italic } /* Comment.Special */
+.highlight .gd { background-color: #FFCCCC; border: 1px solid #CC0000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #003300; font-weight: bold } /* Generic.Heading */
+.highlight .gi { background-color: #CCFFCC; border: 1px solid #00CC00 } /* Generic.Inserted */
+.highlight .go { color: #AAAAAA } /* Generic.Output */
+.highlight .gp { color: #000099; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #003300; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #99CC66 } /* Generic.Traceback */
+.highlight .kc { color: #006699; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #006699; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #006699; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #006699 } /* Keyword.Pseudo */
+.highlight .kr { color: #006699; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #007788; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #FF6600 } /* Literal.Number */
+.highlight .s { color: #CC3300 } /* Literal.String */
+.highlight .na { color: #330099 } /* Name.Attribute */
+.highlight .nb { color: #336666 } /* Name.Builtin */
+.highlight .nc { color: #00AA88; font-weight: bold } /* Name.Class */
+.highlight .no { color: #336600 } /* Name.Constant */
+.highlight .nd { color: #9999FF } /* Name.Decorator */
+.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #CC0000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #CC00FF } /* Name.Function */
+.highlight .nl { color: #9999FF } /* Name.Label */
+.highlight .nn { color: #00CCFF; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #330099; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #003333 } /* Name.Variable */
+.highlight .ow { color: #000000; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #FF6600 } /* Literal.Number.Float */
+.highlight .mh { color: #FF6600 } /* Literal.Number.Hex */
+.highlight .mi { color: #FF6600 } /* Literal.Number.Integer */
+.highlight .mo { color: #FF6600 } /* Literal.Number.Oct */
+.highlight .sb { color: #CC3300 } /* Literal.String.Backtick */
+.highlight .sc { color: #CC3300 } /* Literal.String.Char */
+.highlight .sd { color: #CC3300; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #CC3300 } /* Literal.String.Double */
+.highlight .se { color: #CC3300; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #CC3300 } /* Literal.String.Heredoc */
+.highlight .si { color: #AA0000 } /* Literal.String.Interpol */
+.highlight .sx { color: #CC3300 } /* Literal.String.Other */
+.highlight .sr { color: #33AAAA } /* Literal.String.Regex */
+.highlight .s1 { color: #CC3300 } /* Literal.String.Single */
+.highlight .ss { color: #FFCC33 } /* Literal.String.Symbol */
+.highlight .bp { color: #336666 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #003333 } /* Name.Variable.Class */
+.highlight .vg { color: #003333 } /* Name.Variable.Global */
+.highlight .vi { color: #003333 } /* Name.Variable.Instance */
+.highlight .il { color: #FF6600 } /* Literal.Number.Integer.Long */
+
+.type-csharp .highlight .k { color: #0000FF }
+.type-csharp .highlight .kt { color: #0000FF }
+.type-csharp .highlight .nf { color: #000000; font-weight: normal }
+.type-csharp .highlight .nc { color: #2B91AF }
+.type-csharp .highlight .nn { color: #000000 }
+.type-csharp .highlight .s { color: #A31515 }
+.type-csharp .highlight .sc { color: #A31515 }
Oops, something went wrong.

0 comments on commit 43c5293

Please sign in to comment.