aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Readers/Docx/Util.hs
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2015-03-16 12:02:40 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2015-03-16 12:02:40 -0700
commit619b2e8ca207b39829b74683cfc514ffbf4ddbbb (patch)
treec8f9c2d44621ccab0398ecb064e7e23cb0f4339a /src/Text/Pandoc/Readers/Docx/Util.hs
parent6fc578b79a43f1f2f522d1ba52b9133ce95b52dc (diff)
parent59c4d28d8c70e3d23428897d78a3c401e30612e5 (diff)
downloadpandoc-619b2e8ca207b39829b74683cfc514ffbf4ddbbb.tar.gz
Merge pull request #1968 from lierdakil/issue1607
Fixes for multiple docx writer style bugs.
Diffstat (limited to 'src/Text/Pandoc/Readers/Docx/Util.hs')
-rw-r--r--src/Text/Pandoc/Readers/Docx/Util.hs26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/Text/Pandoc/Readers/Docx/Util.hs b/src/Text/Pandoc/Readers/Docx/Util.hs
new file mode 100644
index 000000000..891f107b0
--- /dev/null
+++ b/src/Text/Pandoc/Readers/Docx/Util.hs
@@ -0,0 +1,26 @@
+module Text.Pandoc.Readers.Docx.Util (
+ NameSpaces
+ , elemName
+ , isElem
+ , elemToNameSpaces
+ ) where
+
+import Text.XML.Light
+import Data.Maybe (mapMaybe)
+
+type NameSpaces = [(String, String)]
+
+elemToNameSpaces :: Element -> NameSpaces
+elemToNameSpaces = mapMaybe attrToNSPair . elAttribs
+
+attrToNSPair :: Attr -> Maybe (String, String)
+attrToNSPair (Attr (QName s _ (Just "xmlns")) val) = Just (s, val)
+attrToNSPair _ = Nothing
+
+elemName :: NameSpaces -> String -> String -> QName
+elemName ns prefix name = QName name (lookup prefix ns) (Just prefix)
+
+isElem :: NameSpaces -> String -> String -> Element -> Bool
+isElem ns prefix name element =
+ qName (elName element) == name &&
+ qURI (elName element) == lookup prefix ns