git.iko.soy/typeable/pandoc
on master help sign in
Escape starting periods in ms writer code blocks
09ea10eMichael Hoffmann
pandoc.cabal+1
@@ -816,6 +816,7 @@ test-suite test-pandoc
816 Tests.Writers.FB2
816 Tests.Writers.FB2
817 Tests.Writers.Powerpoint
817 Tests.Writers.Powerpoint
818 Tests.Writers.OOXML
818 Tests.Writers.OOXML
819+ Tests.Writers.Ms
819 if os(windows)
820 if os(windows)
820 cpp-options: -D_WINDOWS
821 cpp-options: -D_WINDOWS
821 default-language: Haskell2010
822 default-language: Haskell2010
src/Text/Pandoc/Writers/Ms.hs+3−1
@@ -204,7 +204,9 @@ blockToMs opts (CodeBlock attr str) = do
204 literal ".IP" $$
204 literal ".IP" $$
205 literal ".nf" $$
205 literal ".nf" $$
206 literal "\\f[C]" $$
206 literal "\\f[C]" $$
207+ ((case T.uncons str of
208+ Just ('.',_) -> literal "\\&"
207− hlCode $$
209+ _ -> mempty) <> hlCode) $$
208 literal "\\f[]" $$
210 literal "\\f[]" $$
209 literal ".fi"
211 literal ".fi"
210blockToMs opts (LineBlock ls) = do
212blockToMs opts (LineBlock ls) = do
test/Tests/Writers/Ms.hsnew file+37
@@ -0,0 +1,37 @@
1+{-# LANGUAGE NoImplicitPrelude #-}
2+{-# LANGUAGE OverloadedStrings #-}
3+module Tests.Writers.Ms (tests) where
4+
5+import Prelude
6+import Test.Tasty
7+import Tests.Helpers
8+import Text.Pandoc
9+import Text.Pandoc.Builder
10+
11+infix 4 =:
12+(=:) :: (ToString a, ToPandoc a)
13+ => String -> (a, String) -> TestTree
14+(=:) = test (purely (writeMs def . toPandoc))
15+
16+tests :: [TestTree]
17+tests = [ testGroup "code blocks"
18+ [ "basic"
19+ =: codeBlock "hello"
20+ =?> unlines
21+ [ ".IP"
22+ , ".nf"
23+ , "\\f[C]"
24+ , "hello"
25+ , "\\f[]"
26+ , ".fi"]
27+ , "escape starting ."
28+ =: codeBlock ". hello"
29+ =?> unlines
30+ [ ".IP"
31+ , ".nf"
32+ , "\\f[C]"
33+ , "\\&. hello"
34+ , "\\f[]"
35+ , ".fi"]
36+ ]
37+ ]
test/test-pandoc.hs+2
@@ -37,6 +37,7 @@ import qualified Tests.Writers.JATS
37import qualified Tests.Writers.Jira
37import qualified Tests.Writers.Jira
38import qualified Tests.Writers.LaTeX
38import qualified Tests.Writers.LaTeX
39import qualified Tests.Writers.Markdown
39import qualified Tests.Writers.Markdown
40+import qualified Tests.Writers.Ms
40import qualified Tests.Writers.Muse
41import qualified Tests.Writers.Muse
41import qualified Tests.Writers.Native
42import qualified Tests.Writers.Native
42import qualified Tests.Writers.Org
43import qualified Tests.Writers.Org
@@ -70,6 +71,7 @@ tests pandocPath = testGroup "pandoc tests"
70 , testGroup "Muse" Tests.Writers.Muse.tests
71 , testGroup "Muse" Tests.Writers.Muse.tests
71 , testGroup "FB2" Tests.Writers.FB2.tests
72 , testGroup "FB2" Tests.Writers.FB2.tests
72 , testGroup "PowerPoint" Tests.Writers.Powerpoint.tests
73 , testGroup "PowerPoint" Tests.Writers.Powerpoint.tests
74+ , testGroup "Ms" Tests.Writers.Ms.tests
73 ]
75 ]
74 , testGroup "Readers"
76 , testGroup "Readers"
75 [ testGroup "LaTeX" Tests.Readers.LaTeX.tests
77 [ testGroup "LaTeX" Tests.Readers.LaTeX.tests