Created
March 25, 2015 11:33
-
-
Save copygirl/5decd6bb16c92cf1d85e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export whenAll = (...tasks, next) -> | |
errored = false | |
tasksCompleted = 0 | |
results = new Array tasks.length | |
callback = (index) -> | |
called = false | |
(err, ...args) -> | |
if errored | |
return | |
else if err | |
errored = true | |
next err | |
else if !called | |
called = true | |
results[index] = args | |
if ++tasksCompleted >= tasks.length | |
next null, ...results | |
for task, i in tasks | |
task callback i |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require! { | |
fs | |
express | |
"../database" | |
"../useful": { pathx } | |
"../async" | |
} | |
path = pathx __dirname | |
router = express.Router! | |
getPost = (name, next) -> | |
(err, posts) <- database.getjson \posts | |
if err or post = posts.find (-> it.name == name) then return next err | |
(err, post.content) <- fs.readfile path "posts/#{post.id}-#{name}.html" | |
if err then return next err | |
else return next null, post | |
router.get "/:post/", (req, res, next) -> | |
(err, [post], [sidebar]) <- asnyc.whenAll do | |
getPost req.params.post, _ | |
database.getjson \sidebar, _ | |
if err or !post then return next err | |
res.render "post", { title: post.title, sidebar, post } | |
router.post "/:post/", (req, res, next) -> | |
(err, post) <- getPost req.params.post | |
if err then return next err | |
res.send post.content | |
export "/post/": router |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment