module Celtchar.Novel.Ogmarkup where
import Text.Ogmarkup
import Data.Text (Text, append)
import Data.String
import Text.Shakespeare.Text
import Celtchar.Novel.Structure (Language(..))
data NovConf = NovConf Language
el :: Text
el = "\n\n"
blk :: Text
-> Text
blk = (`append` el)
instance GenConf NovConf Text where
typography (NovConf French) = frenchTypo
typography (NovConf English) = englishTypo
printSpace _ None = ""
printSpace _ Normal = " "
printSpace _ Nbsp = "~"
betweenDialogue _ = el
storyTemplate _ sec = blk [st|\paragraph{} #{sec}|]
paragraphTemplate _ = blk
dialogueTemplate _ _ txt = [st|\dialogue{}#{txt}|]
thoughtTemplate _ _ txt = [st|\thought{}#{txt}|]
replyTemplate _ txt = [st|\reply{#{txt}}|]
strongEmphTemplate _ txt = [st|\textbf{#{txt}}|]
emphTemplate _ txt = [st|\textit{#{txt}}|]
parseDoc :: Language -> Text -> Text
parseDoc lang doc = ogmarkup doc $ NovConf lang