----------------------------------------------------------------------------- -- | -- Module : Data.Algorithm.Palindromes.Main -- Copyright : (c) 2007 - 2009 Johan Jeuring -- License : BSD3 -- -- Maintainer : johan@jeuring.net -- Stability : experimental -- Portability : non-portable -- ----------------------------------------------------------------------------- module Main where import System.Environment (getArgs) import System.IO import Data.Algorithm.Palindromes.Palindromes helpMessage :: String helpMessage = "Usage:\n\n" ++ " palindrome [command-line-options] input-file\n\n" ++ "The following options are available:\n" ++ " --h: This message\n" ++ " -p : Print the longest palindrome (default)\n" ++ " -ps: Print the longest palindrome around each position in the input\n" ++ " -l : Print the length of the longest palindrome\n" ++ " -ls: Print the length of the longest palindrome around each position in the input\n" ++ " -t : Print the longest palindrome ignoring case, spacing and punctuation\n" ++ " -tl: Print the length of the longest text palindrome\n" main :: IO () main = do putStrLn "*********************" putStrLn "* Palindrome Finder *" putStrLn "*********************" args <- getArgs case args of [flag ,filePath] -> do let function = case flag of "-p" -> longestPalindrome "-ps" -> longestPalindromes "-l" -> lengthLongestPalindrome "-ls" -> lengthLongestPalindromes "-t" -> longestTextPalindrome "-ts" -> longestTextPalindromes _ -> const helpMessage input <- readFile filePath putStrLn (function input) [filePath] -> do input <- readFile filePath putStrLn (longestPalindrome input) _ -> putStrLn helpMessage