hbs-helpers
Requirements
Node.js v8.x
Usage
const handlebars = require('handlebars')
require('@xiedacon/hbs-helpers')({
handlebars: handlebars
})
// with local helpers
require('@xiedacon/hbs-helpers')({
handlebars: handlebars,
helpers: {
greatThenThree: ([n]) => n > 3
}
})
// with alias
require('@xiedacon/hbs-helpers')({
handlebars: handlebars,
aliases: {
unlessEq: 'notEq'
// or
unlessEq: ['notEq']
}
})
API
All helpers can be use as block helpers
{{#eq a 'a'}}
{{/eq}}
{{#and (eq a 'a') (eq b 'b')}}
{{dosomething}}
{{/and}}
Base
-
Params:
-
obj
{any} -
path
{string} -
def
{any} -
returns
{any}
like
_.get
Example:
// a: { a: '1' } {{get a 'a'}} // returns: ['1'] // a: { a: '1' } {{get a 'b' '2'}} // returns: ['2']
-
-
Params:
-
obj
{any} -
path
{string} -
val
{any}
like
_.set
Example:
// a: {} {{set a 'a' '1'}} // a: { a: '1' }
-
-
Params:
-
obj
{any} -
def
{any} -
returns
{any}
Example:
// a: 1 {{default a 2}} // returns: 1 // a: undefined {{default a 2}} // returns: 2
-
-
Params:
-
bool*
{any} -
returns
{Boolean}
Example:
// a: 1 // b: 2 // c: 3 {{#and (eq a 1) (eq b 2) c}} // a === 1 && b === 2 && c {{/and}}
-
-
Params:
-
bool*
{any} -
returns
{Boolean}
Example:
// a: 1 // b: 2 // c: 3 {{#or (eq a 1) (eq b 2) c}} // a === 1 || b === 2 || c {{/or}}
-
-
Params:
-
val
{any} -
returns
{Boolean}
like
_.isEmpty
Example:
// a: { a: '1' } {{#isEmpty a}} // _.isEmpty(a) {{/isEmpty}}
-
-
Params:
-
val1
{any} -
val2
{any} -
returns
{Boolean}
Example:
// a: 1 // b: 1 {{#eq a b}} // a === b {{/eq}}
-
-
Params:
-
val1
{any} -
val2
{any} -
returns
{Boolean}
Example:
// a: 1 // b: 1 {{#unlessEq a b}} // a !== b {{/unlessEq}}
-
-
Params:
-
val1
{any} -
val2
{any} -
returns
{Boolean}
Example:
// a: 1 // b: 1 {{#gt a b}} // a > b {{/gt}}
-
-
Params:
-
val1
{any} -
val2
{any} -
returns
{Boolean}
Example:
// a: 1 // b: 1 {{#gte a b}} // a >= b {{/gte}}
-
-
Params:
-
val1
{any} -
val2
{any} -
returns
{Boolean}
Example:
// a: 1 // b: 1 {{#lt a b}} // a < b {{/lt}}
-
-
Params:
-
val1
{any} -
val2
{any} -
returns
{Boolean}
Example:
// a: 1 // b: 1 {{#lte a b}} // a <= b {{/lte}}
-
-
Params:
-
val1
{any} -
val2
{any} -
returns
{Boolean}
Example:
// a: 1 // b: 1 {{#is a b}} // a == b {{/is}}
-
-
Params:
-
val1
{any} -
val2
{any} -
returns
{Boolean}
Example:
// a: 1 // b: 1 {{#isnt a b}} // a != b {{/isnt}}
-
-
Params:
-
val
{any} -
returns
{Boolean}
Example:
// a: 1 {{#not a}} // !a {{/not}}
-
-
Params:
-
val
{String} -
returns
{String}
When error throw, the raw value well be return
Example:
// a: '%' {{encodeURI a}} // encodeURI(a) // returns: '%25'
-
-
Params:
-
val
{String} -
returns
{String}
When error throw, the raw value well be return
Example:
// a: '%25' {{decodeURI a}} // decodeURI(a) // returns: '%'
-
-
Params:
-
val
{String} -
returns
{String}
When error throw, the raw value well be return
Example:
// a: '?' {{encodeURIComponent a}} // encodeURIComponent(a) // returns: '%3F'
-
-
Params:
-
val
{String} -
returns
{String}
When error throw, the raw value well be return
Example:
// a: '%3F' {{decodeURIComponent a}} // decodeURIComponent(a) // returns: '?'
-
Array
Supported functions:
-
Example:
{{#isArray a}} // Array.isArray(a) {{/isArray}}
First argument of prototype functions must be an array or array like string
// a: [1, 2, 3] {{indexof a 1}} // a.indexof(1) or {{indexof "[1, 2, 3]" 1}} // [1, 2, 3].indexof(1)
-
Params:
-
val
{any} -
returns
{Array}
Example:
{{arrayify 'foo'}} // returns: ['foo']
-
-
Params:
-
arr
{Array} -
val
{any} -
returns
{Boolean}
Example:
// arr: ['a', 'b', 'c'] {{#inArray arr 'a'}} // 'a' in arr {{inArray}} or // a: 'a' {{#inArray "['a', 'b', 'c']" a}} // a in ['a', 'b', 'c'] {{inArray}}
-
-
Params:
-
arr
{Array} -
index
{Number} -
returns
{any}
Example:
// arr: ['a', 'b', 'c'] {{itemAt arr 0}} // returns: 'a' or // a: 0 {{itemAt "['a', 'b', 'c']" a}} // returns: 'a'
-
For iterator Array, you should use build-in helper each
Json
-
Params:
-
obj
{any} -
returns
{String}
Example:
// a: { a: '1' } {{stringify a}} // returns: '{"a":"1"}'
-
Math
-
All build-in functions on Math are support
Example:
// a: -1 {{abs a}} // returns: 1
-
Params:
-
val*
{any} -
returns
{String/Number}
Example:
// a: 1 // b: 2 // c: 3 {{add a b c}} // returns: 6 // a: '1' // b: 2 // c: 3 {{add a b c}} // returns: '123'
-
-
Params:
-
val*
{any} -
returns
{Number}
Example:
// a: 6 // b: 2 // c: 3 {{subtract a b c}} // returns: 1
-
-
Params:
-
val*
{any} -
returns
{Number}
Example:
// a: 1 // b: 2 // c: 3 {{multiply a b c}} // returns: 6
-
-
Params:
-
val*
{any} -
returns
{Number}
Example:
// a: 6 // b: 2 // c: 3 {{divide a b c}} // returns: 1
-
-
Params:
-
val*
{any} -
returns
{Number}
Example:
// a: 1 // b: 2 // c: 3 {{avg a b c}} // returns: 2
-
Number
-
All build-in functions on Number and Number.prototype are support
Example:
// a: 1 {{#isNaN a}} // Number.isNaN(a) {{/isNaN}}
First argument of prototype functions must be a number or number like string
// a: 1 {{toFixed a 2}} // returns: '1.00'
-
Params:
-
val
{any} -
returns
{Number}
Example:
// a: '1' {{number a}} // returns: 1
-
Object
-
Params:
-
val
{any}
Example:
// a: { a: '1' } {{#keys a}} this // current key @index // current index {{/keys}} or inline // a: { a: '1' } {{keys a}} // returns: ['a']
-
-
Params:
-
val
{any}
Example:
// a: { a: '1' } {{#values a}} this // current value @index // current index {{/values}} or inline // a: { a: '1' } {{values a}} // returns: ['1']
-
-
Params:
-
val
{any}
Example:
// a: { a: '1' } {{#entries a}} @index // current index @key // current key @value // current value {{/entries}} or inline // a: { a: '1' } {{entries a}} // returns: [['a', '1']]
-
String
Supported functions:
-
String.prototype.toLocaleUpperCase
Example:
{{fromCharCode 97}} // String.fromCharCode(97) // return 'a'
First argument of prototype functions must be a string
// a: ' a ' {{trim a}} // a.trim() // return 'a'
-
Params:
-
val
{any} -
returns
{String}
Example:
// a: 1 {{string a}} // returns: '1'
-
All helpers can be use as block helpers or inline helpers
Never let your mind limit your imagination
License
Copyright (c) 2017 xiedacon