aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/App/CommandLineOptions.hs
AgeCommit message (Collapse)AuthorFilesLines
2020-02-08Factor out a findM function (#6125)Joseph C. Sible1-10/+2
This adds a new function to the API: Text.Pandoc.Shared.findM.
2020-02-07Resolve HLint warningsAlbert Krewinkel1-5/+4
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-07More in-depth refactoring and cleanup (#6123)Joseph C. Sible1-8/+7
* Avoid duplicating the dash case * Pull common functions out of case branches * Make sure list lengths are only calculated once * Use unless * Simplify parseURIReference' and avoid an unnecessary call to length * Use <$> instead of reimplementing it * Use swap instead of reimplementing it * Remove eta-expansion that's been unnecessary since 90f5dd8 * Use tailDef instead of reimplementing it * Use second instead of fmap, per @tarleb
2020-01-31Support 'bibliography' and 'csl' fields in defaults file.John MacFarlane1-23/+1
Move addMeta from T.P.App.CommandLineOptions to T.P.App.Opt. (not an api change because modules not exported)
2020-01-08Change setVariable to use Text instead of String.John MacFarlane1-10/+10
This avoids some unnecessary unpacking. (This is only an internal module so it's not an API change.)
2019-12-26Use HTTPS in copyright message (#6010)Felix Yan1-1/+1
Since the website now redirect to https automatically, it would be nice to just use https in the help text.
2019-12-04Fix regression with behavior of --variable.John MacFarlane1-2/+8
Previously -Vfoo=1 -Vfoo=2 would produce a list value for foo; with 2.8 it produced just '2'. This commit restores the earlier beahvior. Closes #5962.
2019-11-26Add pdf to list of output formats (`--list-output-formats`).John MacFarlane1-1/+2
Closes #5938.
2019-11-17Reverted the behavior change with `--title-prefix`.John MacFarlane1-1/+2
It now implies `--standalone` again, as before.
2019-11-17Ensure that options imply `--standalone` even in defaults file.John MacFarlane1-14/+15
Certain options (`--self-contained`, `--include-in-header`, etc.) imply `--standalone`. We now handle this after option parsing so that it affects options specified in defaults files too. Behavior change: `--title-prefix` no longer implies `--standalone`.
2019-11-14Change optInputFiles to a `Maybe [FilePath]`.John MacFarlane1-1/+5
`Nothing` means: nothing specified. `Just []` means: an empty list specified (e.g. in defaults). Potentially these could lead to different behavior: see #5888.
2019-11-12Switch to new pandoc-types and use Text instead of String [API change].despresc1-49/+52
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-11-07Fix list fields in Opt so they aren't reversed.John MacFarlane1-4/+4
Previously optIncludeInHeader, etc. were in reverse order. This has been changed to promote #5881. Note also that the `sourcefile` variable used to be sometimes a string, sometimes a list (when there was more than one). Now it is always a list.
2019-11-07Change merge behavior for metadata.John MacFarlane1-1/+1
Previously, if a document contained two YAML metadata blocks that set the same field, the conflict would be resolved in favor of the first. Now it is resolved in favor of the second (due to a change in pandoc-types). This makes the behavior more uniform with other things in pandoc (such as reference links and `--metadata-file`).
2019-11-06Add and apply filters in order (not reversed).John MacFarlane1-4/+2
This changes `applyFilters` from Text.Pandoc.Filter so that it does a left fold rather than a right fold, applying the filters in the order listed. [behavior change] The command-line arguments are accumulated in order instead of reverse order. A first step twoards #5881.
2019-11-02Move extension-adding to applyDefaultsJohn MacFarlane1-6/+5
2019-11-01Revert "ALlow multiple comma-separated files for `--defaults`."John MacFarlane1-7/+6
This reverts commit e96f3fd813b3f8b73c3457ff6e9177e2a4a74164.
2019-11-01ALlow multiple comma-separated files for `--defaults`.John MacFarlane1-6/+7
2019-11-01Factor out applyDefaults in T.P.A.CommandLineOptions.John MacFarlane1-20/+24
2019-11-01`--defaults` improvements.John MacFarlane1-1/+1
- ToYAML instance is now for `Opt -> Opt`, rather than `Opt`. - This allows us to handle `--defaults` without clobbering all the options that occur prior to `--defaults` on the command line. (Note, however, that options in `--defaults` can replace these options if the `--defaults` option is used after them, which may be a bit confusing given the name.) - `--defaults` may now be used multiple times on the command line, allowing users to break defaults into different chunks.
2019-10-11Remove redundant import.John MacFarlane1-1/+0
2019-10-10Improve parsing of --defaults.John MacFarlane1-19/+19
- Add FromYAML instances to Opt and to all subsidiary types. - Remove the use of HsYAML-aeson, which doesn't give good position information on errors. - Rename some fields in Opt to better match cli options or reflect what the ycontain [API change]: + optMetadataFile -> optMetadataFiles + optPDFEngineArgs -> optPDFEngineOpts + optWrapText -> optWrap - Add IpynbOutput enumerated type to Text.Pandoc.App.Opts. Use this instead fo a string for optIpynbOutput. - Add FromYAML instance for Filter in Text.Pandoc.Filters. With these changes parsing of defaults files should be complete and should give decent error messages. Now (unlike before) we get an error if an unknown field is used.
2019-10-10Add -d as synonym for --defaults.John MacFarlane1-1/+1
2019-10-10Reorder options in `--help`.John MacFarlane1-58/+58
2019-10-10`--metadata-file`: when multiple files specified, second takes precedence...John MacFarlane1-1/+1
on conflicting fields. This changes earlier behavior (but not in a release), where first took precedence. Note that this may seem inconsistent with the behavior of multiple YAML blocks within a document, where the first takes precedence. Still, it is convenient to be able to override defaults with options later on the command line.
2019-10-10Remove unnecessary import.John MacFarlane1-1/+0
2019-10-09--defaults: add .yaml extension if absent, look in user data dir...John MacFarlane1-13/+30
under "defaults" subdirectory.
2019-10-09T.P.App.Opt: rename optReader, optWriter as optFrom, optTo.John MacFarlane1-2/+2
This will allow to: and from: in defaults.
2019-10-09Make sure that input-files works in --default files.John MacFarlane1-1/+1
2019-10-09Basic changes for MathJax 3.zorkow1-1/+1
2019-10-09Initial implementation of --defaults option.John MacFarlane1-2/+23
Need documentation.
2019-10-09T.P.App.Opt: Changed optMetadata to Meta, to allow structured values.John MacFarlane1-4/+28
[API change] The current behavior of the `--metadata` option stays the same.
2019-10-09Change optVariables from [(String, String)] to Context Text.John MacFarlane1-6/+17
In Text.Pandoc.App.Opt [API change].
2019-10-07Remove derive_json_via_th flag; always use TH.John MacFarlane1-3/+0
This cuts down on code duplication and reduces the chance for errors. See #4083.
2019-10-07Remove redundant import.John MacFarlane1-1/+0
2019-10-06Opt: Change optHighlightStyle to a Maybe String instead of Maybe Style.John MacFarlane1-19/+21
Do the parsing/loading of themes later, after option parsing.
2019-10-06Code cleanupJohn MacFarlane1-19/+23
2019-10-06Text.Pandoc.App.Opt: Remove optBaseHeaderLevel from Opt.John MacFarlane1-1/+1
We now just use optShiftHeadingLevelBy, to avoid redundancy.
2019-10-06Text.Pandoc.App.Opt: Change optShiftHeadingLevel to optShiftHeadingLevelBy...John MacFarlane1-1/+1
to match the option.
2019-09-29Raise error on unsupported extensions. Closes #4338.John MacFarlane1-5/+18
+ An error is now raised if you try to specify (enable or disable) an extension that does not affect the given format, e.g. `docx+pipe_tables`. + The `--list-extensions[=FORMAT]` option now lists only extensions that affect the given FORMAT. + Text.Pandoc.Error: Add constructors `PandocUnknownReaderError`, `PandocUnknownWriterError`, `PandocUnsupportedExtensionError`. [API change] + Text.Pandoc.Extensions now exports `getAllExtensions`, which returns the extensions that affect a given format (whether enabled by default or not). [API change] + Text.Pandoc.Extensions: change type of `parseFormatSpec` from `Either ParseError (String, Extensions -> Extensions)` to `Either ParseError (String, [Extension], [Extension])` [API change]. + Text.Pandoc.Readers: change type of `getReader` so it returns a value in the PandocMonad instance rather than an Either [API change]. Exceptions for unknown formats and unsupported extensions are now raised by this function and need not be handled by the calling function. + Text.Pandoc.Writers: change type of `getWriter` so it returns a value in the PandocMonad instance rather than an Either [API change]. Exceptions for unknown formats and unsupported extensions are now raised by this function and need not be handled by the calling function.
2019-09-10Add --shift-heading-level-by option.John MacFarlane1-2/+15
Deprecate --base-heading-level. The new option does everything the old one does, but also allows negative shifts. It also promotes the document metadata (if not null) to a level-1 heading with a +1 shift, and demotes an initial level-1 heading to document metadata with a -1 shift. This supports converting documents that use an initial level-1 heading for the document title. Closes #5615.
2019-09-08Add -L option as shortcut for --lua-filter.John MacFarlane1-1/+1
2019-08-24Change optMetadataFile type from Maybe to List (#5702)Owen McGrath1-1/+1
Changed optMetadataFile from `Maybe FilePath` to `[FilePath]`. This allows for multiple YAML metadata files to be added. The new default value has been changed from `Nothing` to `[]`. To account for this change in `Text.Pandoc.App`, `metaDataFromFile` now operates on two `mapM` calls (for `readFileLazy` and `yamlToMeta`) and a fold. Added a test (command/5700.md) which tests this functionality and updated MANUAL.txt, as per the contributing guidelines. With the current behavior, using `foldr1 (<>)`, values within files specified first will be used over those in later files. (If the reverse of this behavior would be preferred, it should be fixed by changing foldr1 to foldl1.)
2019-07-28Use doctemplates 0.3, change type of writerTemplate.John MacFarlane1-4/+5
* Require recent doctemplates. It is more flexible and supports partials. * Changed type of writerTemplate to Maybe Template instead of Maybe String. * Remove code from the LaTeX, Docbook, and JATS writers that looked in the template for strings to determine whether it is a book or an article, or whether csquotes is used. This was always kludgy and unreliable. To use csquotes for LaTeX, set `csquotes` in your variables or metadata. It is no longer sufficient to put `\usepackage{csquotes}` in your template or header includes. To specify a book style, use the `documentclass` variable or `--top-level-division`. * Change template code to use new API for doctemplates.
2019-03-08Allow -o/--output to be used with --print-*.John MacFarlane1-6/+15
`--print-default-data-file` `--print-highlighting-style` `--print-default-template` Note that `-o` must occur BEFORE the `--print*` command on the command line (this is documented). Closes #5357.
2019-03-07Add tectonic as an option for --pdf-engine. (#5346)Cormac Relf1-1/+1
Closes #5345 Runs tectonic on STDIN instead of a temporary .tex file, so that it looks in the working directory for `\include` and `\input` like the rest of the engines. Allows overriding the output directory without messing up the args with `--pdf-engine-opt=--outdir --pdf-engine-opt="$DIR"`.
2019-03-02Use XDG data directory for user data directory.John MacFarlane1-9/+5
Instead of `$HOME/.pandoc`, the default user data directory is now `$XDG_DATA_HOME/pandoc`, where `XDG_DATA_HOME` defaults to `$HOME/.local/share` but can be overridden by setting the environment variable. If this directory is missing, then `$HOME/.pandoc` is searched instead, for backwards compatibility. However, we recommend moving local pandoc data files from `$HOME/.pandoc` to `$HOME/.local/share/pandoc`. On Windows the default user data directory remains the same. Closes #3582.
2019-03-01Rearrange --help output in a more rational way.John MacFarlane1-279/+280
Closes #5336.
2019-03-01Remove license boilerplate.John MacFarlane1-18/+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-28Shared: add filterIpynbOutput. [API change]John MacFarlane1-1/+11
Add command line option `--ipynb-output=all|none|best`. Closes #5339.