module Git.Fmt.Language (
Language(..),
languages, languageOf, extension, parser, renderWithTabs,
) where
import Git.Fmt.Language.Json.Parser as Json
import Git.Fmt.Language.Json.Pretty ()
import Text.Parsec.String
import Text.PrettyPrint.HughesPJClass
data Language = Json
deriving (Eq, Ord, Show)
languages :: [Language]
languages = [Json]
languageOf :: String -> Maybe Language
languageOf ext
| ext `elem` [".json"] = Just Json
| otherwise = Nothing
extension :: Language -> String
extension Json = "json"
parser :: Language -> Parser Doc
parser Json = pPrint <$> Json.topLevelValue
renderWithTabs :: Doc -> String
renderWithTabs doc = unlines $ map withTabs (lines $ render doc)
where
withTabs (' ':xs) = '\t':withTabs xs
withTabs line = line