0.1.2 • Published 10 years ago
class-name-builder v0.1.2
ClassNameBuilder 
A small, chainable, immutable utility for building up class name strings in
application logic. Great for use with React's className property or Angular's
ng-class directive. Improves code readability by avoiding large, complex sets
of nested conditional statements when generating class names in templates or
application code.
Installation
npm install class-name-builderjspm install npm:class-name-builderIf you would like support for another ecosystem, please open an issue or submit a PR.
Example
import ClassNameBuilder from 'class-name-builder';
let condition = true;
let otherCondition = false;
const classNames = ClassNameBuilder
.create()
.always('example awesome-example')
.if(condition, 'condition')
.if(otherCondition, 'other-condition')
.else(['not-other-condition', 'array'])
.toString();
console.log(classNames);
// "example awesome-example condition not-other-condition array"API
Static methods
create(): ClassNameBuilder: creates a new, empty instance ofClassNameBuilder.ClassNameBuilderhas no constructor, so this is the only way to create an instance.
Instance methods
always(value: string | Array<string>): ClassNameBuilder: creates a new instance ofClassNameBuilderwith the given values. If the value is a string, multiple class names can be included by separating them with one or more spaces, similar to theclassHTML attribute. Duplicate class names will be removed in the case of both a space-separated string and an array.if(condition: any, value: string | Array<string>): ClassNameBuilder: creates a new instance ofClassNameBuilderwith the passed invalueonly included if the condition is truthy.else(value: string | Array<string>): ClassNameBuilder: creates a new instance ofClassNameBuilderwith the passed invalueonly if the condition for the precedingif()call was falsey. Will throw an error if called without an immediately preceding call toif().merge(other: ClassNameBuilder): ClassNameBuilder: creates a new instance ofClassNameBuilderwith class names from the passed in instance mixed in with those in the calling instance.toString(): string: returns the class names represented by the instance as a space-separated string.
Development
npm install -g gulp && npm installTo bundle with browserify and babelify:
gulp buildTo run the unit tests with karma:
gulp test