Skip to content

Commit

Permalink
Added utility function to create facet classes
Browse files Browse the repository at this point in the history
 - Similar in utility to the 'createComponentClass' already implemented
  • Loading branch information
Richard-Walton committed Jul 29, 2015
1 parent b3cea66 commit 663d525
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/milo.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ _.extend(milo, {
registry: require('./registry'),
milo_version: '0.2.6',
createComponentClass: require('./util/create_component_class'),
createFacetClass: require('./util/create_facet_class'),
destroy: destroy
});

Expand Down
27 changes: 27 additions & 0 deletions lib/util/create_facet_class.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
'use strict';

var miloCore = require('milo-core')
, _ = miloCore.proto
, check = miloCore.util.check
, Match = check.Match
, FacetBaseClass = require('../components/c_facet')
, facetRegistry = require('../components/c_facets/cf_registry');

module.exports = createFacetClass;

function createFacetClass(config) {
check(config, {
className: String,
superClassName: Match.Optional(String),
methods: Match.Optional(Match.ObjectHash(Function))
});

var SuperClass = config.superClassName ? facetRegistry.get(config.superClassName) : FacetBaseClass;
var FacetClass = _.createSubclass(SuperClass, config.className);

if (config.methods) _.extendProto(FacetClass, config.methods);

FacetClass.super = SuperClass.prototype;
facetRegistry.add(FacetClass);
return FacetClass;
}

0 comments on commit 663d525

Please sign in to comment.