diff options
| author | Albert Krewinkel <albert@zeitkraut.de> | 2018-09-06 20:57:21 +0200 | 
|---|---|---|
| committer | Albert Krewinkel <albert@zeitkraut.de> | 2018-09-06 20:57:21 +0200 | 
| commit | 275afec38a9feb1143344af19d5ebfbf4ef4fb32 (patch) | |
| tree | 9d1c02bf9aed7b54bd42553a0f41f42a09a62baf /src/Text/Pandoc/Readers/Org | |
| parent | aac3d752e1f059d2727863a4705feef4e5a05f3e (diff) | |
| download | pandoc-275afec38a9feb1143344af19d5ebfbf4ef4fb32.tar.gz | |
Org reader: respect export option `p` for planning info
Inclusion of planning info (*DEADLINE*, *SCHEDULED*, and *CLOSED*) can
be controlled via the `p` export option: setting the option to `t` will
add all planning information in a *Plain* block below the respective
headline.
Diffstat (limited to 'src/Text/Pandoc/Readers/Org')
| -rw-r--r-- | src/Text/Pandoc/Readers/Org/DocumentTree.hs | 26 | ||||
| -rw-r--r-- | src/Text/Pandoc/Readers/Org/ExportSettings.hs | 2 | ||||
| -rw-r--r-- | src/Text/Pandoc/Readers/Org/ParserState.hs | 2 | 
3 files changed, 28 insertions, 2 deletions
| diff --git a/src/Text/Pandoc/Readers/Org/DocumentTree.hs b/src/Text/Pandoc/Readers/Org/DocumentTree.hs index 6dd78560f..c7a5f22c4 100644 --- a/src/Text/Pandoc/Readers/Org/DocumentTree.hs +++ b/src/Text/Pandoc/Readers/Org/DocumentTree.hs @@ -204,6 +204,7 @@ headlineToHeaderWithList hdln = do    maxHeadlineLevels <- getExportSetting exportHeadlineLevels    header        <- headlineToHeader hdln    listElements  <- mapM headlineToBlocks (headlineChildren hdln) +  planningBlock <- planningToBlock (headlinePlanning hdln)    let listBlock  = if null listElements                     then mempty                     else B.orderedList listElements @@ -213,6 +214,7 @@ headlineToHeaderWithList hdln = do    return . mconcat $      [ headerText      , headlineContents hdln +    , planningBlock      , listBlock      ]   where @@ -225,8 +227,9 @@ headlineToHeaderWithList hdln = do  headlineToHeaderWithContents :: Monad m => Headline -> OrgParser m Blocks  headlineToHeaderWithContents hdln = do    header         <- headlineToHeader hdln +  planningBlock <- planningToBlock (headlinePlanning hdln)    childrenBlocks <- mconcat <$> mapM headlineToBlocks (headlineChildren hdln) -  return $ header <> headlineContents hdln <> childrenBlocks +  return $ header <> planningBlock <> headlineContents hdln <> childrenBlocks  headlineToHeader :: Monad m => Headline -> OrgParser m Blocks  headlineToHeader hdln = do @@ -287,6 +290,27 @@ tagsToInlines tags =  tagSpan :: Tag -> Inlines -> Inlines  tagSpan t = B.spanWith ("", ["tag"], [("tag-name", fromTag t)]) +-- | Render planning info as a block iff the respective export setting is +-- enabled. +planningToBlock :: Monad m => PlanningInfo -> OrgParser m Blocks +planningToBlock planning = do +  includePlanning <- getExportSetting exportWithPlanning +  return $ +    if includePlanning +    then B.plain . mconcat . intersperse B.space . filter (/= mempty) $ +         [ datumInlines planningClosed "CLOSED" +         , datumInlines planningDeadline "DEADLINE" +         , datumInlines planningScheduled "SCHEDULED" +         ] +    else mempty + where +  datumInlines field name = +    case field planning of +      Nothing -> mempty +      Just time ->   B.strong (B.str name <> B.str ":") +                  <> B.space +                  <> B.emph (B.str time) +  -- | An Org timestamp, including repetition marks. TODO: improve  type Timestamp = String diff --git a/src/Text/Pandoc/Readers/Org/ExportSettings.hs b/src/Text/Pandoc/Readers/Org/ExportSettings.hs index d02eb37c5..f79ee0d64 100644 --- a/src/Text/Pandoc/Readers/Org/ExportSettings.hs +++ b/src/Text/Pandoc/Readers/Org/ExportSettings.hs @@ -69,7 +69,7 @@ exportSetting = choice    , integerSetting "H" (\val es -> es { exportHeadlineLevels = val })    , ignoredSetting "inline"    , ignoredSetting "num" -  , ignoredSetting "p" +  , booleanSetting "p" (\val es -> es { exportWithPlanning = val })    , ignoredSetting "pri"    , ignoredSetting "prop"    , ignoredSetting "stat" diff --git a/src/Text/Pandoc/Readers/Org/ParserState.hs b/src/Text/Pandoc/Readers/Org/ParserState.hs index 4cb5bb626..d33602575 100644 --- a/src/Text/Pandoc/Readers/Org/ParserState.hs +++ b/src/Text/Pandoc/Readers/Org/ParserState.hs @@ -260,6 +260,7 @@ data ExportSettings = ExportSettings    , exportWithAuthor       :: Bool -- ^ Include author in final meta-data    , exportWithCreator      :: Bool -- ^ Include creator in final meta-data    , exportWithEmail        :: Bool -- ^ Include email in final meta-data +  , exportWithPlanning     :: Bool -- ^ Keep planning info after headlines    , exportWithTags         :: Bool -- ^ Keep tags as part of headlines    , exportWithTodoKeywords :: Bool -- ^ Keep TODO keywords in headers    } @@ -280,6 +281,7 @@ defaultExportSettings = ExportSettings    , exportWithAuthor = True    , exportWithCreator = True    , exportWithEmail = True +  , exportWithPlanning = False    , exportWithTags = True    , exportWithTodoKeywords = True    } | 
