diff options
author | Jesse Rosenthal <jrosenthal@jhu.edu> | 2018-01-03 16:55:33 -0500 |
---|---|---|
committer | Jesse Rosenthal <jrosenthal@jhu.edu> | 2018-01-03 16:55:33 -0500 |
commit | 02d85469abcb06f10b22ef461e2152c84f12394b (patch) | |
tree | 7b0bd54763e9133b0dc66ffe33e7b38ce41b5653 | |
parent | 6aae43998082280a356e2dda3df77c021abed58f (diff) | |
download | pandoc-02d85469abcb06f10b22ef461e2152c84f12394b.tar.gz |
Powerpoint writer: Fix new replaceNamedChildren
Previous version replaced *each* element from the template with the
new elements -- leading to multiple overlapping frames. This only
replaces the first instance, and throws out the rest.
-rw-r--r-- | src/Text/Pandoc/Writers/Powerpoint.hs | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/src/Text/Pandoc/Writers/Powerpoint.hs b/src/Text/Pandoc/Writers/Powerpoint.hs index 32b7e2ec6..13542e78f 100644 --- a/src/Text/Pandoc/Writers/Powerpoint.hs +++ b/src/Text/Pandoc/Writers/Powerpoint.hs @@ -820,13 +820,6 @@ getContentShape ns spTreeElem filterChild (\e -> (isElem ns "p" "sp" e) && (shapeHasName ns "Content Placeholder 2" e)) spTreeElem | otherwise = Nothing -replaceChildren :: (Element -> [Element]) -> Element -> Element -replaceChildren fun element = - element{elContent = concatMap fun' $ elContent element} - where fun' :: Content -> [Content] - fun' (Elem e) = map Elem $ fun e - fun' content = [content] - replaceNamedChildren :: NameSpaces -> String -> String @@ -834,10 +827,15 @@ replaceNamedChildren :: NameSpaces -> Element -> Element replaceNamedChildren ns prefix name newKids element = - let fun :: Element -> [Element] - fun e | isElem ns prefix name e = newKids - | otherwise = [e] - in replaceChildren fun element + element { elContent = concat $ fun True $ elContent element } + where + fun :: Bool -> [Content] -> [[Content]] + fun _ [] = [] + fun switch ((Elem e) : conts) | isElem ns prefix name e = + if switch + then (map Elem $ newKids) : fun False conts + else fun False conts + fun switch (cont : conts) = [cont] : fun switch conts ---------------------------------------------------------------- |