@@ -7,12 +7,12 @@ module Data.Language
77 , knownLanguage
88 , languageForFilePath
99 , pathIsMinified
10- , languageForType
1110 , supportedExts
1211 , codeNavLanguages
1312 ) where
1413
1514import Data.Aeson
15+ import qualified Data.Languages as Lingo
1616import qualified Data.Text as T
1717import Prologue
1818import System.FilePath.Posix
@@ -98,25 +98,6 @@ parseLanguage l = case T.toLower l of
9898knownLanguage :: Language -> Bool
9999knownLanguage = (/= Unknown )
100100
101- -- | Returns a Language based on the file extension (including the ".").
102- languageForType :: String -> Language
103- languageForType mediaType = case mediaType of
104- " .java" -> Java
105- " .json" -> JSON
106- " .hs" -> Haskell
107- " .md" -> Markdown
108- " .rb" -> Ruby
109- " .go" -> Go
110- " .js" -> JavaScript
111- " .mjs" -> JavaScript
112- " .ts" -> TypeScript
113- " .tsx" -> TSX
114- " .jsx" -> JSX
115- " .py" -> Python
116- " .php" -> PHP
117- " .phpt" -> PHP
118- _ -> Unknown
119-
120101extensionsForLanguage :: Language -> [String ]
121102extensionsForLanguage language = case language of
122103 Go -> [" .go" ]
@@ -130,9 +111,22 @@ extensionsForLanguage language = case language of
130111 JSX -> [" .jsx" ]
131112 _ -> []
132113
133- -- | Return a language based on a FilePath's extension, or Nothing if extension is not found or not supported .
114+ -- | Return a language based on a FilePath's extension.
134115languageForFilePath :: FilePath -> Language
135- languageForFilePath = languageForType . takeExtension
116+ languageForFilePath path = case Lingo. languageName <$> Lingo. languageForPath path of
117+ Just " Go" -> Go
118+ Just " Haskell" -> Haskell
119+ Just " Java" -> Java
120+ Just " JavaScript" -> JavaScript
121+ Just " JSON" -> JSON
122+ Just " JSX" -> JSX
123+ Just " Markdown" -> Markdown
124+ Just " PHP" -> PHP
125+ Just " Python" -> Python
126+ Just " Ruby" -> Ruby
127+ Just " TSX" -> TSX
128+ Just " TypeScript" -> TypeScript
129+ _ -> Unknown
136130
137131supportedExts :: [String ]
138132supportedExts = [" .go" , " .py" , " .rb" , " .js" , " .mjs" , " .ts" , " .php" , " .phpt" ]
0 commit comments