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