From fde8635a181a6ed0cec2a1756fc3e35fee39d29d Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Wed, 19 Oct 2022 09:11:34 -0700 Subject: Split Text.Pandoc.Version from Text.Pandoc.Shared. This new module exports `pandocVersion` and `pandocVersionText`, which are no longer exported from Text.Pandoc.Shared. [API change] Also, we now set the `pandoc-version` variable centrally rather than in the writers. One effect is the man writer now emits a comment with the pandoc version (this was intended before, judging from the template, but it didn't happen because the vairable wasn't set). --- MANUAL.txt | 3 +++ pandoc-cli/lua/PandocCLI/Lua.hs | 2 +- pandoc-cli/src/pandoc.hs | 3 ++- pandoc-lua-engine/src/Text/Pandoc/Lua/Global.hs | 2 +- pandoc.cabal | 3 ++- src/Text/Pandoc.hs | 2 +- src/Text/Pandoc/App/OutputSettings.hs | 2 ++ src/Text/Pandoc/Filter/JSON.hs | 3 ++- src/Text/Pandoc/Shared.hs | 13 ------------ src/Text/Pandoc/Version.hs | 28 +++++++++++++++++++++++++ src/Text/Pandoc/Writers/Man.hs | 2 +- src/Text/Pandoc/Writers/Ms.hs | 1 - src/Text/Pandoc/Writers/ODT.hs | 3 ++- test/writer.man | 2 ++ test/writer.ms | 2 ++ 15 files changed, 49 insertions(+), 22 deletions(-) create mode 100644 src/Text/Pandoc/Version.hs diff --git a/MANUAL.txt b/MANUAL.txt index 04eaa282f..8feedc003 100644 --- a/MANUAL.txt +++ b/MANUAL.txt @@ -3158,6 +3158,9 @@ on the output format, and include the following: `curdir` : working directory from which pandoc is run. +`pandoc-version` +: pandoc version. + `toc` : non-null value if `--toc/--table-of-contents` was specified diff --git a/pandoc-cli/lua/PandocCLI/Lua.hs b/pandoc-cli/lua/PandocCLI/Lua.hs index 6507587c8..8c50e66b3 100644 --- a/pandoc-cli/lua/PandocCLI/Lua.hs +++ b/pandoc-cli/lua/PandocCLI/Lua.hs @@ -14,7 +14,7 @@ import HsLua.CLI (EnvBehavior (..), Settings (..), runStandalone) import Text.Pandoc.Class (runIOorExplode) import Text.Pandoc.Error (handleError) import Text.Pandoc.Lua (runLua, runLuaNoEnv, getEngine) -import Text.Pandoc.Shared (pandocVersionText) +import Text.Pandoc.Version (pandocVersionText) -- | Runs pandoc as a Lua interpreter that is (mostly) compatible with -- the default @lua@ program shipping with Lua. diff --git a/pandoc-cli/src/pandoc.hs b/pandoc-cli/src/pandoc.hs index 274b1c567..4415f7e69 100644 --- a/pandoc-cli/src/pandoc.hs +++ b/pandoc-cli/src/pandoc.hs @@ -24,7 +24,8 @@ import Data.Monoid (Any(..)) import Control.Monad (when) import PandocCLI.Lua import PandocCLI.Server -import Text.Pandoc.Shared (pandocVersion, defaultUserDataDir) +import Text.Pandoc.Version (pandocVersion) +import Text.Pandoc.Shared (defaultUserDataDir) import Text.Pandoc.Scripting (ScriptingEngine(..)) import Data.Version (showVersion) import qualified Data.Text as T diff --git a/pandoc-lua-engine/src/Text/Pandoc/Lua/Global.hs b/pandoc-lua-engine/src/Text/Pandoc/Lua/Global.hs index 5ec7ced64..304ad8695 100644 --- a/pandoc-lua-engine/src/Text/Pandoc/Lua/Global.hs +++ b/pandoc-lua-engine/src/Text/Pandoc/Lua/Global.hs @@ -25,7 +25,7 @@ import Text.Pandoc.Lua.Marshal.ReaderOptions (pushReaderOptionsReadonly) import Text.Pandoc.Lua.Marshal.WriterOptions (pushWriterOptions) import Text.Pandoc.Lua.PandocLua () import Text.Pandoc.Options (ReaderOptions, WriterOptions) -import Text.Pandoc.Shared (pandocVersion) +import Text.Pandoc.Version (pandocVersion) import qualified Data.Text as Text diff --git a/pandoc.cabal b/pandoc.cabal index dbe489f65..466cea2c2 100644 --- a/pandoc.cabal +++ b/pandoc.cabal @@ -636,7 +636,8 @@ library Text.Pandoc.ImageSize, Text.Pandoc.Class, Text.Pandoc.Class.IO, - Text.Pandoc.Citeproc + Text.Pandoc.Citeproc, + Text.Pandoc.Version other-modules: Text.Pandoc.App.CommandLineOptions, Text.Pandoc.App.FormatHeuristics, Text.Pandoc.App.Input, diff --git a/src/Text/Pandoc.hs b/src/Text/Pandoc.hs index 2f2b396af..fb8a49334 100644 --- a/src/Text/Pandoc.hs +++ b/src/Text/Pandoc.hs @@ -73,7 +73,7 @@ import Text.Pandoc.Generic import Text.Pandoc.Logging import Text.Pandoc.Options import Text.Pandoc.Readers -import Text.Pandoc.Shared (pandocVersion, pandocVersionText) +import Text.Pandoc.Version (pandocVersion, pandocVersionText) import Text.Pandoc.Templates import Text.Pandoc.Translations (setTranslations, translateTerm) import Text.Pandoc.Writers diff --git a/src/Text/Pandoc/App/OutputSettings.hs b/src/Text/Pandoc/App/OutputSettings.hs index d38618198..56020cd1f 100644 --- a/src/Text/Pandoc/App/OutputSettings.hs +++ b/src/Text/Pandoc/App/OutputSettings.hs @@ -181,6 +181,8 @@ optToOutputSettings scriptingEngine opts = do >>= setVariableM "outputfile" (T.pack outputFile) >>= + setVariableM "pandoc-version" pandocVersionText + >>= setFilesVariableM "include-before" (optIncludeBeforeBody opts) >>= setFilesVariableM "include-after" (optIncludeAfterBody opts) diff --git a/src/Text/Pandoc/Filter/JSON.hs b/src/Text/Pandoc/Filter/JSON.hs index c3019c679..883e3c7c4 100644 --- a/src/Text/Pandoc/Filter/JSON.hs +++ b/src/Text/Pandoc/Filter/JSON.hs @@ -27,7 +27,8 @@ import Text.Pandoc.Definition (Pandoc) import Text.Pandoc.Error (PandocError (PandocFilterError)) import Text.Pandoc.Filter.Environment (Environment (..)) import Text.Pandoc.Process (pipeProcess) -import Text.Pandoc.Shared (pandocVersionText, tshow) +import Text.Pandoc.Version (pandocVersionText) +import Text.Pandoc.Shared (tshow) import qualified Control.Exception as E import qualified Text.Pandoc.UTF8 as UTF8 diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs index 0a836847b..b2d14c52a 100644 --- a/src/Text/Pandoc/Shared.hs +++ b/src/Text/Pandoc/Shared.hs @@ -88,9 +88,6 @@ module Text.Pandoc.Shared ( safeStrRead, -- * User data directory defaultUserDataDir, - -- * Version - pandocVersion, - pandocVersionText ) where import Codec.Archive.Zip @@ -110,8 +107,6 @@ import Data.Monoid (Any (..)) import Data.Sequence (ViewL (..), ViewR (..), viewl, viewr) import qualified Data.Set as Set import qualified Data.Text as T -import Data.Version (Version, showVersion) -import Paths_pandoc (version) import System.Directory import System.FilePath (isPathSeparator, splitDirectories) import qualified System.FilePath.Posix as Posix @@ -127,14 +122,6 @@ import Text.Pandoc.Generic (bottomUp) import Text.DocLayout (charWidth) import Text.Pandoc.Walk --- | Version number of pandoc library. -pandocVersion :: Version -pandocVersion = version - --- | Text representation of the library's version number. -pandocVersionText :: T.Text -pandocVersionText = T.pack $ showVersion version - -- -- List processing -- diff --git a/src/Text/Pandoc/Version.hs b/src/Text/Pandoc/Version.hs new file mode 100644 index 000000000..e5d1c2a74 --- /dev/null +++ b/src/Text/Pandoc/Version.hs @@ -0,0 +1,28 @@ +{-# LANGUAGE CPP #-} +{- | + Module : Text.Pandoc.Version + Copyright : Copyright (C) 2022 John MacFarlane + License : GNU GPL, version 2 or above + + Maintainer : John MacFarlane + Stability : alpha + Portability : portable + +Version information. +-} +module Text.Pandoc.Version ( + pandocVersion, + pandocVersionText + ) where + +import Data.Version (Version, showVersion) +import Paths_pandoc (version) +import qualified Data.Text as T + +-- | Version number of pandoc library. +pandocVersion :: Version +pandocVersion = version + +-- | Text representation of the library's version number. +pandocVersionText :: T.Text +pandocVersionText = T.pack $ showVersion version diff --git a/src/Text/Pandoc/Writers/Man.hs b/src/Text/Pandoc/Writers/Man.hs index fd4d52d3c..f4d829059 100644 --- a/src/Text/Pandoc/Writers/Man.hs +++ b/src/Text/Pandoc/Writers/Man.hs @@ -74,7 +74,7 @@ pandocToMan opts (Pandoc meta blocks) = do $ setFieldsFromTitle $ defField "has-tables" hasTables $ defField "hyphenate" True - $ defField "pandoc-version" pandocVersionText metadata + $ metadata return $ render colwidth $ case writerTemplate opts of Nothing -> main diff --git a/src/Text/Pandoc/Writers/Ms.hs b/src/Text/Pandoc/Writers/Ms.hs index 5592b3d86..ceff1697f 100644 --- a/src/Text/Pandoc/Writers/Ms.hs +++ b/src/Text/Pandoc/Writers/Ms.hs @@ -76,7 +76,6 @@ pandocToMs opts (Pandoc meta blocks) = do let context = defField "body" main $ defField "has-inline-math" hasInlineMath $ defField "hyphenate" True - $ defField "pandoc-version" pandocVersionText $ defField "toc" (writerTableOfContents opts) $ defField "title-meta" titleMeta $ defField "author-meta" (T.intercalate "; " authorsMeta) diff --git a/src/Text/Pandoc/Writers/ODT.hs b/src/Text/Pandoc/Writers/ODT.hs index 77289faea..302debe7f 100644 --- a/src/Text/Pandoc/Writers/ODT.hs +++ b/src/Text/Pandoc/Writers/ODT.hs @@ -35,7 +35,8 @@ import Text.Pandoc.Logging import Text.Pandoc.MIME (extensionFromMimeType, getMimeType) import Text.Pandoc.Options (WrapOption (..), WriterOptions (..)) import Text.DocLayout -import Text.Pandoc.Shared (stringify, pandocVersionText, tshow) +import Text.Pandoc.Shared (stringify, tshow) +import Text.Pandoc.Version (pandocVersionText) import Text.Pandoc.Writers.Shared (lookupMetaString, lookupMetaBlocks, fixDisplayMath, getLang, ensureValidXmlIdentifiers) diff --git a/test/writer.man b/test/writer.man index 30d83465f..752852322 100644 --- a/test/writer.man +++ b/test/writer.man @@ -1,3 +1,5 @@ +.\" Automatically generated by Pandoc 3.0 +.\" .\" Define V font for inline verbatim, using C font in formats .\" that render this, and otherwise B font. .ie "\f[CB]x\f[]"x" \{\ diff --git a/test/writer.ms b/test/writer.ms index 5b00e2f15..fd78272d6 100644 --- a/test/writer.ms +++ b/test/writer.ms @@ -1,3 +1,5 @@ +.\" Automatically generated by Pandoc 3.0 +.\" .\" **** Custom macro definitions ********************************* .\" * Super/subscript .\" (https://lists.gnu.org/archive/html/groff/2012-07/msg00046.html) -- cgit v1.2.3