diff --git a/make-pages/Info.hs b/make-pages/Info.hs index 99ead1f..a587899 100644 --- a/make-pages/Info.hs +++ b/make-pages/Info.hs @@ -16,7 +16,7 @@ import Records import Control.Applicative import Control.Exception -import Data.Foldable (find) +import Data.Foldable (find, foldl') import Data.Hashable (Hashable) import Data.HashSet (HashSet) import qualified Data.HashSet as HashSet @@ -149,7 +149,15 @@ instance Semigroup Desc where (TextDesc t1) <> (TextDesc t2) = TextDesc $ t1 <> t2 (LongDesc m1) <> (TextDesc t2) = LongDesc $ m1 <> [DescField defDescKey t2] (TextDesc t1) <> (LongDesc m2) = LongDesc $ [DescField defDescKey t1] <> m2 - (LongDesc m1) <> (LongDesc m2) = LongDesc $ m1 <> m2 + (LongDesc m1) <> (LongDesc m2) = LongDesc $ mergeDesc m1 m2 + +mergeDesc :: [DescField] -> [DescField] -> [DescField] +mergeDesc = foldl' $ flip add where + add d2 = map \d1 -> + if #name d1 == #name d2 then + d1 {text = #text d1 <> #text d2} + else + d1 instance Monoid Desc where mempty = NoDesc diff --git a/make-pages/make-pages.cabal b/make-pages/make-pages.cabal index 3e9121f..9ff3431 100644 --- a/make-pages/make-pages.cabal +++ b/make-pages/make-pages.cabal @@ -35,6 +35,7 @@ executable make-pages DerivingStrategies, DerivingVia, DuplicateRecordFields, + FlexibleContexts, FlexibleInstances, GeneralizedNewtypeDeriving, LambdaCase,