From bca74a2bd0187c0dab522e768d7d18f8f53abfa9 Mon Sep 17 00:00:00 2001
From: Jesse Rosenthal <jrosenthal@jhu.edu>
Date: Mon, 11 Aug 2014 21:42:02 -0400
Subject: [PATCH 1/4] Add dropCap to paragraph style.

---
 src/Text/Pandoc/Readers/Docx/Parse.hs | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/Text/Pandoc/Readers/Docx/Parse.hs b/src/Text/Pandoc/Readers/Docx/Parse.hs
index 1abd4bc6b..175bf2784 100644
--- a/src/Text/Pandoc/Readers/Docx/Parse.hs
+++ b/src/Text/Pandoc/Readers/Docx/Parse.hs
@@ -146,12 +146,14 @@ data ParIndentation = ParIndentation { leftParIndent :: Maybe Integer
 
 data ParagraphStyle = ParagraphStyle { pStyle :: [String]
                                      , indentation :: Maybe ParIndentation
+                                     , dropCap     :: Bool
                                      }
                       deriving Show
 
 defaultParagraphStyle :: ParagraphStyle
 defaultParagraphStyle = ParagraphStyle { pStyle = []
                                        , indentation = Nothing
+                                       , dropCap     = False
                                        }
 
 
@@ -637,8 +639,16 @@ elemToParagraphStyle ns element
           (findAttr (elemName ns "w" "val"))
           (findChildren (elemName ns "w" "pStyle") pPr)
       , indentation =
-            findChild (elemName ns "w" "ind") pPr >>=
-            elemToParIndentation ns
+          findChild (elemName ns "w" "ind") pPr >>=
+          elemToParIndentation ns
+      , dropCap =
+          case
+            findChild (elemName ns "w" "framePr") pPr >>=
+            findAttr (elemName ns "w" "dropCap")
+          of
+            Just "none" -> False
+            Just _      -> True
+            Nothing     -> False
       }
 elemToParagraphStyle _ _ =  defaultParagraphStyle
 

From 3e32cd5bb1ed4f5a5f408a7f676b323318bdb945 Mon Sep 17 00:00:00 2001
From: Jesse Rosenthal <jrosenthal@jhu.edu>
Date: Mon, 11 Aug 2014 22:00:03 -0400
Subject: [PATCH 2/4] Docx reader: Use dropcap state.

If we get to a dropcap, we keep hold the inlines until the next
paragraph, and combine it there.
---
 src/Text/Pandoc/Readers/Docx.hs | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs
index 085ee01fc..d6d5f317c 100644
--- a/src/Text/Pandoc/Readers/Docx.hs
+++ b/src/Text/Pandoc/Readers/Docx.hs
@@ -105,11 +105,15 @@ readDocx opts bytes =
     Left _   -> error $ "couldn't parse docx file"
 
 data DState = DState { docxAnchorMap :: M.Map String String
-                     , docxMediaBag      :: MediaBag }
+                     , docxMediaBag      :: MediaBag
+                     , docxDropCap       :: [Inline]
+                     }
 
 instance Default DState where
   def = DState { docxAnchorMap = M.empty
-               , docxMediaBag  = mempty }
+               , docxMediaBag  = mempty
+               , docxDropCap   = []
+               }
 
 data DEnv = DEnv { docxOptions  :: ReaderOptions
                  , docxInHeaderBlock :: Bool }
@@ -457,13 +461,17 @@ bodyPartToBlocks (Paragraph pPr parparts)
     return [hdr]
 bodyPartToBlocks (Paragraph pPr parparts) = do
   ils <- parPartsToInlines parparts >>= (return . normalizeSpaces)
-  case ils of
-    [] -> return []
-    _ -> do
-      return $
-       rebuild
-       (parStyleToContainers pPr)
-       [Para ils]
+  dropIls <- gets docxDropCap
+  let ils' = dropIls ++ ils
+  if dropCap pPr
+    then do modify $ \s -> s { docxDropCap = ils' }
+            return []
+    else do modify $ \s -> s { docxDropCap = [] }
+            return $ case ils' of
+              [] -> []
+              _ -> rebuild
+                   (parStyleToContainers pPr)
+                   [Para $ ils']
 bodyPartToBlocks (ListItem pPr numId lvl levelInfo parparts) = do
   let
     kvs = case levelInfo of

From 0808449547a2ec3469dbcc82c1755d895c1057e5 Mon Sep 17 00:00:00 2001
From: Jesse Rosenthal <jrosenthal@jhu.edu>
Date: Mon, 11 Aug 2014 23:10:50 -0400
Subject: [PATCH 3/4] Docx: Add dropcap tests.

---
 pandoc.cabal                |   1 +
 tests/Tests/Readers/Docx.hs |  10 ++++++----
 tests/docx.drop_cap.docx    | Bin 0 -> 26931 bytes
 tests/docx.drop_cap.native  |   4 ++++
 4 files changed, 11 insertions(+), 4 deletions(-)
 create mode 100644 tests/docx.drop_cap.docx
 create mode 100644 tests/docx.drop_cap.native

diff --git a/pandoc.cabal b/pandoc.cabal
index 4b2da0f9e..587258dc2 100644
--- a/pandoc.cabal
+++ b/pandoc.cabal
@@ -177,6 +177,7 @@ Extra-Source-Files:
                  tests/docx.codeblock.docx,
                  tests/docx.deep_normalize.docx,
                  tests/docx.definition_list.docx,
+                 tests/docx.drop_cap.docx,
                  tests/docx.hanging_indent.docx,
                  tests/docx.headers.docx,
                  tests/docx.image.docx,
diff --git a/tests/Tests/Readers/Docx.hs b/tests/Tests/Readers/Docx.hs
index c310cc8d7..65fdd4a55 100644
--- a/tests/Tests/Readers/Docx.hs
+++ b/tests/Tests/Readers/Docx.hs
@@ -82,14 +82,14 @@ compareMediaBagIO docxFile = do
     df <- B.readFile docxFile
     let (_, mb) = readDocx def df
     bools <- mapM
-             (\(fp, _, _) -> compareMediaPathIO fp mb docxFile) 
+             (\(fp, _, _) -> compareMediaPathIO fp mb docxFile)
              (mediaDirectory mb)
     return $ and bools
 
 testMediaBagIO :: String -> FilePath -> IO Test
 testMediaBagIO name docxFile = do
   outcome <- compareMediaBagIO docxFile
-  return $ testCase name (assertBool 
+  return $ testCase name (assertBool
                           ("Media didn't match media bag in file " ++ docxFile)
                           outcome)
 
@@ -176,7 +176,10 @@ tests = [ testGroup "inlines"
             "code block"
             "docx.codeblock.docx"
             "docx.codeblock.native"
-
+          , testCompare
+            "dropcap paragraphs"
+            "docx.drop_cap.docx"
+            "docx.drop_cap.native"
           ]
         , testGroup "track changes"
           [ testCompare
@@ -229,4 +232,3 @@ tests = [ testGroup "inlines"
           ]
 
         ]
-
diff --git a/tests/docx.drop_cap.docx b/tests/docx.drop_cap.docx
new file mode 100644
index 0000000000000000000000000000000000000000..19fab4a524eff85b032e5f19f2baf700eed5511f
GIT binary patch
literal 26931
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
ZB)3D0^8jyFHjo-#AoK$!_w(RmGy#Xft2_Vz

literal 0
HcmV?d00001

diff --git a/tests/docx.drop_cap.native b/tests/docx.drop_cap.native
new file mode 100644
index 000000000..e6eb29de7
--- /dev/null
+++ b/tests/docx.drop_cap.native
@@ -0,0 +1,4 @@
+[Para [Str "D",Str "rop",Space,Str "cap."]
+,Para [Str "Next",Space,Str "paragraph."]
+,Para [Str "D",Str "rop",Space,Str "cap",Space,Str "in",Space,Str "margin."]
+,Para [Str "Drop",Space,Str "cap",Space,Str "(not",Space,Str "really)."]]

From 45ec035e93ec0c32f9fb7d7f2f99ca17de73ebf9 Mon Sep 17 00:00:00 2001
From: Jesse Rosenthal <jrosenthal@jhu.edu>
Date: Mon, 11 Aug 2014 23:30:12 -0400
Subject: [PATCH 4/4] Docx reader: combine inlines properly in dropcaps.

Make sure that adjacent inlines are combined properly in dropcaps. This
updates the test results as well.
---
 src/Text/Pandoc/Readers/Docx.hs | 2 +-
 tests/docx.drop_cap.native      | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/Text/Pandoc/Readers/Docx.hs b/src/Text/Pandoc/Readers/Docx.hs
index d6d5f317c..c856ca30a 100644
--- a/src/Text/Pandoc/Readers/Docx.hs
+++ b/src/Text/Pandoc/Readers/Docx.hs
@@ -462,7 +462,7 @@ bodyPartToBlocks (Paragraph pPr parparts)
 bodyPartToBlocks (Paragraph pPr parparts) = do
   ils <- parPartsToInlines parparts >>= (return . normalizeSpaces)
   dropIls <- gets docxDropCap
-  let ils' = dropIls ++ ils
+  let ils' = reduceList $ dropIls ++ ils
   if dropCap pPr
     then do modify $ \s -> s { docxDropCap = ils' }
             return []
diff --git a/tests/docx.drop_cap.native b/tests/docx.drop_cap.native
index e6eb29de7..d361cfb0b 100644
--- a/tests/docx.drop_cap.native
+++ b/tests/docx.drop_cap.native
@@ -1,4 +1,4 @@
-[Para [Str "D",Str "rop",Space,Str "cap."]
+[Para [Str "Drop",Space,Str "cap."]
 ,Para [Str "Next",Space,Str "paragraph."]
-,Para [Str "D",Str "rop",Space,Str "cap",Space,Str "in",Space,Str "margin."]
+,Para [Str "Drop",Space,Str "cap",Space,Str "in",Space,Str "margin."]
 ,Para [Str "Drop",Space,Str "cap",Space,Str "(not",Space,Str "really)."]]