jsmw-0.1: Data/DOM/JSMWExt.hs
------------------------------------------------------------------
-- |
-- Module : Data.DOM.JSMWExt
-- Copyright : (c) Dmitry Golubovsky, 2009
-- License : BSD-style
--
-- Maintainer : golubovsky@gmail.com
-- Stability : experimental
-- Portability : portable
--
--
--
-- DOM extensions specific to JSMW
------------------------------------------------------------------
module Data.DOM.JSMWExt (
addChildren
,alert
,status
) where
import Data.DOM
import Data.DOM.Dom
import BrownPLT.JavaScript
import Language.JSMW.Monad
-- | Add multiple children to a node. Unlike 'addChild', this function
-- returns the parent element.
addChildren :: (CNode p, CNode c) => [Expression c] -> Expression p -> JSMW e (Expression p)
addChildren [] p = once =<< return p
addChildren (c:cs) p = do
once =<< addChild c p
addChildren cs p
-- | Pop up an alert window.
alert :: Expression String -> JSMW e (Expression ())
alert s = do
vs <- once =<< return s
once =<< return (CallExpr () (VarRef () (Id () "alert")) [vs /\ ()])
-- | Update window status line.
status :: Expression String -> JSMW e (Expression ())
status s = do
vs <- once =<< return s
writeStmt $ ExprStmt () $ AssignExpr () OpAssign (VarRef () (Id () "window.status")) (vs /\ ())
return $ NullLit ()