git.iko.soy/typeable/pandoc
on master help sign in
Added eastAsianLineBreakFilter to Shared.
774075cJohn MacFarlane
src/Text/Pandoc/Readers/Markdown.hs+1−11
@@ -55,11 +55,9 @@ import qualified Text.Pandoc.Builder as B
55import Text.Pandoc.Class (PandocMonad, report)
55import Text.Pandoc.Class (PandocMonad, report)
56import Text.Pandoc.Definition
56import Text.Pandoc.Definition
57import Text.Pandoc.Emoji (emojis)
57import Text.Pandoc.Emoji (emojis)
58−import Text.Pandoc.Generic (bottomUp)
59import Text.Pandoc.Logging
58import Text.Pandoc.Logging
60import Text.Pandoc.Options
59import Text.Pandoc.Options
61import Text.Pandoc.Parsing hiding (tableWith)
60import Text.Pandoc.Parsing hiding (tableWith)
62−import Text.Pandoc.Pretty (charWidth)
63import Text.Pandoc.Readers.HTML (htmlInBalanced, htmlTag, isBlockTag,
61import Text.Pandoc.Readers.HTML (htmlInBalanced, htmlTag, isBlockTag,
64 isCommentTag, isInlineTag, isTextTag)
62 isCommentTag, isInlineTag, isTextTag)
65import Text.Pandoc.Readers.LaTeX (rawLaTeXBlock, rawLaTeXInline)
63import Text.Pandoc.Readers.LaTeX (rawLaTeXBlock, rawLaTeXInline)
@@ -375,15 +373,7 @@ parseMarkdown = do
375 return $ Pandoc meta bs) st
373 return $ Pandoc meta bs) st
376 reportLogMessages
374 reportLogMessages
377 (do guardEnabled Ext_east_asian_line_breaks
375 (do guardEnabled Ext_east_asian_line_breaks
378− return $ bottomUp softBreakFilter doc) <|> return doc
376+ return $ eastAsianLineBreakFilter doc) <|> return doc
379−
380−softBreakFilter :: [Inline] -> [Inline]
381−softBreakFilter (x:SoftBreak:y:zs) =
382− case (stringify x, stringify y) of
383− (xs@(_:_), (c:_))
384− | charWidth (last xs) == 2 && charWidth c == 2 -> x:y:zs
385− _ -> x:SoftBreak:y:zs
386−softBreakFilter xs = xs
387
377
388referenceKey :: PandocMonad m => MarkdownParser m (F Blocks)
378referenceKey :: PandocMonad m => MarkdownParser m (F Blocks)
389referenceKey = try $ do
379referenceKey = try $ do
src/Text/Pandoc/Shared.hs+12
@@ -70,6 +70,7 @@ module Text.Pandoc.Shared (
70 isTightList,
70 isTightList,
71 addMetaField,
71 addMetaField,
72 makeMeta,
72 makeMeta,
73+ eastAsianLineBreakFilter,
73 -- * TagSoup HTML handling
74 -- * TagSoup HTML handling
74 renderTags',
75 renderTags',
75 -- * File handling
76 -- * File handling
@@ -120,6 +121,7 @@ import qualified Control.Monad.State as S
120import qualified Control.Exception as E
121import qualified Control.Exception as E
121import Control.Monad (msum, unless, MonadPlus(..))
122import Control.Monad (msum, unless, MonadPlus(..))
122import Text.Pandoc.Pretty (charWidth)
123import Text.Pandoc.Pretty (charWidth)
124+import Text.Pandoc.Generic (bottomUp)
123import Text.Pandoc.Compat.Time
125import Text.Pandoc.Compat.Time
124import Data.Time.Clock.POSIX
126import Data.Time.Clock.POSIX
125import System.IO.Error
127import System.IO.Error
@@ -578,6 +580,16 @@ makeMeta title authors date =
578 $ addMetaField "date" (B.fromList date)
580 $ addMetaField "date" (B.fromList date)
579 $ nullMeta
581 $ nullMeta
580
582
583+-- | Remove soft breaks between East Asian characters.
584+eastAsianLineBreakFilter :: Pandoc -> Pandoc
585+eastAsianLineBreakFilter = bottomUp go
586+ where go (x:SoftBreak:y:zs) =
587+ case (stringify x, stringify y) of
588+ (xs@(_:_), (c:_))
589+ | charWidth (last xs) == 2 && charWidth c == 2 -> x:y:zs
590+ _ -> x:SoftBreak:y:zs
591+ go xs = xs
592+
581--
593--
582-- TagSoup HTML handling
594-- TagSoup HTML handling
583--
595--