mulang-3.5.2: src/Language/Mulang/Analyzer/DomainLanguageCompiler.hs
module Language.Mulang.Analyzer.DomainLanguageCompiler (
emptyDomainLanguage,
compileDomainLanguage) where
import Data.Maybe (fromMaybe)
import Language.Mulang.Analyzer.Analysis
import qualified Language.Mulang.DomainLanguage as DL
import Text.Inflections.Tokenizer (camelCase, rubyCase, snakeCase)
import Text.Dictionary (fromFile, toDictionary)
emptyDomainLanguage :: DomainLanguage
emptyDomainLanguage = DomainLanguage Nothing Nothing Nothing Nothing
compileDomainLanguage :: Maybe DomainLanguage -> IO DL.DomainLanguage
compileDomainLanguage Nothing = compileDomainLanguage (Just emptyDomainLanguage)
compileDomainLanguage (Just (DomainLanguage path style size jargon)) = do
dictionary <- compileDictionay path
return $ DL.DomainLanguage dictionary (compileStyle style) (compileSize size) (compileJargon jargon)
where
compileDictionay (Just path) = fromFile path
compileDictionay _ = return $ toDictionary []
compileSize = fromMaybe 3
compileStyle (Just SnakeCase) = snakeCase
compileStyle (Just RubyCase) = rubyCase
compileStyle _ = camelCase
compileJargon = fromMaybe []