aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Writers/Powerpoint
AgeCommit message (Collapse)AuthorFilesLines
2020-03-22Finer grained imports of Text.Pandoc.Class submodules (#6203)Albert Krewinkel1-2/+2
This should speed-up recompilation after changes in `Text.Pandoc.Class`, as the number of modules affected by a change will be smaller in general. It also offers faster insights into the parts of `T.P.Class` used within a module.
2020-03-15Use implicit Prelude (#6187)Albert Krewinkel2-4/+0
* Use implicit Prelude The previous behavior was introduced as a fix for #4464. It seems that this change alone did not fix the issue, and `stack ghci` and `cabal repl` only work with GHC 8.4.1 or newer, as no custom Prelude is loaded for these versions. Given this, it seems cleaner to revert to the implicit Prelude. * PandocMonad: remove outdated check for base version Only base versions 4.9 and later are supported, the check for `MIN_VERSION_base(4,8,0)` is therefore unnecessary. * Always use custom prelude Previously, the custom prelude was used only with older GHC versions, as a workaround for problems with ghci. The ghci problems are resolved by replacing package `base` with `base-noprelude`, allowing for consistent use of the custom prelude across all GHC versions.
2020-03-13Update copyright year (#6186)Albert Krewinkel2-2/+2
* Update copyright year * Copyright: add notes for Lua and Jira modules
2020-02-07Apply linter suggestions. Add fix_spacing to lint target in Makefile.John MacFarlane2-88/+79
2020-02-07Resolve HLint warningsAlbert Krewinkel2-58/+57
All warnings are either fixed or, if more appropriate, HLint is configured to ignore them. HLint suggestions remain. * Ignore "Use camelCase" warnings in Lua and legacy code * Fix or ignore remaining HLint warnings * Remove redundant brackets * Remove redundant `return`s * Remove redundant as-pattern * Fuse mapM_/map * Use `.` to shorten code * Remove redundant `fmap` * Remove unused LANGUAGE pragmas * Hoist `not` in Text.Pandoc.App * Use fewer imports for `Text.DocTemplates` * Remove redundant `do`s * Remove redundant `$`s * Jira reader: remove unnecessary parentheses
2020-02-07Various minor cleanups and refactoring (#6117)Joseph C. Sible2-8/+8
* Use concatMap instead of reimplementing it * Replace an unnecessary multi-way if with a regular if * Use sortOn instead of sortBy and comparing * Use guards instead of lots of indents for if and else * Remove redundant do blocks * Extract common functions from both branches of maybe Whenever both the Nothing and the Just branch of maybe do the same function, do that function on the result of maybe instead. * Use fmap instead of reimplementing it from maybe * Use negative forms instead of negating the positive forms * Use mapMaybe instead of mapping and then using catMaybes * Use zipWith instead of mapping over the result of zip * Use unwords instead of reimplementing it * Use <$ instead of <$> and const * Replace case of Bool with if and else * Use find instead of listToMaybe and filter * Use zipWithM instead of mapM and zip * Inline lambda wrappers into the real functions * We get zipWithM from Text.Pandoc.Writers.Shared * Use maybe instead of fromMaybe and fmap I'm not sure how this one slipped past me. * Increase a bit of indentation
2019-11-12Switch to new pandoc-types and use Text instead of String [API change].despresc2-163/+174
PR #5884. + Use pandoc-types 1.20 and texmath 0.12. + Text is now used instead of String, with a few exceptions. + In the MediaBag module, some of the types using Strings were switched to use FilePath instead (not Text). + In the Parsing module, new parsers `manyChar`, `many1Char`, `manyTillChar`, `many1TillChar`, `many1Till`, `manyUntil`, `mantyUntilChar` have been added: these are like their unsuffixed counterparts but pack some or all of their output. + `glob` in Text.Pandoc.Class still takes String since it seems to be intended as an interface to Glob, which uses strings. It seems to be used only once in the package, in the EPUB writer, so that is not hard to change.
2019-10-09Options.WriterOptions: Change type of writerVariables to Context Text.John MacFarlane1-2/+5
This will allow structured values. [API change]
2019-09-28Replace some more fails with throwErrors.John MacFarlane1-1/+2
2019-09-28Use Prelude.fail to avoid ambiguity with fail from GHC.Base.John MacFarlane1-1/+1
2019-08-27PowerPoint writer: Start numbering at appopriate numbers.Jesse Rosenthal1-4/+8
Starting numbers for ordered lists were previously ignored. Now we specify the number if it is something other than 1. Closes: #5709
2019-06-14Powerpoint code formatting is now context dependent (#5573)Jeroen de Haas2-21/+53
This commit alters the way in which the Powerpoint writer treats inline code and code blocks. - Inline code is now formatted at the same size as the surrounding text. - Code blocks are now given a margin and font size according to their level. - Furthermore this commit allows changing the font with which code is formatted via the `monofont` option. Tested in - PowerPoint 365 for Windows - 1808 (Build 10730.20344 Click-to-Run) - PowerPoint 365 for Mac - 16.26 (19060901)
2019-04-05PowerPoint writer code style fixJesse Rosenthal1-30/+14
I had been using record syntax in an ADT, is bad style, since it means that each record produces a partial function. Fortunately we weren't using the partial functions anywhere, so this changes it to positional syntax.
2019-04-04PowerPoint writer: Always open up in slide viewJesse Rosenthal1-8/+26
When editing a template/reference-doc, the user might be in Master view, but when producing a slide show, it is assumed that slide view will be desired. This removes the "lastView" attr from the viewProps.xml slide so that the presentation will always open up in slide view. Note this requires creating a new "ppt/viewProps.xml" instead of just moving over the old one from the viewProps file. Since this produces a slightly different order of xml files in the content manifest, the golden files will have to be rebuilt.
2019-04-01PowerPoint writer: Remove handoutsMasterList from template presentation.xmlJesse Rosenthal1-7/+9
We don't build it at the moment, so it was causing corruption.
2019-04-01PowerPoint writer: Build sp trees correctlyJesse Rosenthal1-17/+19
We were previously carrying over too many elements from the layout, which produced visual artifacts and some corruption. This empties the sptree (except for properties) after building the shapes, and then inserts them. Together with 5e944bf5, fixes #5402 (Note that this addresses the issue and template in that particular bug report. Other issues will arise no doubt arise with other templates.)
2019-04-01PowerPoint writer: Correct application of reference doc for contentJesse Rosenthal1-30/+16
Previously we had applied content shapes based on their index (which was "1", "2" in MS Word 2013). It turns out that this was a convention, and could not be relied on. Instead we use a default type (ie, a ph tag with no "type"). This is more correct, and should make the application of reference documents in PowerPoint much more robust.
2019-04-01PowerPoint writer: Make default placeholder type for template lookupJesse Rosenthal1-18/+42
This is the first step toward making templating work better. It seems that content shapes have a default ph type. In other words, shapes with *NO PH TYPE* should be considered to have an "obj" ph type, and used as content shapes. see https://github.com/scanny/python-pptx/blob/master/docs/dev/analysis/placeholders/slide-placeholders/placeholders-in-new-slide.rst
2019-03-31Pptx writer: Apply speaker snotes to metadata slide if applicable.Jesse Rosenthal1-15/+35
If the slide deck has a metadata slide (with author, title, etc) and has speaker notes before any body content, the speaker notes will be applied to the metadata slide. If there is no metadata slide, pandoc will behave as before.
2019-03-30Pptx writer: Correctly handle notes after section-title headerJesse Rosenthal1-3/+4
Previously, if notes came after a section-title header (ie, a level-1 header in a slide-level=2 presentation), they would go on the next slide. This keeps them on the slide with the header.
2019-03-01Remove license boilerplate.John MacFarlane2-38/+0
The haddock module header contains essentially the same information, so the boilerplate is redundant and just one more thing to get out of sync.
2019-02-27PowerPoint writer: add underlinesJesse Rosenthal1-0/+3
Use span with single class "underline" as in docx writer.
2019-02-04Add missing copyright notices and remove license boilerplate (#5112)Albert Krewinkel2-4/+4
Quite a few modules were missing copyright notices. This commit adds copyright notices everywhere via haddock module headers. The old license boilerplate comment is redundant with this and has been removed. Update copyright years to 2019. Closes #4592.
2019-01-26Improve writing metadata for docx, pptx and odt (#5252)Agustín Martín Barbero2-7/+55
* docx writer: support custom properties. Solves the writer part of #3024. Also supports additional core properties: `subject`, `lang`, `category`, `description`. * odt writer: improve standard properties, including the following core properties: `generator` (Pandoc/VERSION), `description`, `subject`, `keywords`, `initial-creator` (from authors), `creation-date` (actual creation date). Also fix date. * pptx writer: support custom properties. Also supports additional core properties: `subject`, `category`, `description`. * Includes golden tests. * MANUAL: document metadata support for docx, odt, pptx writers
2019-01-04Use toTableOfContents in Powerpoint writer....John MacFarlane1-16/+3
instead of duplicating code.
2018-11-11Text.Pandoc.Shared: add parameter to uniqueIdent, inlineListToIdentifier.John MacFarlane1-1/+2
The parameter is Extensions. This allows these functions to be sensitive to the settings of `Ext_gfm_auto_identifiers` and `Ext_ascii_identifiers`. This allows us to use `uniqueIdent` in the CommonMark reader, replacing some custom code. It also means that `gfm_auto_identifiers` can now be used in all formats. Semantically, `gfm_auto_identifiers` is now a modifier of `auto_identifiers`; for identifiers to be set, `auto_identifiers` must be turned on, and then the type of identifier produced depends on `gfm_auto_identifiers` and `ascii_identifiers` are set. Closes #5057.
2018-10-20Powerpoint: Support raw openxml in pptx writer.Jesse Rosenthal2-12/+25
This allows raw openxml blocks and inlines to be used in the pptx writer. A few caveats: 1. It's up to the user to write well-formed openxml. The chances for corruption, especially with such a brittle format as pptx, is pretty high. 2. Because of the tricky way that blocks map onto shapes, if you are using a raw block, it should be the only block on a slide (otherwise other text might end up overlapping it). 3. The pptx ooxml namespace abbreviations are different from the docx ooxml namespaces. Again, it's up to the user to get it right. Unzipped document and ooxml specification should be consulted. Closes: #4976
2018-10-04Add lookupMeta* functions to Text.Pandoc.Writers.Shared (#4907)Mauro Bieg1-14/+8
Remove exported functions `metaValueToInlines`, `metaValueToString`. Add new exported functions `lookupMetaBool`, `lookupMetaBlocks`, `lookupMetaInlines`, `lookupMetaString`. Use these whenever possible for uniformity in writers. API change (major, because of removed function `metaValueToInlines`. `metaValueToString` wasn't in any released version.)
2018-04-26Remove unused importAlexander Krotov1-1/+1
2018-04-26Simplify curSlideHasSpeakerNotesAlexander Krotov1-4/+2
2018-04-05Powerpoint writer: Handle Quoted InlinesJesse Rosenthal1-2/+13
Closes: #4532
2018-03-30Powerpoint writer: code cleanupJesse Rosenthal1-4/+1
Since we're using mapM_ instead of mapM, we can get rid of the return statement. We also don't need the `unless` statement anymore.
2018-03-25Powerpoint writer: code cleanup.Jesse Rosenthal1-39/+17
2018-03-24Powerpoint writer: simplify code with `ParseXml`Jesse Rosenthal1-23/+2
There were some artifact code blocks around from before `reference-doc` functionality was implemented. This led to ignoring the reference-doc in places. Though I fixed this, I kept the old hacked-up functions instead of replacing them with `parseXml` (imported from Writers.OOXML) which does this in a consistent manner. This commit corrects that oversight.
2018-03-24Powerpoint writer: Allow fallback options when looking for placeholder type.Jesse Rosenthal1-9/+17
2018-03-24Revert "Powerpoint writer: Remove spPr tag from non-body layouts"Jesse Rosenthal1-5/+1
This reverts commit 99fa850a37cc3e56b415754c70ea2d98da709584.
2018-03-24Powerpoint reader: Check reference-doc for all layouts.Jesse Rosenthal1-2/+6
There were a few layouts where we were still just checking the built in pptx doc, instead of the supplied reference doc.
2018-03-23Powerpoint writer: Remove spPr tag from non-body layoutsJesse Rosenthal1-1/+5
This was causing headers to be misaligned when some templates were used.
2018-03-23Powepoint writer: Simplify speaker notesJesse Rosenthal1-27/+31
We now pull the filtered blocks and speaker notes out at the top of the `blocksToSlide` function, and then make SpeakerNotes into a parameter of the `blocksToSlide'` subfunction. The output is the same, but the logic should be easier to follow now.
2018-03-23Powerpoint writer: change notes state to a simpler per-slide valueJesse Rosenthal1-18/+7
We used to keep a map of the slideId-to-notes for each slide. Since we now extract them at the slide level, this is overcomplicated, and we can just extract them before converting a slide and then clear the state after.
2018-03-23Powerpoint writer: Remove `Maybe` from `SpeakerNotes` in `Slide`.Jesse Rosenthal2-71/+71
Previously, we had treated it as a `Maybe`. But there is no difference between not having speaker notes and having empty speaker notes. So we make the SpeakerNotes newtype into a monoid, and test for memptiness instead of testing for Just/Nothing.
2018-03-21Powerpoint writer: handle speaker notes earlier in the conversion processJesse Rosenthal1-15/+23
Internal change: We were getting bad results with the empty text box created by the conversion of notes into an empty paragraph. So we now convert the notes at the `blocksToSlide` stage, by `walkM`ing a function over the blocks that returns `()`, and then filters the notes out. This avoids the need to have a return value for speaker notes, and thus avoids the empty TextBox. Together with the previous commit (256f14c5a), closes #4477.
2018-03-21Powerpoint writer: Keep notes with related blocksJesse Rosenthal1-8/+17
Some blocks automatically split slides (imgs, tables, `column` divs). We assume that any speaker notes immediately following these are connected to these elements, and keep them with the related blocks, splitting after them.
2018-03-18Removed old-locale flag and Text.Pandoc.Compat.Time.John MacFarlane2-2/+2
This is no longer necessary since we no longer support ghc 7.8.
2018-03-18Use NoImplicitPrelude and explicitly import Prelude.John MacFarlane2-0/+4
This seems to be necessary if we are to use our custom Prelude with ghci. Closes #4464.
2018-03-17hlint fixes.John MacFarlane1-10/+10
2018-02-27Powerpoint writer: use `trim` from SharedJesse Rosenthal1-3/+2
Instead of writing my own.
2018-02-27Powerpoint writer: Use table stylesJesse Rosenthal1-3/+17
This will use the default table style in the reference-doc file. As a result they will be easier when using in a template, and match the color scheme.
2018-02-27Powerpoint writer: Remove empty slidesJesse Rosenthal1-2/+38
Make sure there are no empty slides in the pptx output. Because of the way that slides were split, these could be accidentally produced by comments after images. When animations are added, there will be a way to add an empty slide with either incremental lists or pauses. Test outputs checked with MS PowerPoint (Office 2013, Windows 10, VBox). Both files have expected output and are not corrupted.
2018-02-20Powerpoint writer: Use ph name and idx for getting layout shapesJesse Rosenthal1-37/+26
Internal change: when we take shapes from the layout for title, content, etc, we should use the attributes of the "ph" (placeholder) tag -- idx and name. This is what powerpoint uses internally, and therefore seems more dependable across reference-docs than using the shape names, as we had previously done. There should be no output changes as a result of this commit.