cakyrespa 0.0.24 → 0.0.26
raw patch · 5 files changed
+52/−40 lines, 5 filesdep ~gluturtle
Dependency ranges changed: gluturtle
Files
- cakyrespa.cabal +2/−2
- src/Jimpe.hs +9/−0
- src/Klesi.hs +1/−0
- src/Minde.hs +34/−33
- src/cakyrespa.hs +6/−5
cakyrespa.cabal view
@@ -2,7 +2,7 @@ cabal-version: >= 1.6 name: cakyrespa-version: 0.0.24+version: 0.0.26 stability: Alpha license: BSD3 license-file: LICENSE@@ -26,5 +26,5 @@ main-is: cakyrespa.hs other-modules: Minde, Jimpe, Tcidu, Liste, Klesi build-depends: base >3 && <5, lojbanParser >= 0.1.5,- gluturtle >= 0.0.33, GLUT, yjsvg, yjtools >= 0.9.18+ gluturtle >= 0.0.35, GLUT, yjsvg, yjtools >= 0.9.18 ghc-options: -Wall
src/Jimpe.hs view
@@ -27,6 +27,7 @@ MIDYSTE [jmi pavbri args, jmi relbri args] jmi (MultiText texts) args = MIDYSTE $ map (($ args) . jmi) texts jmi (Vocative "co'o") _ = COhO+jmi (Vocative "fe'o") _ = COhO jmi l _ = SRERA $ show l type Midytcidu = [(Tag, Sumti)] -> [Sumti] -> Maybe Minde@@ -44,6 +45,7 @@ ("cisnygau", cisnygau), ("viska", viska), ("rapli", rapli),+ ("vimcu", vimcu), ("xruti", xruti), ("morji", morji), ("gasnu", gasnu),@@ -64,6 +66,13 @@ klama, crakla, rixykla, carna, clugau, galfi, pilno, cisni, cisnygau, viska, rapli, xruti, morji, gasnu, rejgau, tcidu, napilno, naviska :: Midytcidu++vimcu terms args = do+ KOhA "ko" <- lookup (FA 1) terms+ selgau <- lookup (FA 2) terms+ apply args selgau $ \sg -> case sg of+ LO (Brivla "pixra") _ -> return VIMCULOPIXRA+ _ -> return $ SRERA $ show terms ++ " " ++ show args klama terms args = do KOhA "ko" <- lookup (FA 1) terms
src/Klesi.hs view
@@ -18,6 +18,7 @@ | NAVISKA | VISKA | CISNI Double | CISNYGAUFOLDI Double Double | XRUTI+ | VIMCULOPIXRA | MORJI String ([Sumti] -> Minde) | GASNU String [Sumti] | REJGAUSETAIJBO FilePath | TCIDUSETAIJBO FilePath | REJGAUSETAICAK FilePath | TCIDU FilePath
src/Minde.hs view
@@ -3,8 +3,8 @@ import Klesi(Minde(..), Sumti) import Text.XML.YJSVG(showSVG)-import Graphics.UI.GLUT.Turtle(setFieldSize,- Field, outputString,+import Graphics.UI.GLUT.Turtle(setFieldSize, Console,+ Field, consoleOutput, clear, Turtle, runInputs, inputs, getSVG, goto, forward, backward, left, right, beginfill, endfill, undo, penup, pendown, hideturtle, showturtle, shapesize,@@ -22,42 +22,43 @@ vabyciha :: a -> b -> IORef [(a, b)] -> IO () vabyciha cmene fasnu vanbi = atomicModifyIORef_ vanbi ((cmene, fasnu) :) -minde :: Field -> Turtle -> IORef [(String, [Sumti] -> Minde)] -> Minde -> IO Bool-minde _ t _ (KLAMA x y) = goto t x y >> return True-minde _ t _ (CRAKLA d) = forward t d >> return True-minde _ t _ (RIXYKLA d) = backward t d >> return True-minde _ t _ (ZUNLE d) = left t d >> return True-minde _ t _ (PRITU d) = right t d >> return True-minde _ t _ COhACLUGAU = beginfill t >> return True-minde _ t _ COhUCLUGAU = endfill t >> return True-minde _ t _ (PEBYCISNI s) = pensize t s >> return True-minde _ t _ (PEBYSKA r g b) = pencolor t (r, g, b) >> return True-minde _ t _ (BURSKA r g b) = fillcolor t (r, g, b) >> return True-minde _ t _ (FLOSKA r g b) = bgcolor t (r, g, b) >> return True-minde _ t _ NAPILNOLOPENBI = penup t >> return True-minde _ t _ PILNOLOPENBI = pendown t >> return True-minde _ t _ NAVISKA = hideturtle t >> return True-minde _ t _ VISKA = showturtle t >> return True-minde _ t _ (CISNI s) = shapesize t s s >> return True-minde f _ _ (CISNYGAUFOLDI w h) = setFieldSize f w h >> return True-minde _ t _ XRUTI = undo t >> return True-minde _ _ vanbi (MORJI cmene fasnu) = vabyciha cmene fasnu vanbi >> return True-minde f t vanbi (GASNU cmene sumti) = vabytcidu cmene vanbi >>=- minde f t vanbi . maybe (SRERA $ "not defined: " ++ cmene) ($ sumti)-minde _ t _ (REJGAUSETAICAK fp) = inputs t >>= writeFile fp . show >> return True-minde _ t _ (TCIDU fp) = readFile fp >>= runInputs t . read >> return True-minde _ t _ (REJGAUSETAISVG fp) = do+minde :: Field -> Console -> Turtle -> IORef [(String, [Sumti] -> Minde)] -> Minde -> IO Bool+minde _ _ t _ (KLAMA x y) = goto t x y >> return True+minde _ _ t _ (CRAKLA d) = forward t d >> return True+minde _ _ t _ (RIXYKLA d) = backward t d >> return True+minde _ _ t _ (ZUNLE d) = left t d >> return True+minde _ _ t _ (PRITU d) = right t d >> return True+minde _ _ t _ COhACLUGAU = beginfill t >> return True+minde _ _ t _ COhUCLUGAU = endfill t >> return True+minde _ _ t _ (PEBYCISNI s) = pensize t s >> return True+minde _ _ t _ (PEBYSKA r g b) = pencolor t (r, g, b) >> return True+minde _ _ t _ (BURSKA r g b) = fillcolor t (r, g, b) >> return True+minde _ _ t _ (FLOSKA r g b) = bgcolor t (r, g, b) >> return True+minde _ _ t _ NAPILNOLOPENBI = penup t >> return True+minde _ _ t _ PILNOLOPENBI = pendown t >> return True+minde _ _ t _ NAVISKA = hideturtle t >> return True+minde _ _ t _ VISKA = showturtle t >> return True+minde _ _ t _ (CISNI s) = shapesize t s s >> return True+minde f _ _ _ (CISNYGAUFOLDI w h) = setFieldSize f w h >> return True+minde _ _ t _ VIMCULOPIXRA = clear t >> return True+minde _ _ t _ XRUTI = undo t >> return True+minde _ _ _ vanbi (MORJI cmene fasnu) = vabyciha cmene fasnu vanbi >> return True+minde f c t vanbi (GASNU cmene sumti) = vabytcidu cmene vanbi >>=+ minde f c t vanbi . maybe (SRERA $ "not defined: " ++ cmene) ($ sumti)+minde _ _ t _ (REJGAUSETAICAK fp) = inputs t >>= writeFile fp . show >> return True+minde _ _ t _ (TCIDU fp) = readFile fp >>= runInputs t . read >> return True+minde _ _ t _ (REJGAUSETAISVG fp) = do w <- windowWidth t h <- windowHeight t svg <- getSVG t writeFile fp $ showSVG w h svg return True-minde _ _ _ (REJGAUSETAIJBO _) = return True-minde _ _ _ (TCIDUSETAIJBO _) = return True-minde _ _ _ COhO = return False-minde f t vanbi (MIDYSTE cl) = mapWhile (minde f t vanbi) cl-minde f _ _ (SRERA str) = do- outputString f ".i mi na jimpe"+minde _ _ _ _ (REJGAUSETAIJBO _) = return True+minde _ _ _ _ (TCIDUSETAIJBO _) = return True+minde _ _ _ _ COhO = return False+minde f c t vanbi (MIDYSTE cl) = mapWhile (minde f c t vanbi) cl+minde _ c _ _ (SRERA str) = do+ consoleOutput c ".i mi na jimpe" putStrLn $ "error: " ++ str return True
src/cakyrespa.hs view
@@ -7,7 +7,8 @@ import Graphics.UI.GLUT(mainLoop) import Graphics.UI.GLUT.Turtle(- initialize, openField, openConsole, setConsole, prompt, oninputtext,+ initialize, openField, openConsole, setConsole, consolePrompt,+ oncommand, newTurtle, notundo, shape, shapesize) import Data.IORef(newIORef, readIORef) import Data.IORef.Tools(atomicModifyIORef_)@@ -24,20 +25,20 @@ t <- newTurtle f env <- newIORef [] cmds <- newIORef []- prompt f ".i "+ consolePrompt c ".i " shape t "turtle" shapesize t 3 3 notundo t- oninputtext f $ \cmd -> do+ oncommand f $ \cmd -> do let p = parse cmd j = jimpe p case (p, j) of (_, REJGAUSETAIJBO fp) -> writeFile fp . unlines . reverse =<< readIORef cmds (_, TCIDUSETAIJBO fp) ->- readFile fp >>= minde f t env . jimpe . parse+ readFile fp >>= minde f c t env . jimpe . parse >> return () (ParseError _, _) -> return () _ -> atomicModifyIORef_ cmds ((".i" ++ cmd) :)- minde f t env j+ minde f c t env j mainLoop