diff options
| author | krasimir <krasimir@chalmers.se> | 2015-11-13 22:41:20 +0000 |
|---|---|---|
| committer | krasimir <krasimir@chalmers.se> | 2015-11-13 22:41:20 +0000 |
| commit | f3a15303b1909d71c705ee8267a72c31f751a5df (patch) | |
| tree | a90c9e06377bcfcb9dcb4eddaeab58d88ee7b1df /src/ui | |
| parent | ebb3abad9f13de52dc7f26af3a65af3cb64f4acc (diff) | |
update glosses.hs to split definitions from examples in separate triples
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/android/glosses.hs | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/src/ui/android/glosses.hs b/src/ui/android/glosses.hs index 0bb3c8af0..cd77e2118 100644 --- a/src/ui/android/glosses.hs +++ b/src/ui/android/glosses.hs @@ -1,8 +1,10 @@ import SG +import Data.Char +import Data.List main = do ls <- fmap lines $ readFile "../../../lib/src/translator/Dictionary.gf" - writeFile "assets/glosses.txt" (unlines ["<"++fn++",gloss,"++show gloss++">" | Just (fn,gloss) <- map gloss ls]) + writeFile "assets/glosses.txt" (unlines [x | Just (fn,gloss) <- map gloss ls, x <- glossTriples fn gloss]) gloss l = case words l of @@ -11,9 +13,20 @@ gloss l = _ -> Nothing _ -> Nothing -test = do - db <- openSG "semantics.db" - ls <- fmap lines $ readFile "assets/glosses.txt" - inTransaction db $ - sequence_ [insertTriple db s p o | Just (s,p,o) <- map readTriple ls] - closeSG db +glossTriples fn s = + (if null gs then [] else ["<"++fn++",gloss,"++show (mergeGloss gs)++">"])++ + ["<"++fn++",example,"++e++">" | e <- es] + where + (es,gs) = partition isExample (splitGloss s) + +splitGloss s = + let (xs,s') = break (==';') s + in trim xs : case s' of + ';':s -> splitGloss s + _ -> [] + where + trim = reverse . dropWhile isSpace . reverse . dropWhile isSpace + +mergeGloss = intercalate "; " + +isExample s = not (null s) && head s == '"' && last s == '"' |
