UNPKG

caveman

Version:
99 lines (83 loc) 2.8 kB
Caveman = require('../caveman.js') beforeEach -> Caveman.options.openTag = '{{'; Caveman.options.closeTag = '}}'; Caveman.options.shrinkWrap = true; Caveman.options.escapeByDefault = true; describe 'Interpolation', -> it 'without interpolation', -> data = {} template = 'foo bar foo' expected = 'foo bar foo' expect(Caveman(template, data)).toEqual(expected) it 'only interpolation', -> data = { a: '123', b: 234 } template = '{{d.a}}{{d.b}}' expected = '123234' expect(Caveman(template, data)).toEqual(expected) it 'strings', -> data = { a: '123', b: 'true', empty: '' } template = '| {{d.a}} | {{d.b}} | {{d.c}} |' expected = '| 123 | true | |' expect(Caveman(template, data)).toEqual(expected) it 'numbers', -> data = { a: 123, b: 0.0, c: 1.01, d: 1, e: 0 } template = '| {{d.a}} | {{d.b}} | {{d.c}} | {{d.d}} | {{d.e}}' expected = '| 123 | 0 | 1.01 | 1 | 0' expect(Caveman(template, data)).toEqual(expected) it 'boolean', -> data = { a: true, b: false } template = '| {{d.a}} | {{d.b}} |' expected = '| true | false |' expect(Caveman(template, data)).toEqual(expected) it 'null and undefined', -> data = { a: null, b: undefined } template = '| {{d.a}} | {{d.b}} | {{d.c}} |' expected = '| | | |' expect(Caveman(template, data)).toEqual(expected) it 'arrays', -> data = { a: [1, 2, 3], b: [] } template = '| {{d.a}} | {{d.b}} |' expected = '| 1,2,3 | |' expect(Caveman(template, data)).toEqual(expected) it 'objects', -> data = { a: 123, b: 234 } template = '| {{d}} |' expected = '| [object Object] |' expect(Caveman(template, data)).toEqual(expected) it 'dot notation', -> data = { foo: { bar: 123 } } template = '{{d.foo.bar}}' expected = '123' expect(Caveman(template, data)).toEqual(expected) it 'dot and bracket notation', -> data = { colors: [ { name: 'red' } { name: 'blue' } { name: 'orange' } { name: 'white' } ] } template = 'My favorite color is {{d.colors[1].name}}.' expected = 'My favorite color is blue.' expect(Caveman(template, data)).toEqual(expected) it 'error handling', -> data = { a: 1, b: 2, c: 3 } template = '| {{{d.a{{d.b}} | {{}} | }}{{ | \\{\\{hello\\}\\} |' expected = '| {d.a2 | | | {{hello}} |' expect(Caveman(template, data)).toEqual(expected) it 'block comments', -> data = {} template = '{{// This is a comment }}' expected = '' expect(Caveman(template, data)).toEqual(expected) it 'inline comments', -> data = {} template = 'foo{{// This is a comment }}bar' expected = 'foobar' expect(Caveman(template, data)).toEqual(expected)