forked from GitHub/gf-core
update glosses.hs to split definitions from examples in separate triples
This commit is contained in:
@@ -1,8 +1,10 @@
|
|||||||
import SG
|
import SG
|
||||||
|
import Data.Char
|
||||||
|
import Data.List
|
||||||
|
|
||||||
main = do
|
main = do
|
||||||
ls <- fmap lines $ readFile "../../../lib/src/translator/Dictionary.gf"
|
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 =
|
gloss l =
|
||||||
case words l of
|
case words l of
|
||||||
@@ -11,9 +13,20 @@ gloss l =
|
|||||||
_ -> Nothing
|
_ -> Nothing
|
||||||
_ -> Nothing
|
_ -> Nothing
|
||||||
|
|
||||||
test = do
|
glossTriples fn s =
|
||||||
db <- openSG "semantics.db"
|
(if null gs then [] else ["<"++fn++",gloss,"++show (mergeGloss gs)++">"])++
|
||||||
ls <- fmap lines $ readFile "assets/glosses.txt"
|
["<"++fn++",example,"++e++">" | e <- es]
|
||||||
inTransaction db $
|
where
|
||||||
sequence_ [insertTriple db s p o | Just (s,p,o) <- map readTriple ls]
|
(es,gs) = partition isExample (splitGloss s)
|
||||||
closeSG db
|
|
||||||
|
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 == '"'
|
||||||
|
|||||||
Reference in New Issue
Block a user