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
(*)       :: 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 h4'
(#####)   = r h5'
(######)  = r h6'
(>>)      = r blockquote'
(*)       = r ul'
-- _         = r em'
-- __        = r strong'
o         = r li'
block     = pre' . code' . _pre
(***)     = hr'
(!) x y   = img [src y, alt x]
(<>) x y  = a [href y] - str x