ink-docstrap
Version:
[](https://nodei.co/npm/ink-docstrap/)
395 lines (297 loc) • 9.26 kB
HTML
<html lang="en">
<head>
<meta charset="utf-8">
<title>DocStrap Source: mixins/bussable.js</title>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/sunlight.default.css">
<link type="text/css" rel="stylesheet" href="styles/site.cerulean.css">
</head>
<body>
<div class="container-fluid">
<div class="navbar navbar-fixed-top navbar-inverse">
<div class="navbar-inner">
<a class="brand" href="index.html">DocStrap</a>
<ul class="nav">
<li class="dropdown">
<a href="modules.list.html" class="dropdown-toggle" data-toggle="dropdown">Modules<b
class="caret"></b></a>
<ul class="dropdown-menu ">
<li>
<a href="module-base.html">base</a>
</li>
<li>
<a href="chains_.html">base/chains</a>
</li>
<li>
<a href="binder.html">documents/binder</a>
</li>
<li>
<a href="model_.html">documents/model</a>
</li>
<li>
<a href="probe.html">documents/probe</a>
</li>
<li>
<a href="schema_.html">documents/schema</a>
</li>
<li>
<a href="collector.html">ink/collector</a>
</li>
<li>
<a href="bussable_.html">mixins/bussable</a>
</li>
<li>
<a href="signalable_.html">mixins/signalable</a>
</li>
<li>
<a href="format.html">strings/format</a>
</li>
<li>
<a href="logger.html">utils/logger</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="classes.list.html" class="dropdown-toggle" data-toggle="dropdown">Classes<b
class="caret"></b></a>
<ul class="dropdown-menu ">
<li>
<a href="base.html">base</a>
</li>
<li>
<a href="chains.html">base/chains</a>
</li>
<li>
<a href="model.html">documents/model</a>
</li>
<li>
<a href="probe.queryOperators.html">queryOperators</a>
</li>
<li>
<a href="probe.updateOperators.html">updateOperators</a>
</li>
<li>
<a href="collector-ACollector.html">ACollector</a>
</li>
<li>
<a href="collector-CollectorBase_.html">CollectorBase</a>
</li>
<li>
<a href="collector-OCollector.html">OCollector</a>
</li>
<li>
<a href="signalable-Signal.html">Signal</a>
</li>
<li>
<a href="logger.Logger.html">Logger</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="mixins.list.html" class="dropdown-toggle" data-toggle="dropdown">Mixins<b
class="caret"></b></a>
<ul class="dropdown-menu ">
<li>
<a href="schema.html">documents/schema</a>
</li>
<li>
<a href="bussable.html">mixins/bussable</a>
</li>
<li>
<a href="signalable.html">mixins/signalable</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="tutorials.list.html" class="dropdown-toggle" data-toggle="dropdown">Tutorials<b
class="caret"></b></a>
<ul class="dropdown-menu ">
<li>
<a href="tutorial-Teeth.html">Brush Teeth</a>
</li>
<li>
<a href="tutorial-Car.html">Drive Car</a>
</li>
<li>
<a href="tutorial-Test.html">Fence Test</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="global.html" class="dropdown-toggle" data-toggle="dropdown">Global<b
class="caret"></b></a>
<ul class="dropdown-menu ">
<li>
<a href="global.html#utils/logger">utils/logger</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="row-fluid">
<div class="span12">
<div id="main">
<h1 class="page-title">Source: mixins/bussable.js</h1>
<section>
<article>
<pre
class="sunlight-highlight-javascript linenums">"use strict";
/**
* @fileOverview Provides easy access to the system bus and provides some helper methods for doing so
* @module mixins/bussable
* @requires postal
* @requires lodash
* @requires base
*/
var bus = require( "postal" );
var Base = require( "../base" );
var sys = require( "lodash" );
/**
* @classDesc Provides easy access to the system bus and provides some helper methods for doing so
* @exports mixins/bussable
* @mixin
*/
var Bussable = Base.compose( [Base], /** @lends mixins/bussable# */{
declaredClass : "mixins/Bussable",
constructor : function () {
/**
* The list of subscriptions maintained by the mixin
* @type {Array}
* @memberof mixins/bussable#
* @name _subscriptions
* @private
*/
this._subscriptions = {};
this.log.trace( "Bussable constructor" );
},
/**
* Subscribe to an event
* @param {string} channel The channel to subscribe to
* @param {string} topic The topic to subscribe to
* @param {callback} callback What to do when you get the event
* @returns {object} The subscription definition
*/
subscribe : function ( channel, topic, callback ) {
this.log.trace( "Bussable subscribe" );
var sub = bus.subscribe( {channel : channel, topic : topic, callback : callback} );
this.subscriptions[channel + "." + topic] = sub;
return sub;
},
/**
* Subscribe to an event once
* @param {string} channel The channel to subscribe to
* @param {string} topic The topic to subscribe to
* @param {callback} callback What to do when you get the event
* @returns {object} The subscription definition
*/
once : function ( channel, topic, callback ) {
this.log.trace( "Bussable once" );
var sub = this.subscribe( channel, topic, callback );
this.subscriptions[channel + "." + topic] = sub;
sub.disposeAfter( 1 );
return sub;
},
/**
* Publish an event on the system bus
* @param {string} channel The channel to publish to
* @param {string} topic The topic to publish to
* @param {object=} options What to pass to the event
*/
publish : function ( channel, topic, options ) {
this.log.trace( "Bussable publish" );
bus.publish( {channel : channel, topic : topic, data : options} );
},
/**
* Get a subscription definition
*
* @param {string} channel
* @param {string} topic
* @returns {object=} The subscription definition
*/
getSubscription : function ( channel, topic ) {
this.log.trace( "Bussable getSubscription" );
return this.subscriptions[channel + "." + topic];
},
/**
* Gets rid of all subscriptions for this object.
* @private
*/
destroy : function () {
this.log.trace( "Bussable destroy" );
sys.each( this.subscriptions, function ( sub ) {
sub.unsubscribe();
} );
}
} );
module.exports = Bussable;
</pre>
</article>
</section>
</div>
<div class="clearfix"></div>
<footer>
<span class="copyright">
DocStrap Copyright © 2012-2013 The contributors to the JSDoc3 and DocStrap projects.
</span>
<br />
<span class="jsdoc-message">
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.0-alpha5</a>
on Sun Jun 1st 2014 using the <a
href="https://github.com/terryweiss/docstrap">DocStrap template</a>.
</span>
</footer>
</div>
<br clear="both">
</div>
</div>
<!--<script src="scripts/sunlight.js"></script>-->
<script src="scripts/docstrap.lib.js"></script>
<script src="scripts/bootstrap-dropdown.js"></script>
<script src="scripts/toc.js"></script>
<script>
$( function () {
$( "#toc" ).toc( {
anchorName : function ( i, heading, prefix ) {
return $( heading ).attr( "id" ) || ( prefix + i );
},
selectors : "h1,h2,h3,h4",
showAndHide : false,
scrollTo : 60
} );
$( "#toc>ul" ).addClass( "nav nav-pills nav-stacked" );
$( "#main span[id^='toc']" ).addClass( "toc-shim" );
// $( ".tutorial-section pre, .readme-section pre" ).addClass( "sunlight-highlight-javascript" ).addClass( "linenums" );
$( ".tutorial-section pre, .readme-section pre" ).each( function () {
var $this = $( this );
var example = $this.find("code" );
exampleText = example.html();
var lang = /{@lang (.*?)}/.exec( exampleText );
if ( lang && lang[1] ) {
exampleText = exampleText.replace( lang[0], "" );
example.html(exampleText);
lang = lang[1];
} else {
lang = "javascript";
}
if ( lang ) {
$this
.addClass( "sunlight-highlight-" + lang )
.addClass( "linenums" )
.html( example.html() );
}
} );
Sunlight.highlightAll( {
lineNumbers : true,
showMenu:true,
enableDoclinks:true
} );
} );
</script>
<!--Google Analytics-->
<!--Navigation and Symbol Display-->
</body>
</html>