A templating language that looks like Lisp and compiles to HTML
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. const test = require('tape')
  2. const Lexer = require('../src/lexer')
  3. const tt = require('../src/tokenTypes')
  4. test('lexes simple template correctly', t => {
  5. t.plan(4)
  6. const lexer = new Lexer()
  7. let tokens = lexer.scan(
  8. '(div :class "foobar" (p "Lorem ipsum dolor sit amet"))',
  9. ).tokens
  10. t.deepEqual(tokens.map(token => token.type), [
  11. tt.OPAREN,
  12. tt.LITERAL,
  13. tt.ATTRIBUTE,
  14. tt.QUOTE,
  15. tt.LITERAL,
  16. tt.QUOTE,
  17. tt.OPAREN,
  18. tt.LITERAL,
  19. tt.QUOTE,
  20. tt.LITERAL,
  21. tt.QUOTE,
  22. tt.CPAREN,
  23. tt.CPAREN,
  24. tt.EOF,
  25. ])
  26. t.equal(tokens[1].value, 'div')
  27. t.equal(tokens[2].value, 'class')
  28. t.equal(tokens[9].value, 'Lorem ipsum dolor sit amet')
  29. })
  30. test('keeps track of line numbers', t => {
  31. t.plan(2)
  32. const lexer = new Lexer()
  33. let tokens = lexer.scan(`(
  34. (div :class "foobar"
  35. (p :class "bazquux"))
  36. `).tokens
  37. t.equal(tokens[2].line, 2)
  38. t.equal(tokens[7].line, 3)
  39. })