packages feed

haste-0.1: src/Haste/LanguageDetection.hs

module Haste.LanguageDetection 
  ( fromFilePath
  , preferredProviders
  ) where

import qualified System.FilePath.Posix as FilePath

import Haste.Types
import Haste.PasteProviders.All (pasteProviders)

fromFilePath :: FilePath -> Maybe Language
fromFilePath file = lookup (takeExtension file) extensionMap

preferredProviders :: Language -> [SomePasteProvider]
preferredProviders l = filter (elem l . preferredLanguages) pasteProviders

-- Extension sans leading '.'
takeExtension fp = case FilePath.takeExtension fp of
                    '.' : ext -> ext
                    ext       -> ext

extensionMap =
  [ ("hs", Haskell)
  , ("c", C)
  , ("h", C)
  ]