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

import Text.HTML.Moe2.Type
import Text.HTML.Moe2.Element
import Text.HTML.Moe2.Attribute
import Text.HTML.Moe2.DSL.HTML

import Air.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 (return ())
(!!) x y   = img ! [src y, alt x] - (return ())
(<>) x y  = a ! [href y] - str x