Inconveniently, I do not have the cipher code that I wrote from a previous chapter, and I'm not eager to reimplement it. TODO - Implement encrypt - Implement decrypt - Read all characters from STDIN
		
			
				
	
	
		
			35 lines
		
	
	
	
		
			846 B
		
	
	
	
		
			Haskell
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
	
		
			846 B
		
	
	
	
		
			Haskell
		
	
	
	
	
	
| module IOScratch where
 | |
| 
 | |
| import qualified System.Environment as SE
 | |
| import qualified System.IO as SIO
 | |
| --------------------------------------------------------------------------------
 | |
| 
 | |
| docs :: String
 | |
| docs = "Pass -e to encrypt and -d to decrypt."
 | |
| 
 | |
| encryptStdin :: IO ()
 | |
| encryptStdin = do
 | |
|   char <- SIO.hGetChar SIO.stdin
 | |
|   -- encrypt char
 | |
|   SIO.hPutStr SIO.stdout [char]
 | |
| 
 | |
| decryptStdin :: IO ()
 | |
| decryptStdin = do
 | |
|   char <- SIO.hGetChar SIO.stdin
 | |
|   -- decrypt char
 | |
|   SIO.hPutStr SIO.stdout [char]
 | |
| 
 | |
| main :: IO ()
 | |
| main = do
 | |
|   args <- SE.getArgs
 | |
|   case args of
 | |
|     [] ->
 | |
|       putStrLn $ "You did not pass enough arguments. " ++ docs
 | |
|     ["-e"] ->
 | |
|       encryptStdin
 | |
|     ["-d"] ->
 | |
|       decryptStdin
 | |
|     [x] ->
 | |
|       putStrLn $ "You passed an unsupported option: " ++ x ++ ". " ++ docs
 | |
|     _ ->
 | |
|       putStrLn $ "You passed too many arguments. " ++ docs
 |