module Java.META.Spec where import Data.Char (toLower) import Java.META.Types class MetaSpec s where loadFirstSection :: Section -> s loadOtherSection :: s -> Section -> s loadOtherSection s _ = s storeMeta :: s -> META loadSpec :: (MetaSpec s) => META -> s loadSpec [] = error "Cannot load empty metadata" loadSpec (s:ss) = let x = loadFirstSection s in foldl loadOtherSection x ss lookupList :: String -> Maybe String -> [(String, String)] lookupList _ Nothing = [] lookupList name (Just val) = [(name, val)] bool2string :: Bool -> String bool2string True = "true" bool2string False = "false" string2bool :: String -> Bool string2bool s | map toLower s == "true" = True | otherwise = False