Skip to content

Instantly share code, notes, and snippets.

View moonmaster9000's full-sized avatar

moonmaster9000 moonmaster9000

View GitHub Profile
import qualified Data.ByteString as B
main :: IO ()
main = do
td <- newTemplateDirectory' "templates" emptyTemplateState
quickServer $ templateHandler td defaultReloadHandler $ \ts ->
route [ ("echo/:s", echoHandler)
] <|>
templateServe ts <|>
dir "static" (fileServe ".")
{-# LANGUAGE TypeFamilies, QuasiQuotes, TemplateHaskell #-}
import Yesod
data Echo = Echo
mkYesod "Echo" [$parseRoutes|
/echo/#String EchoR GET
|]
instance Yesod Echo where approot _ = ""
getEchoR s
| length s == 4 = permissionDenied "Forbidden: 4 letter word"
| otherwise = return $ RepPlain $ toContent s
get ["echo", word]
| length word == 4 = body "4 letter word" >> status 403
| otherwise = body word
-- is there a GHC language extension that would
-- let me break up function definitions like this:
f1 some_pattern = expression1
f2 some_other_pattern = expression2
f1 yet_another_pattern = expression3
f2 another_pattern = expression4
--instead of having to group them together like this:
sayHello "spanish" = "hola"
sayHello "english" = "hi"
sayGoodBye "spanish" = "hasta la vista"
sayGoodBye "english" = "laterz"
sayHello "spanish" = "hola"
sayGoodBye "spanish" = "hasta la vista"
sayHello "english" = "hi"
sayGoodBye "english" = "laterz"
-- blog posts admin actions
get ["admin", "posts"] = do ....
post ["admin", "posts"] = do ....
put ["admin", "posts", id] = do ....
delete ["admin", "posts", id] = do ....
-- blog frontend
get ["posts"] = do ....
get ["posts", year, month, day] = do ....
get ["posts", year, month, day, id] = do ....
app = require('express').createServer()
app.get(
'/',
(req, res) ->
res.send('hello express in coffeescript!')
)
app.listen(3000)
HomeController =
index: -> $('#main').text 'Welcome!'
routes = -> @get '#/', HomeController.index
app = $.sammy routes
$ -> app.run()
db.events.save({name: "event1", start_date: "2010/01/01", end_date: "2010/09/01"})
db.events.save({name: "event2", start_date: "2010/01/01", end_date: "2010/09/30"})
db.events.find({start_date: {'$lte': "2010/09/10"}, end_date: {'$gt': "2010/09/10"}})