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.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. const test = require("tape");
  2. const helpers = require("./helpers");
  3. const tt = require("../src/tokenTypes");
  4. test("compiles a simple template", t => {
  5. t.plan(1);
  6. const result = helpers.compile(`
  7. (div :class "foobar"
  8. (p :class "bazquux" "Lorem ipsum dolor sit amet."))
  9. `);
  10. t.deepEqual(
  11. result.replace(/\n/g, "").replace(/ +/g, ""),
  12. '<div class="foobar"><p class="bazquux">Lorem ipsum dolor sit amet.</p></div>'
  13. );
  14. });
  15. test("renders variables according to passed-in context", t => {
  16. t.plan(1);
  17. const result = helpers.compile(
  18. `
  19. (div :class classOne
  20. (p :class classTwo bodyText))
  21. `,
  22. {
  23. classOne: "foobar",
  24. classTwo: "bazquux",
  25. bodyText: "Lorem ipsum dolor sit amet."
  26. }
  27. );
  28. t.deepEqual(
  29. result.replace(/\n/g, "").replace(/ +/g, ""),
  30. '<div class="foobar"><p class="bazquux">Lorem ipsum dolor sit amet.</p></div>'
  31. );
  32. });
  33. test("self closing tags are respected", function(t) {
  34. t.plan(1);
  35. const result = helpers.compile(`
  36. (meta :charset "UTF-8")
  37. (img :src "test.png")
  38. `);
  39. t.deepEqual(
  40. result.replace(/\n/g, "").replace(/ +/g, ""),
  41. '<meta charset="UTF-8"><img src="test.png">'
  42. );
  43. });