forked from GitHub/gf-rgl
a script for counting lines of code in RGL implementations
This commit is contained in:
98
doc/CountLines.hs
Normal file
98
doc/CountLines.hs
Normal file
@@ -0,0 +1,98 @@
|
||||
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 = [
|
||||
("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")
|
||||
]
|
||||
Reference in New Issue
Block a user