git.iko.soy/typeable/pandoc
on master help sign in
Added Text.Pandoc.Logging (exported module).
5e12494John MacFarlane
pandoc.cabal+1
@@ -392,6 +392,7 @@ Library
392 Text.Pandoc.XML,
392 Text.Pandoc.XML,
393 Text.Pandoc.SelfContained,
393 Text.Pandoc.SelfContained,
394 Text.Pandoc.Highlighting,
394 Text.Pandoc.Highlighting,
395+ Text.Pandoc.Logging,
395 Text.Pandoc.Process,
396 Text.Pandoc.Process,
396 Text.Pandoc.MIME,
397 Text.Pandoc.MIME,
397 Text.Pandoc.Class
398 Text.Pandoc.Class
src/Text/Pandoc.hs+3
@@ -58,6 +58,8 @@ module Text.Pandoc
58 , module Text.Pandoc.Generic
58 , module Text.Pandoc.Generic
59 -- * Options
59 -- * Options
60 , module Text.Pandoc.Options
60 , module Text.Pandoc.Options
61+ -- * Logging
62+ , module Text.Pandoc.Logging
61 -- * Typeclass
63 -- * Typeclass
62 , PandocMonad
64 , PandocMonad
63 , runIO
65 , runIO
@@ -189,6 +191,7 @@ import Text.Pandoc.Writers.Custom
189import Text.Pandoc.Writers.TEI
191import Text.Pandoc.Writers.TEI
190import Text.Pandoc.Templates
192import Text.Pandoc.Templates
191import Text.Pandoc.Options
193import Text.Pandoc.Options
194+import Text.Pandoc.Logging
192import Text.Pandoc.Shared (safeRead, mapLeft, pandocVersion)
195import Text.Pandoc.Shared (safeRead, mapLeft, pandocVersion)
193import Text.Pandoc.Error
196import Text.Pandoc.Error
194import Text.Pandoc.Class
197import Text.Pandoc.Class
src/Text/Pandoc/Class.hs+2−2
@@ -72,8 +72,8 @@ import qualified Text.Pandoc.Shared as IO ( readDataFile
72 , openURL )
72 , openURL )
73import qualified Text.Pandoc.UTF8 as UTF8
73import qualified Text.Pandoc.UTF8 as UTF8
74import Text.Pandoc.Compat.Time (UTCTime)
74import Text.Pandoc.Compat.Time (UTCTime)
75−import Text.Pandoc.Options (Verbosity(..))
75+import Text.Pandoc.Logging
76−import Text.Parsec (ParsecT, SourcePos, getPosition)
76+import Text.Parsec (ParsecT, SourcePos)
77import qualified Text.Pandoc.Compat.Time as IO (getCurrentTime)
77import qualified Text.Pandoc.Compat.Time as IO (getCurrentTime)
78import Text.Pandoc.MIME (MimeType, getMimeType)
78import Text.Pandoc.MIME (MimeType, getMimeType)
79import Data.Time.Clock.POSIX ( utcTimeToPOSIXSeconds
79import Data.Time.Clock.POSIX ( utcTimeToPOSIXSeconds
src/Text/Pandoc/Error.hs+3−8
@@ -29,7 +29,9 @@ This module provides a standard way to deal with possible errors encounted
29during parsing.
29during parsing.
30
30
31-}
31-}
32−module Text.Pandoc.Error (PandocError(..), handleError) where
32+module Text.Pandoc.Error (
33+ PandocError(..),
34+ handleError) where
33
35
34import Text.Parsec.Error
36import Text.Parsec.Error
35import Text.Parsec.Pos hiding (Line)
37import Text.Parsec.Pos hiding (Line)
@@ -47,13 +49,6 @@ data PandocError = PandocFileReadError FilePath
47 | PandocParsecError Input ParseError
49 | PandocParsecError Input ParseError
48 deriving (Show, Typeable, Generic)
50 deriving (Show, Typeable, Generic)
49
51
50−
51−-- data PandocError = -- | Generic parse failure
52−-- ParseFailure String
53−-- -- | Error thrown by a Parsec parser
54−-- | ParsecError Input ParseError
55−-- deriving (Show, Typeable, Generic)
56−
57instance Exception PandocError
52instance Exception PandocError
58
53
59-- | Handle PandocError by exiting with an error message.
54-- | Handle PandocError by exiting with an error message.
src/Text/Pandoc/Logging.hsnew file+76
@@ -0,0 +1,76 @@
1+{-# LANGUAGE DeriveDataTypeable, DeriveGeneric #-}
2+{-
3+Copyright (C) 2016-17 John MacFarlane <jgm@berkeley.edu>
4+
5+This program is free software; you can redistribute it and/or modify
6+it under the terms of the GNU General Public License as published by
7+the Free Software Foundation; either version 2 of the License, or
8+(at your option) any later version.
9+
10+This program is distributed in the hope that it will be useful,
11+but WITHOUT ANY WARRANTY; without even the implied warranty of
12+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+GNU General Public License for more details.
14+
15+You should have received a copy of the GNU General Public License
16+along with this program; if not, write to the Free Software
17+Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18+-}
19+{- |
20+ Module : Text.Pandoc.Logging
21+ Copyright : Copyright (C) 2006-2016 John MacFarlane
22+ License : GNU GPL, version 2 or above
23+
24+ Maintainer : John MacFarlane <jgm@berkeley.edu>
25+ Stability : alpha
26+ Portability : portable
27+
28+This module provides data types and functions for warnings
29+and info messages.
30+
31+-}
32+module Text.Pandoc.Logging (
33+ Verbosity(..)
34+ , LogMessage(..)
35+ , messageVerbosity
36+ ) where
37+
38+import Text.Parsec.Pos
39+import Data.Data (Data)
40+import Data.Generics (Typeable)
41+import GHC.Generics (Generic)
42+
43+-- | Verbosity level.
44+data Verbosity = ERROR | WARNING | INFO | DEBUG
45+ deriving (Show, Read, Eq, Data, Enum, Ord, Bounded, Typeable, Generic)
46+
47+data LogMessage =
48+ SkippedInput String SourcePos
49+ | NotRendered String
50+ | YamlSectionNotAnObject SourcePos
51+ | DuplicateLinkReference String SourcePos
52+ | DuplicateNoteReference String SourcePos
53+ | ParsingUnescaped String SourcePos
54+ | DocxCommentWillNotRetainFormatting String
55+ | CouldNotFetchResource String String
56+ | CouldNotDetermineImageSize String
57+ | CouldNotDetermineMimeType String
58+ | CouldNotConvertTeXMath String
59+ deriving (Show, Eq, Data, Ord, Typeable, Generic)
60+
61+messageVerbosity:: LogMessage -> Verbosity
62+messageVerbosity msg =
63+ case msg of
64+ SkippedInput{} -> INFO
65+ NotRendered{} -> INFO
66+ YamlSectionNotAnObject{} -> WARNING
67+ DuplicateLinkReference{} -> WARNING
68+ DuplicateNoteReference{} -> WARNING
69+ ParsingUnescaped{} -> INFO
70+ DocxCommentWillNotRetainFormatting{} -> INFO
71+ CouldNotFetchResource{} -> WARNING
72+ CouldNotDetermineImageSize{} -> WARNING
73+ CouldNotDetermineMimeType{} -> WARNING
74+ CouldNotConvertTeXMath{} -> WARNING
75+
76+
src/Text/Pandoc/Options.hs−5
@@ -37,7 +37,6 @@ module Text.Pandoc.Options ( module Text.Pandoc.Extensions
37 , HTMLSlideVariant (..)
37 , HTMLSlideVariant (..)
38 , EPUBVersion (..)
38 , EPUBVersion (..)
39 , WrapOption (..)
39 , WrapOption (..)
40− , Verbosity (..)
41 , TopLevelDivision (..)
40 , TopLevelDivision (..)
42 , WriterOptions (..)
41 , WriterOptions (..)
43 , TrackChanges (..)
42 , TrackChanges (..)
@@ -138,10 +137,6 @@ data ReferenceLocation = EndOfBlock -- ^ End of block
138 | EndOfDocument -- ^ at end of document
137 | EndOfDocument -- ^ at end of document
139 deriving (Show, Read, Eq, Data, Typeable, Generic)
138 deriving (Show, Read, Eq, Data, Typeable, Generic)
140
139
141−-- | Verbosity level.
142−data Verbosity = ERROR | WARNING | INFO | DEBUG
143− deriving (Show, Read, Eq, Data, Enum, Ord, Bounded, Typeable, Generic)
144−
145-- | Options for writers
140-- | Options for writers
146data WriterOptions = WriterOptions
141data WriterOptions = WriterOptions
147 { writerTemplate :: Maybe String -- ^ Template to use
142 { writerTemplate :: Maybe String -- ^ Template to use
src/Text/Pandoc/PDF.hs+2−2
@@ -52,8 +52,8 @@ import Text.Pandoc.MediaBag
52import Text.Pandoc.Walk (walkM)
52import Text.Pandoc.Walk (walkM)
53import Text.Pandoc.Shared (warn, withTempDir, inDirectory, stringify)
53import Text.Pandoc.Shared (warn, withTempDir, inDirectory, stringify)
54import Text.Pandoc.Writers.Shared (getField, metaToJSON)
54import Text.Pandoc.Writers.Shared (getField, metaToJSON)
55−import Text.Pandoc.Options (WriterOptions(..), HTMLMathMethod(..),
55+import Text.Pandoc.Options (WriterOptions(..), HTMLMathMethod(..))
56− Verbosity(..))
56+import Text.Pandoc.Logging (Verbosity(..))
57import Text.Pandoc.MIME (extensionFromMimeType, getMimeType)
57import Text.Pandoc.MIME (extensionFromMimeType, getMimeType)
58import Text.Pandoc.Process (pipeProcess)
58import Text.Pandoc.Process (pipeProcess)
59import Control.Monad.Trans (MonadIO(..))
59import Control.Monad.Trans (MonadIO(..))
src/Text/Pandoc/Readers/EPUB.hs+2−1
@@ -12,7 +12,8 @@ import Text.XML.Light
12import Text.Pandoc.Definition hiding (Attr)
12import Text.Pandoc.Definition hiding (Attr)
13import Text.Pandoc.Readers.HTML (readHtml)
13import Text.Pandoc.Readers.HTML (readHtml)
14import Text.Pandoc.Walk (walk, query)
14import Text.Pandoc.Walk (walk, query)
15−import Text.Pandoc.Options ( ReaderOptions(..), Verbosity(..))
15+import Text.Pandoc.Options ( ReaderOptions(..))
16+import Text.Pandoc.Logging (Verbosity(..))
16import Text.Pandoc.Extensions (enableExtension, Extension(Ext_raw_html))
17import Text.Pandoc.Extensions (enableExtension, Extension(Ext_raw_html))
17import Text.Pandoc.Shared (escapeURI, collapseFilePath, addMetaField)
18import Text.Pandoc.Shared (escapeURI, collapseFilePath, addMetaField)
18import Network.URI (unEscapeString)
19import Network.URI (unEscapeString)
src/Text/Pandoc/Readers/HTML.hs+2−1
@@ -46,8 +46,9 @@ import Text.Pandoc.Builder (Blocks, Inlines, trimInlines, HasMeta(..))
46import Text.Pandoc.Shared ( extractSpaces, renderTags', addMetaField
46import Text.Pandoc.Shared ( extractSpaces, renderTags', addMetaField
47 , escapeURI, safeRead )
47 , escapeURI, safeRead )
48import Text.Pandoc.Options (ReaderOptions(readerExtensions), extensionEnabled,
48import Text.Pandoc.Options (ReaderOptions(readerExtensions), extensionEnabled,
49− Verbosity(..), Extension (Ext_epub_html_exts,
49+ Extension (Ext_epub_html_exts,
50 Ext_raw_html, Ext_native_divs, Ext_native_spans))
50 Ext_raw_html, Ext_native_divs, Ext_native_spans))
51+import Text.Pandoc.Logging (Verbosity(..))
51import Text.Pandoc.Parsing hiding ((<|>))
52import Text.Pandoc.Parsing hiding ((<|>))
52import Text.Pandoc.Walk
53import Text.Pandoc.Walk
53import qualified Data.Map as M
54import qualified Data.Map as M
src/Text/Pandoc/Readers/Markdown.hs+1
@@ -51,6 +51,7 @@ import qualified Text.Pandoc.UTF8 as UTF8
51import qualified Data.Vector as V
51import qualified Data.Vector as V
52import Text.Pandoc.Builder (Inlines, Blocks, trimInlines)
52import Text.Pandoc.Builder (Inlines, Blocks, trimInlines)
53import Text.Pandoc.Options
53import Text.Pandoc.Options
54+import Text.Pandoc.Logging (Verbosity(..))
54import Text.Pandoc.Shared
55import Text.Pandoc.Shared
55import Text.Pandoc.Pretty (charWidth)
56import Text.Pandoc.Pretty (charWidth)
56import Text.Pandoc.XML (fromEntities)
57import Text.Pandoc.XML (fromEntities)
src/Text/Pandoc/Readers/MediaWiki.hs+1
@@ -41,6 +41,7 @@ import qualified Text.Pandoc.Builder as B
41import Text.Pandoc.Builder (Inlines, Blocks, trimInlines)
41import Text.Pandoc.Builder (Inlines, Blocks, trimInlines)
42import Data.Monoid ((<>))
42import Data.Monoid ((<>))
43import Text.Pandoc.Options
43import Text.Pandoc.Options
44+import Text.Pandoc.Logging (Verbosity(..))
44import Text.Pandoc.Readers.HTML ( htmlTag, isBlockTag, isCommentTag )
45import Text.Pandoc.Readers.HTML ( htmlTag, isBlockTag, isCommentTag )
45import Text.Pandoc.XML ( fromEntities )
46import Text.Pandoc.XML ( fromEntities )
46import Text.Pandoc.Parsing hiding ( nested )
47import Text.Pandoc.Parsing hiding ( nested )
src/Text/Pandoc/Readers/TWiki.hs+1
@@ -35,6 +35,7 @@ module Text.Pandoc.Readers.TWiki ( readTWiki
35import Text.Pandoc.Definition
35import Text.Pandoc.Definition
36import qualified Text.Pandoc.Builder as B
36import qualified Text.Pandoc.Builder as B
37import Text.Pandoc.Options
37import Text.Pandoc.Options
38+import Text.Pandoc.Logging (Verbosity(..))
38import Text.Pandoc.Parsing hiding (enclosed, macro, nested)
39import Text.Pandoc.Parsing hiding (enclosed, macro, nested)
39import Text.Pandoc.Readers.HTML (htmlTag, isCommentTag)
40import Text.Pandoc.Readers.HTML (htmlTag, isCommentTag)
40import Control.Monad
41import Control.Monad
src/Text/Pandoc/Readers/Textile.hs+1
@@ -56,6 +56,7 @@ import Text.Pandoc.Definition
56import Text.Pandoc.Builder (Inlines, Blocks, trimInlines)
56import Text.Pandoc.Builder (Inlines, Blocks, trimInlines)
57import qualified Text.Pandoc.Builder as B
57import qualified Text.Pandoc.Builder as B
58import Text.Pandoc.Options
58import Text.Pandoc.Options
59+import Text.Pandoc.Logging (Verbosity(..))
59import Text.Pandoc.Parsing
60import Text.Pandoc.Parsing
60import Text.Pandoc.Readers.HTML ( htmlTag, isBlockTag, isInlineTag )
61import Text.Pandoc.Readers.HTML ( htmlTag, isBlockTag, isInlineTag )
61import Text.Pandoc.Shared (trim)
62import Text.Pandoc.Shared (trim)