-- | This module contains a dhall lexer.
module Language.Dhall.Lexer ( -- * User functions
                              lexDhall
                            , getDependencies
                            -- * Types
                            , Token
                            , AlexPosn (..)
                            , TokenType (..)
                            , Keyword (..)
                            , Operator (..)
                            , Ann (..)
                            -- * Internal
                            , alexMonadScan
                            , runAlex
                            , Alex (..)
                            , AlexState (..)
                            ) where

import qualified Data.ByteString.Lazy       as BSL
import qualified Data.ByteString.Lazy.Char8 as ASCII
import           Language.Dhall.Lexer.Mod
import           Language.Dhall.Lexer.Types

getDependencies :: BSL.ByteString -> Either String [FilePath]
getDependencies = fmap (g =<<) . lexDhall
    where g (Ann _ (EmbedFile s)) | BSL.head s /= 104 = [ASCII.unpack s]
          g _                     = mempty