packages feed

fay-0.24.2.0: examples/jquery.hs

{-# LANGUAGE EmptyDataDecls    #-}


module JQuery where

import           FFI
import           Prelude

main :: Fay ()
main = do
  ready $ do
    putStrLn (showDouble 123)
    body <- select "body"
    printArg body
    addClassWith (\i s -> do putStrLn ("i… " ++ showDouble i)
                             putStrLn ("s… " ++ showString s)
                             return "abc")
                 body
    addClassWith (\i s -> do putStrLn ("i… " ++ showDouble i)
                             putStrLn ("s… " ++ showString s)
                             putStrLn (showString ("def: " ++ s))
                             return "foo")
                 body
    printArg body
    return ()

data JQuery
instance Show JQuery

data Element

printArg :: a -> Fay ()
printArg = ffi "console.log(\"%%o\",%1)"

showDouble :: Double -> String
showDouble = ffi "(%1).toString()"

showString :: String -> String
showString = ffi "JSON.stringify(%1)"

select :: String -> Fay JQuery
select = ffi "jQuery(%1)"

addClassWith :: (Double -> String -> Fay String) -> JQuery -> Fay JQuery
addClassWith = ffi "%2.addClass(%1)"

ready :: Fay () -> Fay ()
ready = ffi "jQuery(%1)"