{-| Module  : FiniteCategories
Description : An example of cone category.
Copyright   : Guillaume Sabbagh 2021
License     : GPL-3
Maintainer  : guillaumesabbagh@protonmail.com
Stability   : experimental
Portability : portable

An example of cone category.
-}
module ExampleConeCategory.ExampleLeftCone
(
    main
)
where
    import              System.Random                                   
    import              ExportGraphViz.ExportGraphViz
    import              ConeCategory.LeftCone
    import              Diagram.Diagram
    import              FiniteCategory.FiniteCategory
    import              IO.Parsers.SafeCompositionGraphFunctor

    -- | Export the cone category as a pdf with GraphViz.
    main = do 
        putStrLn "Start of ExampleLeftCone"
        diag <- readFSCGFile "test/ExampleConeCategory/diagram.fscg"
        let leftCone = LeftCone (src diag)
        let inclusionLeftCone = inclusionFunctor leftCone
        let coneCat = ConeCategory diag
        catToPdf (src diag) "OutputGraphViz/Examples/ConeCategory/LeftCone/I"
        catToPdf leftCone "OutputGraphViz/Examples/ConeCategory/LeftCone/leftCone"
        diagToPdf inclusionLeftCone "OutputGraphViz/Examples/ConeCategory/LeftCone/inclusionFunctor"
        diagToPdf2 inclusionLeftCone "OutputGraphViz/Examples/ConeCategory/LeftCone/inclusionDiagram"
        diagToPdf diag "OutputGraphViz/Examples/ConeCategory/LeftCone/diagAsFunct"
        diagToPdf2 diag "OutputGraphViz/Examples/ConeCategory/LeftCone/diag"
        catToPdf coneCat "OutputGraphViz/Examples/ConeCategory/LeftCone/coneCategory"
        diagToPdf ((ob coneCat) !! 0) "OutputGraphViz/Examples/ConeCategory/LeftCone/exampleOfCone"
        diagToPdf2 ((ob coneCat) !! 0) "OutputGraphViz/Examples/ConeCategory/LeftCone/exampleOfConeAsDiag"
        putStrLn "End of ExampleLeftCone"