mirror of
				https://github.com/The1Penguin/org-to-mafiauniverse.git
				synced 2025-10-30 20:25:13 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Haskell
		
	
	
	
	
	
| module Main where
 | |
| 
 | |
| import Control.Applicative
 | |
| import Control.Monad
 | |
| import Data.Functor
 | |
| import System.Environment
 | |
| import System.Exit
 | |
| import Text.Megaparsec hiding (parse, satisfy)
 | |
| import Text.ParserCombinators.ReadP
 | |
| 
 | |
| parse :: ReadP String -> String -> String
 | |
| parse rules = fst . last . readP_to_S rules
 | |
| 
 | |
| parseFile :: String -> String
 | |
| parseFile = unlines . map (parse fileParser) . lines
 | |
| 
 | |
| fileParser :: ReadP String
 | |
| fileParser = undefined
 | |
| 
 | |
| main :: IO ()
 | |
| main = putStr =<< parseCli =<< getArgs
 | |
| 
 | |
| parseCli :: [String] -> IO String
 | |
| parseCli [] = return usage
 | |
| parseCli [x] =
 | |
|   if head x /= '-'
 | |
|     then parseFile <$> readFile x
 | |
|     else return $ useArgs $ parse argParse x
 | |
| parseCli [x, _] = return $ useArgs $ parse argParse x
 | |
| parseCli _ = fail "Too many arugemnts"
 | |
| 
 | |
| argParse :: ReadP String
 | |
| argParse =
 | |
|   string "-" >> many1 (satisfy (/= ' '))
 | |
| 
 | |
| useArgs :: String -> String
 | |
| useArgs [] = ""
 | |
| useArgs ('h' : _) = usage
 | |
| useArgs ('v' : _) = version
 | |
| useArgs (_ : xs) = useArgs xs
 | |
| 
 | |
| usage :: String
 | |
| usage = "Usage: otm [-hv] [file]"
 | |
| 
 | |
| version :: String
 | |
| version = "otm 0.1"
 |