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.

index.js 594B

1234567891011121314151617181920212223242526
  1. const Env = require('./env')
  2. const Evaluator = require('./evaluator')
  3. const Lexer = require('./lexer')
  4. const OsloError = require('./osloError')
  5. const Parser = require('./parser')
  6. module.exports = function oslo(source, context) {
  7. const lexer = new Lexer()
  8. const tokens = lexer.scan(source)
  9. const parser = new Parser()
  10. const tree = parser.parse(tokens)
  11. if (tree.error) {
  12. return tree.error
  13. }
  14. const evaluator = new Evaluator()
  15. const evaluatedTree = evaluator.eval(tree, new Env())
  16. if (evaluatedTree.constructor == OsloError) {
  17. return evaluatedTree
  18. }
  19. return ''
  20. }