A templating language that looks like Lisp and compiles to HTML
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

parser.js 944B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. const test = require('tape')
  2. const Lexer = require('../src/lexer')
  3. const Node = require('../src/node')
  4. const Parser = require('../src/parser')
  5. const tt = require('../src/tokenTypes')
  6. test('parses token stream into a tree', t => {
  7. t.plan(1)
  8. const lexer = new Lexer()
  9. let tokenStream = lexer.scan(`
  10. (div :class "foobar"
  11. (p :class "bazquux"))
  12. `)
  13. let parser = new Parser(tokenStream)
  14. let tree = parser.parse()
  15. t.deepEqual(
  16. tree,
  17. [
  18. new Node({
  19. functionName: 'div',
  20. args: [
  21. new Node({
  22. attributeName: 'class',
  23. attributeValue: 'foobar',
  24. })
  25. ],
  26. subtree: [
  27. new Node({
  28. functionName: 'p',
  29. args: [
  30. new Node({
  31. attributeName: 'class',
  32. attributeValue: 'bazquux',
  33. })
  34. ],
  35. subtree: [],
  36. })
  37. ]
  38. })
  39. ]
  40. )
  41. })