mmsyn4-0.2.0.0: Main.hs
{-|
Module : Main
Description : The "glue" between electronic tables and GraphViz
Copyright : (c) OleksandrZhabenko, 2017-2020
License : MIT
Maintainer : olexandr543@yahoo.com
Stability : Experimental
A program @mmsyn4@ converts a specially formated @.csv@ file with a colon as a field separator obtained from the electronic teble
into a visualized by GraphViz graph in the one of the supported by GraphViz format. The proper GraphViz installation is required.
-}
module Main where
import MMSyn4 (process2)
import System.Environment (getArgs)
import System.Directory
{-| Usage
1. After installation the executable mmsyn4 is created. Afterwards, it is used to process files. So, open an office spreadsheet program,
e. g. LibreOffice Calc.
2. Begin to enter the text in the cells. You can use Unicode characters. No quotation marks should be used, instead use some
special delimiter except '@' sign.
3. Do not use colons, instead when needed switch to the nearest cell to the right.
4. To make a text visually highlighted (yellowish), start the cell with an ’@’ sign.
5. Lines in the table create different chains in the resulting graph. To produce an arrow to the text in the cell, enter it in the next cell
in the row to the right.
6. To make several arrows from the cell, switch to the next cell to the right for this parent one (the cell that will be a parent
for several other cells), enter needed new texts there and in the located below cells.
7. Usually, you can search the needed text with Ctrl+F if needed.
8. Empty lines in the table do not influence the resulting visualization. Above each line, except the first one, there must be at least one filled cell.
It must be located above the text on the new line or even further to the right above. Otherwise, the program will produce no reasonably useful output.
9. After entering all the text, export the sheet as a \"\*.csv\" file using colons (\':\') as separator in the working directory. Otherwise,
the program won’t work.
10. Run the apprapriate executable mmsyn4 in the terminal or from the command line while being in the directory with the created .csv file.
Specify as a command line argument its name. While executing a program enter a word name of the .csv file to be saved. DO use alphanumeric symbols
and dashes if needed. Then specify the needed visualization scheme by specifying the appropriate character in the terminal and the format of the
resulting visualization file (refer to GraphViz documentation for the default list of formats).
11. Your first visualization is then created.
12. Save the spreadsheet document as a spreadsheet file (if you worked with spreadsheets, otherwise this step can be omitted).
13. Repeat the steps from 2 to 12 as needed to produce more visualizations.
14. Afterwards, you have a list of graphics files, a list of .gv files -- source files for Graphviz -- and a list of csv files, and a saved spreadsheet file.
Then you can use the produced visualizations for some other documents.
-}
main :: IO ()
main = do
args <- getArgs
let arg0 = concat . take 1 $ args
if arg0 == "1.csv"
then do
exi <- doesFileExist arg0
if exi
then do
copyFile "1.csv" "1.csv.saved"
process2
else putStrLn "Please, create the named file and run the program again! "
else do
exi <- doesFileExist arg0
if exi
then do
exi2 <- doesFileExist "1.csv"
if exi2
then do
copyFile "1.csv" "1.csv.saved"
copyFile arg0 "1.csv"
process2
else do
copyFile arg0 "1.csv"
process2
else putStrLn "Please, create the named file and run the program again! "