@@ -820,16 +820,24 @@ getContentShape ns spTreeElem
820820 filterChild (\e -> (isElem ns "p" "sp" e) && (shapeHasName ns "Content Placeholder 2" e)) spTreeElem
821821 | otherwise = Nothing
822822
823−contentIsElem :: NameSpaces -> String -> String -> Content -> Bool
824−contentIsElem ns prefix name (Elem element) = isElem ns prefix name element
825−contentIsElem _ _ _ _ = False
826−
827−replaceNamedChildren :: NameSpaces -> String -> String -> [Element] -> Element -> Element
823+replaceChildren :: (Element -> [Element]) -> Element -> Element
824+replaceChildren fun element =
825+ element{elContent = concatMap fun' $ elContent element}
826+ where fun' :: Content -> [Content]
827+ fun' (Elem e) = map Elem $ fun e
828+ fun' content = [content]
829+
830+replaceNamedChildren :: NameSpaces
831+ -> String
832+ -> String
833+ -> [Element]
834+ -> Element
835+ -> Element
828836replaceNamedChildren ns prefix name newKids element =
829− let content = elContent element
830− content' = filter (\c -> not (contentIsElem ns prefix name c)) content
831− in
832− element{elContent = content' ++ map Elem newKids}
837+ let fun :: Element -> [Element]
838+ fun e | isElem ns prefix name e = newKids
839+ | otherwise = [e]
840+ in replaceChildren fun element
833841
834842----------------------------------------------------------------
835843