0 | module Text.Molfile.Writer
3 | import Data.Linear.Traverse1
4 | import Data.String.Builder
6 | import Text.Molfile.Types
7 | import Text.Molfile.Writer.Util
8 | import Text.Molfile.Writer.V2000
9 | import Text.Molfile.Writer.V3000
17 | parameters {default V2000 version : MolVersion}
26 | putMol : Builder q => (n,i,ct : MolLine) -> MolGraph' h t c -> F1' q
27 | putMol n i c (G 0 _) = pure ()
29 | let es := edges g.graph
30 | v3 := version == V3000 || g.order >= 1000 || length es >= 1000
35 | if v3 then putMol3000 es g else putMol2000 es g
39 | putSDF : Builder q => Molfile' h t c -> F1' q
40 | putSDF (MkMolfile n i c g ds) = T1.do
42 | traverse1_ writeStructureData ds
51 | writeMolfile : Molfile' h t c -> String
52 | writeMolfile (MkMolfile n i c g _) = withBuilder $
putMol n i c g
55 | writeSDFile : Molfile' h t c -> String
56 | writeSDFile m = withBuilder $
putSDF m
59 | writeSDF : List (Molfile' h t c) -> String
60 | writeSDF ms = withBuilder $
traverse1_ putSDF ms