UNPKG

liquid-node

Version:

Node.js port of Tobias Lütke's Liquid template engine.

33 lines (25 loc) 960 B
Liquid = require "../liquid" Fs = require "fs" Path = require "path" readFile = (fpath, encoding) -> new Promise (resolve, reject) -> Fs.readFile fpath, encoding, (err, content) -> if (err) reject err else resolve content module.exports = class Liquid.LocalFileSystem extends Liquid.BlankFileSystem PathPattern = ///^[^.\/][a-zA-Z0-9-_\/]+$/// constructor: (root, extension = "html") -> @root = root @fileExtension = extension readTemplateFile: (templatePath) -> @fullPath(templatePath) .then (fullPath) -> readFile(fullPath, 'utf8').catch (err) -> throw new Liquid.FileSystemError "Error loading template: #{err.message}" fullPath: (templatePath) -> if PathPattern.test templatePath Promise.resolve Path.resolve(Path.join(@root, templatePath + ".#{@fileExtension}")) else Promise.reject new Liquid.ArgumentError "Illegal template name '#{templatePath}'"