019f8fd211
git-subtree-dir: users/wpcarro git-subtree-mainline:464bbcb15c
git-subtree-split:24f5a642af
Change-Id: I6105b3762b79126b3488359c95978cadb3efa789
41 lines
1.1 KiB
Haskell
41 lines
1.1 KiB
Haskell
--------------------------------------------------------------------------------
|
|
module App where
|
|
--------------------------------------------------------------------------------
|
|
import Keyboard (Keyboard(..))
|
|
import Transforms (Transform(..))
|
|
import Utils ((|>))
|
|
|
|
import qualified Data.Char as Char
|
|
import qualified Utils
|
|
import qualified Data.List.Split as Split
|
|
import qualified Keyboard
|
|
import qualified Data.HashMap.Strict as HM
|
|
--------------------------------------------------------------------------------
|
|
|
|
transform :: Keyboard -> Transform -> Keyboard
|
|
|
|
transform (Keyboard xs) xform =
|
|
case xform of
|
|
HorizontalFlip ->
|
|
xs
|
|
|> fmap reverse
|
|
|> Keyboard
|
|
|
|
VerticalFlip ->
|
|
xs
|
|
|> reverse
|
|
|> Keyboard
|
|
|
|
Shift n ->
|
|
xs
|
|
|> concat
|
|
|> Utils.rotate n
|
|
|> Split.chunksOf 10
|
|
|> Keyboard
|
|
|
|
retypePassage :: String -> Keyboard -> Maybe String
|
|
retypePassage passage newKeyboard =
|
|
passage
|
|
|> fmap Char.toUpper
|
|
|> traverse (\c -> HM.lookup c Keyboard.charToCoord)
|
|
>>= traverse (Keyboard.coordToChar newKeyboard)
|