packages feed

lojysamban-0.0.8: src/LojbanTools.hs

module LojbanTools (
	getSentences,
	headTerms,
	bridiTail,
	selbri,
	tailTerms,
	snd3
) where

import Language.Lojban.Parser hiding (LA, Brivla, KOhA, GOhA, NA, LerfuString)
import Data.Maybe

getSentences :: Sentence -> [Sentence]
getSentences (TopText _ _ _ _ (Just t) _) = getSentences t
getSentences (IText_1 _ _ _ _ (Just t)) = getSentences t
getSentences (StatementI s1 ss) = s1 : mapMaybe (\(_, _, s) -> s) ss
getSentences tbt@(TermsBridiTail{}) = [tbt]
getSentences o = error $ "getSentences: " ++ show o

headTerms :: Sentence -> [Sumti]
headTerms (TermsBridiTail ts _ _ _) = ts
headTerms _ = []

bridiTail :: Sentence -> Sentence
bridiTail (TermsBridiTail _ _ _ bt) = bt
bridiTail o = o

selbri :: Sentence -> Selbri
selbri (Selbri s) = s
selbri (SelbriTailTerms s _ _ _) = s
selbri t = error $ show t -- P.Brivla ([], "", []) []

tailTerms :: Sentence -> [Sumti]
tailTerms (SelbriTailTerms _ ts _ _) = ts
tailTerms _ = []

{-
readSumtiTail :: SumtiTail -> String
readSumtiTail (SelbriRelativeClauses (P.Brivla (_, n, _) _) _) = n
readSumtiTail st = show st
-}

snd3 :: (a, b, c) -> b
snd3 (_, y, _) = y