mirror of
https://github.com/harttle/liquidjs.git
synced 2026-10-03 09:05:14 -07:00
feature: concat filter
This commit is contained in:
@@ -100,7 +100,7 @@ Otherwise, undefined variables will cause an exception. Defaults to `false`.
|
|||||||
|
|
||||||
* `trim_value_left` is similiar to `trim_value_right`, whereas the `\n` is exclusive. Defaults to `false`. See [Whitespace Control][whitespace control] for details.
|
* `trim_value_left` is similiar to `trim_value_right`, whereas the `\n` is exclusive. Defaults to `false`. See [Whitespace Control][whitespace control] for details.
|
||||||
|
|
||||||
* `greedy` is used to specify whether `trim_left`/`trim_right` is greedy. When set to `true`, all successive blank characters including `\n` will be trimed regardless of line breaks. Defaults to `true`.
|
* `greedy` is used to specify whether `trim_left`/`trim_right` is greedy. When set to `true`, all consecutive blank characters including `\n` will be trimed regardless of line breaks. Defaults to `true`.
|
||||||
|
|
||||||
## Use with Express.js
|
## Use with Express.js
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ var filters = {
|
|||||||
'append': (v, arg) => v + arg,
|
'append': (v, arg) => v + arg,
|
||||||
'capitalize': str => stringify(str).charAt(0).toUpperCase() + str.slice(1),
|
'capitalize': str => stringify(str).charAt(0).toUpperCase() + str.slice(1),
|
||||||
'ceil': v => Math.ceil(v),
|
'ceil': v => Math.ceil(v),
|
||||||
|
'concat': (v, arg) => Array.prototype.concat.call(v, arg),
|
||||||
'date': (v, arg) => {
|
'date': (v, arg) => {
|
||||||
if (v === 'now') v = new Date()
|
if (v === 'now') v = new Date()
|
||||||
return v instanceof Date ? strftime(v, arg) : ''
|
return v instanceof Date ? strftime(v, arg) : ''
|
||||||
|
|||||||
@@ -45,6 +45,44 @@ describe('filters', function () {
|
|||||||
it('should return "184" for 183.357', () => test('{{ 183.357 | ceil }}', '184'))
|
it('should return "184" for 183.357', () => test('{{ 183.357 | ceil }}', '184'))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('concat', function () {
|
||||||
|
it('should concat arrays', () => test(`
|
||||||
|
{%- assign fruits = "apples, oranges, peaches" | split: ", " -%}
|
||||||
|
{%- assign vegetables = "carrots, turnips, potatoes" | split: ", " -%}
|
||||||
|
|
||||||
|
{%- assign everything = fruits | concat: vegetables -%}
|
||||||
|
|
||||||
|
{%- for item in everything -%}
|
||||||
|
- {{ item }}
|
||||||
|
{% endfor -%}`,
|
||||||
|
`- apples
|
||||||
|
- oranges
|
||||||
|
- peaches
|
||||||
|
- carrots
|
||||||
|
- turnips
|
||||||
|
- potatoes
|
||||||
|
`))
|
||||||
|
it('should support chained concat', () => test(`
|
||||||
|
{%- assign fruits = "apples, oranges, peaches" | split: ", " -%}
|
||||||
|
{%- assign vegetables = "carrots, turnips, potatoes" | split: ", " -%}
|
||||||
|
{%- assign furniture = "chairs, tables, shelves" | split: ", " -%}
|
||||||
|
{%- assign everything = fruits | concat: vegetables | concat: furniture -%}
|
||||||
|
|
||||||
|
{%- for item in everything -%}
|
||||||
|
- {{ item }}
|
||||||
|
{% endfor -%}`,
|
||||||
|
`- apples
|
||||||
|
- oranges
|
||||||
|
- peaches
|
||||||
|
- carrots
|
||||||
|
- turnips
|
||||||
|
- potatoes
|
||||||
|
- chairs
|
||||||
|
- tables
|
||||||
|
- shelves
|
||||||
|
`))
|
||||||
|
})
|
||||||
|
|
||||||
describe('date', function () {
|
describe('date', function () {
|
||||||
it('should support date: %a %b %d %Y', function () {
|
it('should support date: %a %b %d %Y', function () {
|
||||||
var str = ctx.date.toDateString()
|
var str = ctx.date.toDateString()
|
||||||
|
|||||||
+1
-1
@@ -33,7 +33,7 @@ describe('tokenizer', function () {
|
|||||||
expect(tokens[1].type).to.equal('value')
|
expect(tokens[1].type).to.equal('value')
|
||||||
expect(tokens[1].value).to.equal('foo | date: "%Y-%m-%d"')
|
expect(tokens[1].value).to.equal('foo | date: "%Y-%m-%d"')
|
||||||
})
|
})
|
||||||
it('should handle successive value and tags', function () {
|
it('should handle consecutive value and tags', function () {
|
||||||
var html = '{{foo}}{{bar}}{%foo%}{%bar%}'
|
var html = '{{foo}}{{bar}}{%foo%}{%bar%}'
|
||||||
var tokens = parse(html)
|
var tokens = parse(html)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user