diff options
author | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2010-12-23 14:31:45 +0100 |
---|---|---|
committer | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2010-12-23 14:31:45 +0100 |
commit | ad6712121ffc3e41f6bd2a9833267252315b6f65 (patch) | |
tree | a34e2bb9bf726aec69e5362d1d443ff62460b04e /src/Hakyll/Core/DirectedGraph/ObsoleteFilter.hs | |
parent | 9b63052148a140b8ad5fc04b996023d8b8e3796d (diff) | |
download | hakyll-ad6712121ffc3e41f6bd2a9833267252315b6f65.tar.gz |
Add directed graph modules
Diffstat (limited to 'src/Hakyll/Core/DirectedGraph/ObsoleteFilter.hs')
-rw-r--r-- | src/Hakyll/Core/DirectedGraph/ObsoleteFilter.hs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/Hakyll/Core/DirectedGraph/ObsoleteFilter.hs b/src/Hakyll/Core/DirectedGraph/ObsoleteFilter.hs new file mode 100644 index 0000000..a3bc57a --- /dev/null +++ b/src/Hakyll/Core/DirectedGraph/ObsoleteFilter.hs @@ -0,0 +1,25 @@ +-- | Module exporting a function that works as a filter on a dependency graph. +-- Given a list of obsolete nodes, this filter will reduce the graph so it only +-- contains obsolete nodes and nodes that depend (directly or indirectly) on +-- obsolete nodes. +-- +module Hakyll.Core.DirectedGraph.ObsoleteFilter + ( obsoleteFilter + ) where + +import qualified Data.Set as S + +import Hakyll.Core.DirectedGraph +import qualified Hakyll.Core.DirectedGraph as DG + +-- | Given a list of obsolete items, filter the dependency graph so it only +-- contains these items +-- +obsoleteFilter :: Ord a + => [a] -- ^ List of obsolete items + -> DirectedGraph a -- ^ Dependency graph + -> DirectedGraph a -- ^ Resulting dependency graph +obsoleteFilter obsolete graph = + let reversed = DG.reverse graph + allObsolete = S.unions $ map (flip reachableNodes reversed) obsolete + in DG.filter (`S.member` allObsolete) graph |