cakyrespa 0.0.6 → 0.0.7
raw patch · 3 files changed
+96/−4 lines, 3 filesdep +yjsvgdep ~gluturtle
Dependencies added: yjsvg
Dependency ranges changed: gluturtle
Files
- cakyrespa.cabal +6/−2
- src/Language/Lojban/Read.hs +18/−1
- src/cakyrespa.hs +72/−1
cakyrespa.cabal view
@@ -2,7 +2,7 @@ cabal-version: >= 1.6 name: cakyrespa-version: 0.0.6+version: 0.0.7 stability: Alpha license: BSD3 license-file: LICENSE@@ -17,10 +17,14 @@ . This is alpha version. +source-repository head+ type: git+ location: git://github.com/YoshikuniJujo/cakyrespa.git+ executable cakyrespa hs-source-dirs: src main-is: cakyrespa.hs other-modules: Language.Lojban.Read build-depends: base >3 && <5, lojbanParser >= 0.1.5,- gluturtle >= 0.0.9, GLUT+ gluturtle >= 0.0.10, GLUT, yjsvg ghc-options: -Wall
src/Language/Lojban/Read.hs view
@@ -10,7 +10,7 @@ import Language.Lojban.Parser hiding ( Tag, Sumti, Selbri, KOhA, FA, Brivla, BAI, Number, LI, RelativeClause,- Time, KU, Linkargs, FIhO, NU)+ Time, KU, Linkargs, FIhO, NU, NA, LA, ZOI, ME) import qualified Language.Lojban.Parser as P import Data.Maybe import Data.Char@@ -29,6 +29,8 @@ | Linkargs Selbri Sumti | NU Lojban | NotImplementedSelbri String+ | NA Selbri+ | ME Sumti deriving (Show, Eq) data Sumti@@ -39,6 +41,7 @@ | LI Mex | KU | SFIhO Selbri Sumti+ | ZOI String | NotImplementedSumti String deriving (Show, Eq) @@ -92,6 +95,8 @@ (process $ t) (process $ u) process (P.Selbri selbri) = Bridi (readSelbri selbri) []+process (P.SelbriTailTerms selbri ts _ _) =+ Bridi (readSelbri selbri) $ processTagSumti [] ts process t = NotImplemented $ "process: " ++ show t processTagSumti :: [P.Sumti] -> [P.Sumti] -> [(Tag, Sumti)]@@ -113,6 +118,8 @@ readTag :: P.Tag -> (Maybe Int, Tag) readTag (P.FA (_, f, _) _) = let n = fromJust $ lookup f faList in (Just n, FA n) readTag (P.BAI _ _ (_, b, _) _ _) = (Nothing, BAI b)+readTag (P.Time _ [((_, t, _), Nothing, Nothing)] _ _) =+ (Nothing, Time [t]) readTag (P.Time _ _ _ ts) = (Nothing, Time $ map readTime ts) readTag t = (Nothing, NotImplementedTag $ "readTag: " ++ show t) @@ -133,12 +140,20 @@ readSumti (P.KOhA (_, k, _) _) = KOhA k readSumti (LALE (_, "lo", _) _ st _ _) = LO selbri relative where (selbri, relative) = readSumtiTail st+readSumti (LALE (_, "la", _) _ st _ _) = LA $ Right selbri+ where (selbri, _relative) = readSumtiTail st+readSumti (P.LA (_, "la", _) _ _ [(_, n, _)] _) = LA $ Left n readSumti (P.LI _ _ m _ _) = LI $ readMex m readSumti (P.KU _ _) = KU readSumti (TagSumti (P.FIhO (_, "fi'o", _) _ selbri _ _) sumti) = SFIhO (readSelbri selbri) (readSumti sumti)+readSumti (P.ZOI _ "zoi" ws _ _) = ZOI $ processZOI $ concat ws readSumti s = NotImplementedSumti $ "readSumti: " ++ show s +processZOI :: String -> String+processZOI ('.' : str) = let ('.' : s) = reverse str in+ dropWhile isSpace $ reverse $ dropWhile isSpace s+ readMex :: Operand -> Mex readMex (P.Number n _ _) = readNumber n readMex o = NotImplementedMex $ "readMex: " ++ show o@@ -198,6 +213,8 @@ readSelbri (P.Linkargs selbri (BE (_, "be", _) _ sumti _ _ _)) = Linkargs (readSelbri selbri) (readSumti sumti) readSelbri (P.NU (_, "nu", _) _ _ _ bridi _ _) = NU $ process bridi+readSelbri (P.NA (_, "na", _) _ s) = NA $ readSelbri s+readSelbri (P.ME (_, "me", _) _ s _ _ _ _) = ME $ readSumti s readSelbri s = NotImplementedSelbri $ "readSelbri: " ++ show s next :: Int -> [Int] -> Int
src/cakyrespa.hs view
@@ -2,6 +2,7 @@ import Graphics.UI.GLUT hiding (R, Repeat) import Graphics.UI.GLUT.Turtle+import Text.XML.YJSVG import Language.Lojban.Read @@ -28,15 +29,57 @@ pcmd p = case p of (Vocative "co'o") -> COhO (TenseGI "ba" b c) -> Commands (pcmd b) (pcmd c)+ b@(Bridi (Brivla "tcidu") s) -> fromMaybe (Unknown b) $ readTcidu s+ b@(Bridi (Brivla "rejgau") s) -> fromMaybe (Unknown b) $ readRejgau s+ b@(Bridi (Brivla "viska") s) -> fromMaybe (Unknown b) $ readViska s+ b@(Bridi (NA (Brivla "viska")) s) -> fromMaybe (Unknown b) $ readNAViska s+ b@(Bridi (Brivla "cisni") s) -> fromMaybe (Unknown b) $ readCisni s b@(Bridi (Brivla "xruti") s) -> fromMaybe (Unknown b) $ readXruti s b@(Bridi (Brivla "rapli") s) -> fromMaybe (Unknown b) $ readRapli s b@(Bridi (Brivla "carna") s) -> fromMaybe (Unknown b) $ readCarna s b@(Bridi (Brivla "crakla") s) -> fromMaybe (Unknown b) $ readCrakla s b@(Bridi (Brivla "rixykla") s) -> fromMaybe (Unknown b) $ readRixykla s- b@(Bridi (Brivla "pilno") s) -> fromMaybe (Unknown b) $ readPilno s+ b@(Bridi (Brivla "pilno") s) ->+ fromMaybe (Unknown b) $ readBAPilno s+ b@(Bridi (NA (Brivla "pilno")) s) -> fromMaybe (Unknown b) $ readNAPilno s b@(Bridi (Brivla "clugau") s) -> fromMaybe (Unknown b) $ readClugau s r -> Unknown r +readTcidu s = do+ KOhA "ko" <- lookup (FA 1) s+ LA (Right (ME (ZOI fp))) <- lookup (FA 3) s+ return $ READFILE fp++readRejgau s = do+ KOhA "ko" <- lookup (FA 1) s+ ZOI fp <- lookup (BAI "me'e") s+ tai <- lookup (BAI "tai") s+ case tai of+ LA (Right (Brivla "cakyrespa")) -> return $ SAVEASCAK fp+ LA (Left "syvygyd") -> return $ SAVEASSVG fp+ s -> error $ show s++readViska :: [(Tag, Sumti)] -> Maybe Command+readViska s = do+ KOhA "ko" <- lookup (FA 2) s+ return VISKA++readNAViska :: [(Tag, Sumti)] -> Maybe Command+readNAViska s = do+ KOhA "ko" <- lookup (FA 2) s+ return NAVISKA++readNAPilno :: [(Tag, Sumti)] -> Maybe Command+readNAPilno s = do+ KOhA "ko" <- lookup (FA 1) s+ return NAPILNOLOPENBI++readCisni :: [(Tag, Sumti)] -> Maybe Command+readCisni s = do+ LI (Number n) <- lookup (FA 1) s+ KOhA "ko" <- lookup (FA 2) s+ return $ CISNI n+ readXruti :: [(Tag, Sumti)] -> Maybe Command readXruti s = do KOhA "ko" <- lookup (FA 1) s@@ -56,6 +99,12 @@ (False, True) -> return COhUCLUGAU _ -> fail "bad" +readBAPilno :: [(Tag, Sumti)] -> Maybe Command+readBAPilno s = do+ cm <- readPilno s+ if (Time ["ba"], KU) `elem` s then return cm+ else return $ Commands cm PILNOLOPENBI+ readPilno :: [(Tag, Sumti)] -> Maybe Command readPilno s = do KOhA "ko" <- lookup (FA 1) s@@ -78,6 +127,7 @@ (Brivla skari) _))) _ -> do (r, g, b) <- lookup skari skaste return $ BURSKA r g b+ LO (Brivla "penbi") Nothing -> return PILNOLOPENBI _ -> return $ UnknownSelpli selpli skaste :: [(String, (Int, Int, Int))]@@ -147,6 +197,14 @@ | Commands Command Command | Repeat Int Command | XRUTI+ | CISNI Double+ | NAPILNOLOPENBI+ | PILNOLOPENBI+ | NAVISKA+ | VISKA+ | SAVEASSVG FilePath+ | SAVEASCAK FilePath+ | READFILE FilePath | COhO | Unknown Lojban | ParseErrorC | UnknownSelpli Sumti deriving Show@@ -164,10 +222,23 @@ processInput _ t COhACLUGAU = beginfill t >> return True processInput _ t COhUCLUGAU = endfill t >> return True processInput _ t XRUTI = undo t >> return True+processInput _ t (CISNI s) = shapesize t s s >> return True+processInput _ t NAPILNOLOPENBI = penup t >> return True+processInput _ t PILNOLOPENBI = pendown t >> return True+processInput _ t NAVISKA = hideturtle t >> return True+processInput _ t VISKA = showturtle t >> return True processInput _ _ COhO = return False processInput f t (Commands c d) = processInput f t c >> processInput f t d processInput f t (Repeat n c) = sequence_ (replicate n (processInput f t c)) >> return True+processInput _ t (SAVEASSVG fp) = do+ w <- windowWidth t+ h <- windowHeight t+ svg <- getSVG t+ writeFile fp $ showSVG w h svg+ return True+processInput _ t (SAVEASCAK fp) = inputs t >>= writeFile fp . show >> return True+processInput _ t (READFILE fp) = readFile fp >>= runInputs t . read >> return True processInput f _ u@(Unknown _) = do outputString f ".i mi na jimpe" print u