12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- const test = require('tape')
-
- const Compiler = require('../src/compiler')
- const Lexer = require('../src/lexer')
- const Node = require('../src/node')
- const Parser = require('../src/parser')
- const tt = require('../src/tokenTypes')
-
- test('compiles a simple template', t => {
- t.plan(1)
- const lexer = new Lexer()
- const tokenStream = lexer.scan(`
- (div :class "foobar"
- (p :class "bazquux" "Lorem ipsum dolor sit amet."))
- `)
- const parser = new Parser(tokenStream)
- const tree = parser.parse()
- const compiler = new Compiler(tree)
- const result = compiler.compile()
- t.deepEqual(
- result.replace(/\n/g, '').replace(/ +/g, ''),
- '<div class="foobar"><p class="bazquux">Lorem ipsum dolor sit amet.</p></div>',
- )
- })
-
- test('renders variables according to passed-in context', t => {
- t.plan(1)
- const lexer = new Lexer()
- const tokenStream = lexer.scan(`
- (div :class classOne
- (p :class classTwo bodyText))
- `)
- const parser = new Parser(tokenStream)
- const tree = parser.parse()
- const compiler = new Compiler(tree, {
- classOne: 'foobar',
- classTwo: 'bazquux',
- bodyText: 'Lorem ipsum dolor sit amet.',
- })
- const result = compiler.compile()
- t.deepEqual(
- result.replace(/\n/g, '').replace(/ +/g, ''),
- '<div class="foobar"><p class="bazquux">Lorem ipsum dolor sit amet.</p></div>',
- )
- })
-
- test('compiles map operations', function(t) {
- t.plan(1)
- const lexer = new Lexer()
- const tokenStream = lexer.scan(`
- (ul
- (each items 'item (li item)))
- `)
- const parser = new Parser(tokenStream)
- const tree = parser.parse()
- const compiler = new Compiler(tree, {
- items: ['one', 'two', 'three'],
- })
- const result = compiler.compile()
- t.deepEqual(
- result.replace(/\n/g, '').replace(/ +/g, ''),
- '<ul><li>one</li><li>two</li><li>three</li></ul>',
- )
- })
|