A templating language that looks like Lisp and compiles to HTML
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

compilerTest.js 1.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. const test = require('tape')
  2. const helpers = require('./helpers')
  3. test('compiles numbers', t => {
  4. t.plan(1)
  5. const result = helpers.compile('5')
  6. t.equal(result, '5')
  7. })
  8. test('compiles strings', t => {
  9. t.plan(1)
  10. const result = helpers.compile('"hello world"')
  11. t.equal(result, 'hello world')
  12. })
  13. test('compiles lambdas', t => {
  14. t.plan(1)
  15. const result = helpers.compile('(lambda (x) (* x x))')
  16. t.equal(result, '<lambda>')
  17. })
  18. test('compiles applications that evaluate to numbers', t => {
  19. t.plan(1)
  20. const result = helpers.compile('((lambda (x) (+ x 1)) 5)')
  21. t.equal(result, '6')
  22. })
  23. test('simple element', t => {
  24. t.plan(1)
  25. const result = helpers.compile('(div :class "container" "Lorem ipsum dolor sit amet")')
  26. t.equal(result, '<div class="container">Lorem ipsum dolor sit amet</div>')
  27. })
  28. test('nested element', t => {
  29. t.plan(1)
  30. const result = helpers.compile('(div (span "Lorem ipsum dolor sit amet"))')
  31. t.equal(result, '<div><span>Lorem ipsum dolor sit amet</span></div>')
  32. })
  33. test('self closing elements', t => {
  34. t.plan(1)
  35. const result = helpers.compile('(img :src "logo.png")')
  36. t.equal(result, '<img src="logo.png">')
  37. })