about summary refs log tree commit diff
path: root/scratch/brilliant/Main.hs
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2020-08-05T23·18+0100
committerWilliam Carroll <wpcarro@gmail.com>2020-08-05T23·18+0100
commit5f52077492160195681a0a9bca806fd78ddbd6fd (patch)
tree2ab12112b52bda8ecc314954fbdb200443e97454 /scratch/brilliant/Main.hs
parente14fff7d4b04c37155acf046b7b3f350cf6ad3b6 (diff)
Re-type type using the altered keyboard
Remember: always read the instructions; that's the most important part.
Diffstat (limited to 'scratch/brilliant/Main.hs')
-rw-r--r--scratch/brilliant/Main.hs12
1 files changed, 11 insertions, 1 deletions
diff --git a/scratch/brilliant/Main.hs b/scratch/brilliant/Main.hs
index 4cc6ac1101c2..e94c73bea287 100644
--- a/scratch/brilliant/Main.hs
+++ b/scratch/brilliant/Main.hs
@@ -12,6 +12,7 @@ import qualified App
 
 data CommandArgs = CommandArgs
   { transforms :: String
+  , passage :: String
   } deriving (Eq, Show)
 
 parseArgs :: Parser CommandArgs
@@ -20,13 +21,22 @@ parseArgs =
                   ( long "transforms"
                  <> short 't'
                  <> help "String of transforms where (e.g. \"HHVS12VHVHS3\")" )
+              <*> strOption
+                  ( long "passage"
+                 <> short 'p'
+                 <> help "Input text to re-type" )
 
 main :: IO ()
 main = do
   CommandArgs{..} <- execParser opts
   case Transforms.fromString transforms of
     Nothing -> putStrLn "You must provide valid input (e.g. \"HHVS12VHVHS3\")"
-    Just xs -> print $ foldl App.transform Keyboard.qwerty xs
+    Just xs -> do
+      let keyboard = foldl App.transform Keyboard.qwerty (Transforms.optimize xs)
+      putStrLn $ "Typing: \"" ++ passage ++ "\"\nOn this keyboard:\n" ++ show keyboard
+      case App.retypePassage passage keyboard of
+        Nothing -> putStrLn $ "Looks like at least one of the characters in your input passage doesn't fit on our QWERTY keyboard: \n" ++ show Keyboard.qwerty
+        Just result -> putStrLn $ "Result: " ++ result
   where
     opts = info (parseArgs <**> helper)
       ( fullDesc