cakyrespa 0.0.11 → 0.0.12
raw patch · 3 files changed
+30/−8 lines, 3 files
Files
- cakyrespa.cabal +1/−1
- src/Language/Lojban/Read.hs +26/−4
- src/cakyrespa.hs +3/−3
cakyrespa.cabal view
@@ -2,7 +2,7 @@ cabal-version: >= 1.6 name: cakyrespa-version: 0.0.11+version: 0.0.12 stability: Alpha license: BSD3 license-file: LICENSE
src/Language/Lojban/Read.hs view
@@ -10,10 +10,11 @@ import Language.Lojban.Parser hiding ( Tag, Sumti, Selbri, KOhA, FA, Brivla, BAI, Number, LI, RelativeClause,- Time, KU, Linkargs, FIhO, NU, NA, LA, ZOI, ME, JOhI)+ Time, KU, Linkargs, FIhO, NU, NA, LA, ZOI, ME, JOhI, SE) import qualified Language.Lojban.Parser as P import Data.Maybe import Data.Char+import Control.Arrow data Lojban = Bridi Selbri [(Tag, Sumti)]@@ -31,6 +32,7 @@ | NotImplementedSelbri String | NA Selbri | ME Sumti+ | SE Int Selbri deriving (Show, Eq) data Sumti@@ -61,14 +63,25 @@ data Tag = FA Int | FIhO Selbri- | BAI String+ | BAI (Maybe String) String | Time [String] | NotImplementedTag String deriving (Show, Eq) readLojban :: String -> Lojban-readLojban = either (ParseError . show) process . parse+readLojban = processSE . either (ParseError . show) process . parse +processSE :: Lojban -> Lojban+processSE (Bridi (SE n selbri) ss) = processSE $+ Bridi selbri $ map (first $ flipTag n) ss+processSE l = l++flipTag :: Int -> Tag -> Tag+flipTag n (FA f)+ | f == 1 = FA n+ | f == n = FA 1+flipTag _ t = t+ process :: Text -> Lojban process (TopText _ _ [VocativeSumti [(_, v, _)] _ _] Nothing Nothing Nothing) = Vocative v@@ -119,7 +132,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.BAI _ Nothing (_, b, _) _ _) = (Nothing, BAI Nothing b)+readTag (P.BAI _ (Just (_, s, _)) (_, b, _) _ _) = (Nothing, BAI (Just s) b) readTag (P.Time _ [((_, t, _), Nothing, Nothing)] _ _) = (Nothing, Time [t]) readTag (P.Time _ _ _ ts) = (Nothing, Time $ map readTime ts)@@ -219,7 +233,15 @@ 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 (P.SE (_, se, _) _ s) = SE (fromJust $ lookup se seList) $ readSelbri s readSelbri s = NotImplementedSelbri $ "readSelbri: " ++ show s++seList = [+ ("se", 2),+ ("te", 3),+ ("ve", 4),+ ("xe", 5)+ ] next :: Int -> [Int] -> Int next n e
src/cakyrespa.hs view
@@ -67,8 +67,8 @@ readRejgau s = do KOhA "ko" <- lookup (FA 1) s- ZOI fp <- lookup (BAI "me'e") s- tai <- lookup (BAI "tai") s+ ZOI fp <- lookup (BAI Nothing "me'e") s+ tai <- lookup (BAI (Just "se") "tai") s case tai of LA (Right (Brivla "cakyrespa")) -> return $ SAVEASCAK fp LA (Left "syvygyd") -> return $ SAVEASSVG fp@@ -177,7 +177,7 @@ readLAhU2 :: [(Tag, Sumti)] -> Maybe Double readLAhU2 s = do- LI (Number d) <- lookup (BAI "la'u") s+ LI (Number d) <- lookup (BAI Nothing "la'u") s return d readCrakla :: [(Tag, Sumti)] -> Maybe Command