@@ -4,6 +4,7 @@ module Tests.Readers.Muse (tests) where
5import Prelude
5import Prelude
6import Data.List (intersperse)
6import Data.List (intersperse)
7+import Data.Monoid (Any (..))
7import Data.Text (Text)
8import Data.Text (Text)
8import qualified Data.Text as T
9import qualified Data.Text as T
9import Test.Tasty
10import Test.Tasty
@@ -14,7 +15,7 @@ import Text.Pandoc
14import Text.Pandoc.Arbitrary ()
15import Text.Pandoc.Arbitrary ()
15import Text.Pandoc.Builder
16import Text.Pandoc.Builder
16import Text.Pandoc.Shared (underlineSpan)
17import Text.Pandoc.Shared (underlineSpan)
17−import Text.Pandoc.Walk (walk)
18+import Text.Pandoc.Walk
19amuse :: Text -> Pandoc
20amuse :: Text -> Pandoc
20amuse = purely $ readMuse def { readerExtensions = extensionsFromList [Ext_amuse]}
21amuse = purely $ readMuse def { readerExtensions = extensionsFromList [Ext_amuse]}
@@ -33,7 +34,20 @@ spcSep = mconcat . intersperse space
33-- Tables don't round-trip yet
34-- Tables don't round-trip yet
35makeRoundTrip :: Block -> Block
36makeRoundTrip :: Block -> Block
37+makeRoundTrip t@(Table _caption aligns widths headers rows) =
38+ if isSimple && numcols > 1
36−makeRoundTrip Table{} = Para [Str "table was here"]
40+ else Para [Str "table was here"]
41+ where numcols = maximum (length aligns : length widths : map length (headers:rows))
42+ hasSimpleCells = all isSimpleCell (concat (headers:rows))
43+ isLineBreak LineBreak = Any True
44+ isLineBreak _ = Any False
45+ hasLineBreak = getAny . query isLineBreak
46+ isSimple = hasSimpleCells && all (== 0) widths
47+ isSimpleCell [Plain ils] = not (hasLineBreak ils)
48+ isSimpleCell [Para ils ] = not (hasLineBreak ils)
49+ isSimpleCell [] = True
50+ isSimpleCell _ = False
37makeRoundTrip (OrderedList (start, LowerAlpha, _) items) = OrderedList (start, Decimal, Period) items
51makeRoundTrip (OrderedList (start, LowerAlpha, _) items) = OrderedList (start, Decimal, Period) items
38makeRoundTrip (OrderedList (start, UpperAlpha, _) items) = OrderedList (start, Decimal, Period) items
52makeRoundTrip (OrderedList (start, UpperAlpha, _) items) = OrderedList (start, Decimal, Period) items
39makeRoundTrip x = x
53makeRoundTrip x = x