{-# LANGUAGE DeriveDataTypeable #-}
module Ormolu.Parser.Shebang
( Shebang (..),
extractShebangs,
isShebang,
)
where
import Data.Data (Data)
import qualified Data.List as L
import SrcLoc
newtype Shebang = Shebang (Located String)
deriving (Eq, Data)
extractShebangs :: [Located String] -> ([Shebang], [Located String])
extractShebangs comments = (Shebang <$> shebangs, rest)
where
(shebangs, rest) = span (isShebang . unLoc) comments
isShebang :: String -> Bool
isShebang str = "#!" `L.isPrefixOf` str