UNPKG

hikaru-coffee

Version:

A static site generator that generates routes based on directories naturally.

37 lines (32 loc) 881 B
colors = require("colors/safe") Promise = require("bluebird") {Site, File, Category, Tag} = require("./type") class Processer constructor: (logger) -> @logger = logger @_ = {} # fn: param p, posts, ctx, return Promise register: (layout, fn) => if fn not instanceof Function throw new TypeError("fn must be a Function!") return if layout instanceof Array for l in layout if l not of @_ @_[l] = [] @_[l].push(fn) return if layout not of @_ @_[layout] = [] @_[layout].push(fn) process: (p, posts, ctx) => @logger.debug( "Hikaru is processing `#{colors.cyan(p["docPath"])}`..." ) if p["layout"] of @_ results = [] for fn in @_[p["layout"]] p = await fn(p, posts, ctx) return p return Object.assign(new File(), p, ctx) module.exports = Processer