From d2da10d36b857e399e10388ddc6f66850211ec77 Mon Sep 17 00:00:00 2001 From: defanor Date: Sat, 28 Oct 2017 03:16:26 +0300 Subject: Improve plaintext rendering Reuse lineToInlines previously used for Gopher, and adjust fitLines. --- Text/Pandoc/Readers/Gopher.hs | 8 +------- Text/Pandoc/Readers/Plain.hs | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 11 deletions(-) (limited to 'Text/Pandoc') diff --git a/Text/Pandoc/Readers/Gopher.hs b/Text/Pandoc/Readers/Gopher.hs index 33dec3e..694720d 100644 --- a/Text/Pandoc/Readers/Gopher.hs +++ b/Text/Pandoc/Readers/Gopher.hs @@ -16,14 +16,8 @@ import Text.Pandoc.Definition import Text.Pandoc.Error import Text.Parsec import Text.Parsec.String +import Text.Pandoc.Readers.Plain --- | Translates a text line into a list of 'Inline' elements suitable --- for further processing. -lineToInlines :: String -> [Inline] -lineToInlines [] = [] -lineToInlines (' ':rest) = Space : lineToInlines rest -lineToInlines s = let (cur, next) = break (== ' ') s - in Str cur : lineToInlines next -- | UNASCII ::= ASCII - [Tab CR-LF NUL]. unascii :: Parser Char diff --git a/Text/Pandoc/Readers/Plain.hs b/Text/Pandoc/Readers/Plain.hs index 600e5f8..cb8fb9b 100644 --- a/Text/Pandoc/Readers/Plain.hs +++ b/Text/Pandoc/Readers/Plain.hs @@ -6,15 +6,24 @@ Portability : portable -} {-# LANGUAGE OverloadedStrings #-} -module Text.Pandoc.Readers.Plain ( readPlain ) where +module Text.Pandoc.Readers.Plain ( readPlain + , lineToInlines + ) where import Text.Pandoc.Definition import Text.Pandoc.Error -import Data.List + + +-- | Translates a text line into a list of 'Inline' elements suitable +-- for further processing. +lineToInlines :: String -> [Inline] +lineToInlines [] = [] +lineToInlines (' ':rest) = Space : lineToInlines rest +lineToInlines s = let (cur, next) = break (== ' ') s + in Str cur : lineToInlines next -- | Reads plain text, always succeeding and producing a single -- 'Plain' block. readPlain :: String -> Either PandocError Pandoc readPlain = Right . Pandoc mempty . pure . Plain . - concatMap (\l -> (intersperse Space $ map Str $ words l) ++ [LineBreak]) . lines - -- or Right . Pandoc mempty . pure . RawBlock "plain" + concatMap (\l -> (lineToInlines l) ++ [LineBreak]) . lines -- cgit v1.2.3