mirror of
https://github.com/jgm/pandoc.git
synced 2026-09-24 15:44:59 +08:00
T.P.Writers.Shared: export setupTranslations [API change].
Use this in HTML and OpenDocument writers.
This commit is contained in:
@@ -259,7 +259,7 @@ writeHtml' st opts d =
|
||||
Just _ -> preEscapedText <$> writeHtmlString' st opts d
|
||||
Nothing
|
||||
| writerPreferAscii opts
|
||||
-> preEscapedText <$> writeHtmlString' st opts d
|
||||
-> preEscapedText <$> writeHtmlString' st opts d
|
||||
| otherwise -> do
|
||||
(body, _) <- evalStateT (pandocToHtml opts d) st
|
||||
return body
|
||||
@@ -270,6 +270,7 @@ pandocToHtml :: PandocMonad m
|
||||
-> Pandoc
|
||||
-> StateT WriterState m (Html, Context Text)
|
||||
pandocToHtml opts (Pandoc meta blocks) = do
|
||||
lift $ setupTranslations meta
|
||||
let slideLevel = fromMaybe (getSlideLevel blocks) $ writerSlideLevel opts
|
||||
modify $ \st -> st{ stSlideLevel = slideLevel }
|
||||
metadata <- metaToContext opts
|
||||
|
||||
@@ -21,14 +21,14 @@ import Data.Char (chr)
|
||||
import Data.Foldable (find)
|
||||
import Data.List (sortOn, sortBy, foldl')
|
||||
import qualified Data.Map as Map
|
||||
import Data.Maybe (fromMaybe, isNothing)
|
||||
import Data.Maybe (isNothing)
|
||||
import Data.Ord (comparing)
|
||||
import qualified Data.Set as Set
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import Text.Collate.Lang (Lang (..), parseLang)
|
||||
import Text.Pandoc.Class.PandocMonad (PandocMonad, report, toLang)
|
||||
import Text.Pandoc.Translations (translateTerm, setTranslations)
|
||||
import Text.Pandoc.Class.PandocMonad (PandocMonad, report)
|
||||
import Text.Pandoc.Translations (translateTerm)
|
||||
import Text.Pandoc.Definition
|
||||
import qualified Text.Pandoc.Builder as B
|
||||
import Text.Pandoc.Logging
|
||||
@@ -237,11 +237,7 @@ handleSpaces s = case T.uncons s of
|
||||
-- | Convert Pandoc document to string in OpenDocument format.
|
||||
writeOpenDocument :: PandocMonad m => WriterOptions -> Pandoc -> m Text
|
||||
writeOpenDocument opts (Pandoc meta blocks) = do
|
||||
let defLang = Lang "en" (Just "US") Nothing [] [] []
|
||||
lang <- case lookupMetaString "lang" meta of
|
||||
"" -> pure defLang
|
||||
s -> fromMaybe defLang <$> toLang (Just s)
|
||||
setTranslations lang
|
||||
setupTranslations meta
|
||||
let colwidth = if writerWrapText opts == WrapAuto
|
||||
then Just $ writerColumns opts
|
||||
else Nothing
|
||||
|
||||
@@ -43,6 +43,7 @@ module Text.Pandoc.Writers.Shared (
|
||||
, toLegacyTable
|
||||
, splitSentences
|
||||
, ensureValidXmlIdentifiers
|
||||
, setupTranslations
|
||||
)
|
||||
where
|
||||
import Safe (lastMay)
|
||||
@@ -68,6 +69,10 @@ import Text.Pandoc.XML (escapeStringForXML)
|
||||
import Text.DocTemplates (Context(..), Val(..), TemplateTarget,
|
||||
ToContext(..), FromContext(..))
|
||||
import Text.Pandoc.Chunks (tocToList, toTOCTree)
|
||||
import Text.Collate.Lang (Lang (..))
|
||||
import Text.Pandoc.Class (PandocMonad, toLang)
|
||||
import Text.Pandoc.Translations (setTranslations)
|
||||
import Data.Maybe (fromMaybe)
|
||||
|
||||
-- | Create template Context from a 'Meta' and an association list
|
||||
-- of variables, specified at the command line or in the writer.
|
||||
@@ -608,3 +613,12 @@ walkAttr f = walk goInline . walk goBlock
|
||||
Table (f attr) cap colspecs thead tbodies tfoot
|
||||
goBlock (Div attr bs) = Div (f attr) bs
|
||||
goBlock x = x
|
||||
|
||||
-- | Set translations based on the `lang` in metadata.
|
||||
setupTranslations :: PandocMonad m => Meta -> m ()
|
||||
setupTranslations meta = do
|
||||
let defLang = Lang "en" (Just "US") Nothing [] [] []
|
||||
lang <- case lookupMetaString "lang" meta of
|
||||
"" -> pure defLang
|
||||
s -> fromMaybe defLang <$> toLang (Just s)
|
||||
setTranslations lang
|
||||
|
||||
Reference in New Issue
Block a user