calculator 0.2.2.0 → 0.2.2.1
raw patch · 3 files changed
+42/−18 lines, 3 filesdep −mtl
Dependencies removed: mtl
Files
- calculator.cabal +3/−5
- src/Calculator/Color.hs +26/−0
- src/Calculator/Parser/Cmd.hs +13/−13
calculator.cabal view
@@ -1,5 +1,5 @@ name: calculator-version: 0.2.2.0+version: 0.2.2.1 synopsis: A calculator repl. description: A calculator repl that processes mathematical expressions. Does basic arithmetic, and provides pre-defined basic mathematical functions.@@ -33,12 +33,11 @@ , Calculator.Prim.Expr , Calculator.Prim.Function , Calculator.Prim.Statement+ , Calculator.Color -- other-extensions: - build-depends: QuickCheck >= 2.7.6 && <2.7.7- , base >=4.7 && <4.8+ build-depends: base >=4.7 && <4.8 , containers >= 0.5.5.1 && <0.5.6.0 , haskeline >=0.7.1.0 && <0.7.2.0- , mtl >= 2.2.1 , parsec >=3.1.7 && <3.2 hs-source-dirs: src/ ghc-options: -Wall@@ -68,7 +67,6 @@ build-depends: QuickCheck >= 2.7.6 && <2.7.7 , base >=4.7 && <4.8 , containers >= 0.5.5.1 && <0.5.6.0- , mtl >= 2.2.1 , parsec >=3.1.7 && <3.2 ghc-options: -Wall default-language: Haskell2010
+ src/Calculator/Color.hs view
@@ -0,0 +1,26 @@+module Calculator.Color+ ( Color (..)+ , color+ , bold+ ) where++--------------------------------------------------------------------------------++data Color = Black | Red | Green | Yellow+ | Blue | Magenta | Cyan | White+ | Reset+ deriving Enum++--------------------------------------------------------------------------------++color :: Color -> Bool -> String -> String+color c b s = let col = show (fromEnum c)+ bol = if b then "1" else "22"+ in "\ESC[" ++ bol ++ ";3" ++ col ++ "m" ++ s ++ "\ESC[0;m"++--------------------------------------------------------------------------------++bold :: String -> String+bold = color Reset True++--------------------------------------------------------------------------------
src/Calculator/Parser/Cmd.hs view
@@ -1,9 +1,9 @@ module Calculator.Parser.Cmd ( parseCmd+ , parseAssignCmd , parseAssign- , parseAssign'+ , parseFuncCmd , parseFunc- , parseFunc' ) where --------------------------------------------------------------------------------@@ -30,8 +30,8 @@ parseCmd' = parseShow <|> parseHelp <|> parseReset- <|> parseAssign- <|> parseFunc+ <|> parseAssignCmd+ <|> parseFuncCmd -------------------------------------------------------------------------------- -- help -> "?" | "help"@@ -52,13 +52,13 @@ parseReset = string "reset" >> spaces >> return Reset ----------------------------------------------------------------------------------- assign -> "var" id "=" expr+-- assignCmd -> "var" id "=" expr -parseAssign :: Parser Cmd-parseAssign = string "var" >> space >> spaces >> parseAssign'+parseAssignCmd :: Parser Cmd+parseAssignCmd = string "var" >> space >> spaces >> parseAssign -parseAssign' :: Parser Cmd-parseAssign' = do+parseAssign :: Parser Cmd+parseAssign = do str <- parseId _ <- spaces _ <- char '='@@ -69,11 +69,11 @@ -------------------------------------------------------------------------------- -- func -> "func" id (args) "=" expr -parseFunc :: Parser Cmd-parseFunc = string "func" >> space >> spaces >> parseFunc'+parseFuncCmd :: Parser Cmd+parseFuncCmd = string "func" >> space >> spaces >> parseFunc -parseFunc' :: Parser Cmd-parseFunc' = do+parseFunc :: Parser Cmd+parseFunc = do ident <- try (parseId <* (spaces >> char '(' >> spaces)) args <- (parseId <* spaces) `sepBy` (char ',' <* spaces) <* char ')' _ <- spaces >> char '=' <* spaces