12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- const test = require('tape')
-
- const Compiler = require('../src/compiler')
- const Lexer = require('../src/lexer')
- 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('self closing tags are respected', function(t) {
- t.plan(1)
- const lexer = new Lexer()
- const tokenStream = lexer.scan(`
- (meta :charset "UTF-8")
- (img :src "test.png")
- `)
- 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, ''),
- '<meta charset="UTF-8"><img src="test.png">',
- )
- })
|