module DDC.Build.Language
( Language (..)
, Bundle (..)
, Fragment (..)
, languages
, languageOfExtension)
where
import DDC.Core.Fragment
import DDC.Build.Language.Base
import DDC.Build.Language.Lite as Lite
import DDC.Build.Language.Salt as Salt
import DDC.Build.Language.Eval as Eval
import DDC.Build.Language.Flow as Flow
import DDC.Build.Language.Zero as Zero
import DDC.Build.Language.Tetra as Tetra
languages :: [(String, Language)]
languages
= [ ( "Tetra", Tetra.language)
, ( "Lite", Lite.language)
, ( "Salt", Salt.language)
, ( "Eval", Eval.language)
, ( "Flow", Flow.language)
, ( "Zero", Zero.language) ]
languageOfExtension :: String -> Maybe Language
languageOfExtension ext
= let
ext' = case ext of
'.' : rest -> rest
_ -> ext
in case ext' of
"dct" -> Just Tetra.language
"dcl" -> Just Lite.language
"dcs" -> Just Salt.language
"dcv" -> Just Eval.language
"dcf" -> Just Flow.language
"dcz" -> Just Zero.language
_ -> Nothing