on master help sign in
Pick first compiler on overlap
commitc463eb6a16b77558f2992f4b25eaf506a4737bf3 authorJasper Van der Jeugt <jaspervdj@gmail.com> dateWed 13 Apr 2011, 17:42 (16 years ago) parent4ae03a7
1 file changed+10−1
src/Hakyll/Core/Rules/Internal.hs+10−1
src/Hakyll/Core/Rules/Internal.hs+10−1
@@ -17,6 +17,7 @@ import Control.Monad.Reader (ReaderT, runReaderT)
1717import Control.Monad.State (State, evalState)
1818import Data.Monoid (Monoid, mempty, mappend)
1919import Data.Set (Set)
20+import qualified Data.Map as M
2021
2122import Hakyll.Core.Resource
2223import Hakyll.Core.Resource.Provider
@@ -80,7 +81,7 @@ type Rules = RulesM ()
8081-- | Run a Rules monad, resulting in a 'RuleSet'
8182--
8283runRules :: Rules -> ResourceProvider -> RuleSet
83−runRules rules provider =
84+runRules rules provider = nubCompilers $
8485 evalState (execWriterT $ runReaderT (unRulesM rules) env) state
8586 where
8687 state = RuleState {rulesMetaCompilerIndex = 0}
@@ -88,3 +89,11 @@ runRules rules provider =
8889 , rulesPattern = mempty
8990 , rulesGroup = Nothing
9091 }
92+
93+-- | Remove duplicate compilers from the 'RuleSet'. When two compilers match an
94+-- item, we prefer the first one
95+--
96+nubCompilers :: RuleSet -> RuleSet
97+nubCompilers set = set { rulesCompilers = nubCompilers' (rulesCompilers set) }
98+ where
99+ nubCompilers' = M.toList . M.fromListWith (flip const)