module Data.SMILES.Atom.Writer (writeAtom)
where
import Data.Text (Text, pack)
import Data.SMILES.Atom
writeChirality :: Chirality -> String
writeChirality Clockwise = "@@"
writeChirality AntiClockwise = "@"
writeChirality c = show c
writeHs :: Int -> String
writeHs 0 = ""
writeHs 1 = "H"
writeHs n = "H" ++ show n
writeCharge :: Int -> String
writeCharge 0 = ""
writeCharge (1) = "-"
writeCharge 1 = "+"
writeCharge n = show n
writeClass :: Int -> String
writeClass n = ":" ++ show n
writeAtom :: Atom -> Text
writeAtom (BracketAtom Bracket {
bracketSymbol=sym
, bracketIsotope=iso
, bracketChirality=chi
, bracketHCount=hs
, bracketCharge=ch
, bracketClass=cls
}) = pack $ "[" ++
maybe "" show iso ++
show sym ++
maybe "" writeChirality chi ++
maybe "" writeHs hs ++
maybe "" writeCharge ch ++
maybe "" writeClass cls ++
"]"
writeAtom (SimpleAtom sym) = pack $ show sym