module Text.HTML.Moe.DSL.Markdown 
(
  (#)  
, (##) 
, (###)
, (>>) 
, (*)  
, (***)
-- , _  
-- , __ 
, (!)
, (<>)
, o
, block
) where


import Text.HTML.Moe
import Text.HTML.Moe.Type (MoeUnit)
import MPS.Light ((-))
import Prelude hiding ((-), (/), (>>), (*))

single_line, r :: (MoeUnit -> MoeUnit) -> String -> MoeUnit
single_line f = f . str
r = single_line

(#)       :: String -> MoeUnit  
(##)      :: String -> MoeUnit  
(###)     :: String -> MoeUnit  
(>>)      :: String -> MoeUnit  
(*)       :: String -> MoeUnit  
-- _         :: String -> MoeUnit  
-- __        :: String -> MoeUnit  
o         :: String -> MoeUnit  
block     :: String -> MoeUnit  
(***)     :: MoeUnit 
(!)       :: String -> String -> MoeUnit 
(<>)      :: String -> String -> MoeUnit 


(#)       = r h1'
(##)      = r h2'
(###)     = r h3'
(>>)      = r blockquote'
(*)       = r ul'
-- _         = r em'
-- __        = r strong'
o         = r li'
block     = pre' . code' . str
(***)     = hr' (/)
(!) x y   = img [src y, alt x] (/)
(<>) x y  = a [href y] - str x