packages feed

setdown-0.1.0.0: DefinitionHelpers.hs

module DefinitionHelpers 
   ( extractIdsFromDefinitions 
   , extractFilenamesFromDefinitions
   , extractDefinedIds
   ) where

import SetData
import qualified Data.Set as S

extractIdsFromExpression :: Expression -> S.Set Identifier
extractIdsFromExpression (BinaryExpression _ a b) = extractIdsFromExpression a `S.union` extractIdsFromExpression b
extractIdsFromExpression (FileExpression _) = S.empty
extractIdsFromExpression (IdentifierExpression i) = S.singleton i

extractIdsFromDefinitions :: Definitions -> S.Set Identifier
extractIdsFromDefinitions = foldr S.union S.empty . fmap (extractIdsFromExpression . definitionExpression)

extractFilenamesFromExpression :: Expression -> S.Set FilePath
extractFilenamesFromExpression (BinaryExpression _ a b) = extractFilenamesFromExpression a `S.union` extractFilenamesFromExpression b
extractFilenamesFromExpression (FileExpression fn) = S.singleton fn
extractFilenamesFromExpression (IdentifierExpression _) = S.empty

extractFilenamesFromDefinitions :: Definitions -> S.Set FilePath
extractFilenamesFromDefinitions = foldr S.union S.empty . fmap (extractFilenamesFromExpression . definitionExpression)

extractDefinedIds :: Definitions -> S.Set Identifier
extractDefinedIds = S.fromList . fmap definitionId