forked from GitHub/gf-rgl
99 lines
2.0 KiB
Haskell
99 lines
2.0 KiB
Haskell
import System.Directory
|
|
import Data.Char
|
|
import Data.List
|
|
|
|
-- counting modules and lines in RGL implementations
|
|
-- leaving out Lexicon, Structural, dictionaries, Extra, Extend,... (see below the list of prefixes)
|
|
|
|
main = do
|
|
mapM_ getCounts allLanguages
|
|
|
|
getCounts (lan,language) = do
|
|
cs <- mapM (getCount language lan) prefixes
|
|
let (ms,ls) = unzip cs
|
|
putStrLn $ unwords [language, show (sum ms), show (sum ls)]
|
|
|
|
getCount language lan pref = do
|
|
let file = concat ["../src/",language,"/",pref,lan,".gf"]
|
|
--- putStrLn file
|
|
ms <- readFileIf file
|
|
case ms of
|
|
Nothing -> return (0,0)
|
|
Just s -> return (1,length (codeLines (lines s)))
|
|
|
|
codeLines ls = filter (\l -> not (all isSpace l || isPrefixOf "--" l)) ls
|
|
|
|
readFileIf name = do
|
|
b <- doesFileExist name
|
|
case b of
|
|
True -> readFile name >>= return . Just
|
|
False -> return Nothing
|
|
|
|
|
|
prefixes = [
|
|
"Adjective"
|
|
,"Adverb"
|
|
,"Cat"
|
|
,"Common"
|
|
,"Conjunction"
|
|
,"Diff"
|
|
,"Grammar"
|
|
,"Lang"
|
|
-- ,"Lexicon"
|
|
,"Noun"
|
|
,"Numeral"
|
|
,"Phrase"
|
|
,"Question"
|
|
,"Relative"
|
|
,"Sentence"
|
|
-- ,"Structural"
|
|
,"Tense"
|
|
,"Text"
|
|
,"Verb"
|
|
,"Res"
|
|
,"Morpho"
|
|
,"Phono"
|
|
,"Paradigms"
|
|
]
|
|
|
|
allLanguages = [
|
|
("", "abstract")
|
|
,("Afr","afrikaans")
|
|
,("Ara","arabic")
|
|
--- ,("Bul","bulgarian") ---- todo convert to utf8
|
|
,("Cat","catalan")
|
|
,("Chi","chinese")
|
|
,("Dan","danish")
|
|
,("Dut","dutch")
|
|
,("Eng","english")
|
|
,("Est","estonian")
|
|
,("Eus","basque")
|
|
,("Fin","finnish")
|
|
,("Fre","french")
|
|
,("Ger","german")
|
|
,("Gre","greek")
|
|
,("Hin","hindi")
|
|
,("Ice","icelandic")
|
|
,("Ita","italian")
|
|
,("Jpn","japanese")
|
|
,("Lav","latvian")
|
|
,("Mlt","maltese")
|
|
,("Mon","mongolian")
|
|
,("Nep","nepali")
|
|
,("Nno","nynorsk")
|
|
,("Nor","norwegian")
|
|
,("Pes","persian")
|
|
,("Pnb","punjabi")
|
|
,("Pol","polish")
|
|
,("Por","portuguese")
|
|
---- ,("Ron","romanian")
|
|
,("Rus","russian")
|
|
,("Snd","sindhi")
|
|
,("Spa","spanish")
|
|
,("Swe","swedish")
|
|
,("Tha","thai")
|
|
,("Urd","urdu")
|
|
,("Romance","romance")
|
|
,("Scand","scandinavian")
|
|
,("Hindustani","hindustani")
|
|
] |