Commit graph

192 commits

Author SHA1 Message Date
John MacFarlane
300d94ac24 Deleted whitespace at end of source lines. 2017-01-25 17:07:39 +01:00
Jesse Rosenthal
04545c92c8 Clean up Text.Pandoc
We had primed versions of all the Writer types and getWriter
functions, as we transitioned. Now that we're using the new ones
exclusively, we'll get rid of the old ones, and get rid of the primes in
the names.
2017-01-25 17:07:39 +01:00
Jesse Rosenthal
04487779b2 Convert all writers to use PandocMonad.
Since PandocMonad is an instance of MonadError, this will allow us, in a
future commit, to change all invocations of `error` to `throwError`,
which will be preferable for the pure versions. At the moment, we're
disabling the lua custom writers (this is temporary).

This requires changing the type of the Writer in Text.Pandoc. Right now,
we run `runIOorExplode` in pandoc.hs, to make the conversion easier. We
can switch it to the safer `runIO` in the future.

Note that this required a change to Text.Pandoc.PDF as well. Since
running an external program is necessarily IO, we can be clearer about
using PandocIO.
2017-01-25 17:07:39 +01:00
John MacFarlane
b596d20605 Some fixes to permit breezeDark style. 2017-01-19 16:32:35 +01:00
John MacFarlane
46b1c31925 Add breezeDark to the list of highlighting styles. 2017-01-19 15:59:57 +01:00
John MacFarlane
9d781b1454 Updates to use skylighting rather than highlighting-kate.
So far this just reproduces capacity.

Later we'll be able to add features like warning
messages, dynamic loading of xml syntax definitions,
and dynamic loading of themes.
2016-12-23 18:07:49 -07:00
John MacFarlane
9b9ec99ee8 We no longer need the MathMLInHTML.js shim from 2004! 2016-12-09 21:18:02 +01:00
John MacFarlane
1fde7a340b Set PANDOC_VERSION environment variable for filters.
Closes #2640.
2016-12-08 11:09:40 +01:00
John MacFarlane
b0733190b0 Fixed bash completion for filenames with spaces.
Closes #2749.
2016-12-07 17:37:27 +01:00
John MacFarlane
fb8a2540bd Options: Removed writerStandalone, made writerTemplate a Maybe.
Previously setting writerStandalone = True did nothing unless
a template was provided in writerTemplate.  Now a fragment
will be generated if writerTemplate is Nothing; otherwise,
the specified template will be used and standalone output
generated.  [API change]
2016-11-30 15:34:58 +01:00
Albert Krewinkel
1fc07ff4da Refactor top-level division selection (#3261)
The "default" option is no longer represented as `Nothing` but via a new
type constructor, making the `Maybe` wrapper superfluous.

The default behavior of using heuristics can now be enabled explicitly
by setting `--top-level-division=default`.

API change (`Text.Pandoc.Options`): The `Division` type was renamed to
`TopLevelDivision`. The `Section`, `Chapter`, and `Part` constructors
were renamed to `TopLevelSection`, `TopLevelChapter`, and
`TopLevelPart`, respectively. An additional `TopLevelDefault`
constructor was added, which is now also the new default value of the
`writerTopLevelDivision` field in `WriterOptions`.
2016-11-27 20:31:04 +01:00
Albert Krewinkel
baa25362a4 Allow to overwrite top-level division type heuristics (#3258)
Pandoc uses heuristics to determine the most resonable top-level
division type when emitting LaTeX or Docbook markup.  It is now possible
to overwrite this implicitly set top-level division via the
`top-level-division` command line parameter.

API change (`Text.Pandoc.Options`): the type of the
`writerTopLevelDivision` field in of the `WriterOptions` data type is
altered from `Division` to `Maybe Division`. The field's default value
is changed from `Section` to `Nothing`.

Closes: #3197
2016-11-26 21:43:46 +01:00
John MacFarlane
77753747d1 Cleaned up filter-finding.
* Removed a hardcoded '/' that may have caused problems with Windows
  paths.
* Cleaned up the logic.
2016-11-21 22:18:05 +01:00
John MacFarlane
ac6dfe0b4e Changed resolution of filter paths.
- We now first treat the argument of `--filter` as a full (absolute
  or relative) path, looking for a program there.  If it's found,
  we run it.
- If not, and if it is a simple program name or a relative path,
  we try resolving it relative to `$DATADIR/filters`.
- If this fails, then we treat it as a program name and look in
  the user's PATH.

Previously if you did `--filter foo` and you had `foo` in your
path and also an executable `foo` in your working directory,
the one in the path would be used. Now the one in the working
directory is used.

In addition, when you do `--filter foo/bar.hs`, pandoc will now
find a filter `$DATADIR/filters/foo/bar.hs` -- assuming there
isn't a `foo/bar.hs` relative to the working directory.

@jkr note the slight revision of what we had before.
This was motivated by the idea that one might clone filter
repositories into the filters subdirectory; it is nice to
be able to run them as `reponame/filtername`.
2016-11-21 15:32:27 +01:00
John MacFarlane
20b2269fb7 In --version, trap error in getAppUserDataDirectory.
This fixes a crash with `pandoc --version` on unusual systems with
no real user (e.g. SQL Server 2016).  Closes #3241.
2016-11-18 11:25:13 +01:00
John MacFarlane
7db4dd46dc Allow file:// URIs as arguments.
Also improved default reader format detection.  Previously
with a URI ending in .md or .markdown, pandoc would assume HTML input.
Now it treats these as markdown.

Closes #3196.
2016-11-05 20:24:29 +01:00
John MacFarlane
e6422b1deb Improved error if they give wrong arg to --top-level-division. 2016-11-03 11:17:10 +01:00
John MacFarlane
626d0b7193 Print highlighting-kate version in --version. 2016-10-26 21:57:29 +02:00
John MacFarlane
d51e475bad Export Text.Pandoc.Error in Text.Pandoc.
[API change]
2016-10-24 22:31:36 +02:00
John MacFarlane
10bd57ecb6 Fixed typo in deprecation warning. 2016-10-24 16:05:26 +02:00
John MacFarlane
738806112b Allow binary formats to be written to stdout unless tty output.
Only works on posix.  On Windows, pandoc works as before and
requires an output file parameter for binary formats.

Closes #2677.
2016-10-23 22:16:00 +02:00
John MacFarlane
273d90bc19 Added --list-* options.
Added `--list-input-formats`, `--list-output-formats`,
`--list-extensions`, `--list-highlight-languages`,
`--list-highlight-styles`.

Removed list of highlighting languages from `--version`
output.

Removed list of input and output formats from default
`--help` output.

Closes #3173.
2016-10-23 21:35:54 +02:00
Albert Krewinkel
595a171407
Add option for top-level division type
The `--chapters` option is replaced with `--top-level-division` which allows
users to specify the type as which top-level headers should be output. Possible
values are `section` (the default), `chapter`, or `part`.

The formats LaTeX, ConTeXt, and Docbook allow `part` as top-level division, TEI
only allows to set the `type` attribute on `div` containers.  The writers are
altered to respect this option in a sensible way.
2016-10-19 13:12:57 +02:00
Oliver Matthews
23fb52ef7d
Add --parts command line option to LaTeX writer.
Add --parts command line argument.
This only effects LaTeX writer, and only for non-beamer output formats.
It changes the output levels so the top level is 'part', the next
'chapter' and then into sections.
2016-09-06 21:43:45 +02:00
Jesse Rosenthal
14209b2ba0 Add reference-location options to executable. 2016-10-11 15:17:07 -04:00
KolenCheung
4d621f43d9 Replace Google Chart API by CodeCogs 2016-10-06 11:04:37 +02:00
KolenCheung
f7d92b5765 Update KaTeX to v0.6.0 2016-10-03 23:53:16 -07:00
Jakob Voß
06fa6986d1 Execute .js filters with node 2016-09-30 07:20:43 +02:00
Jesse Rosenthal
ec6d0638be Check $DATADIR/filters for filters
If the `$DATADIR/filters` is present, pandoc will look in it for filters
specified without a path, before looking in the $PATH. Note that unlike
executables in $PATH, the `filters` dir may contain scripts that are not
executable (pandoc will try to execute them using an associated
interpreter, if possible).

Note: the `filters` dir has priority over the user path. In order of
preference, pandoc will look in:

  1. a specified full or relative path (executable or non-executable)
  2. `$DATADIR/filters` (executable or non-executable)
  3. `$PATH` (executable only)

This closes #3127.
2016-09-27 11:56:39 -04:00
Waldir Pimenta
35e1d6d9f7 synchronize spacing of footnotes in help output
- remove a space between `[` and `*` in the list of input formats, to match the list of output formats
- add space after the `*`s, for improved readability
2016-08-16 15:54:24 +01:00
John MacFarlane
58d60b1c85 Changed email-obfuscation default to no obfuscation.
- `writerEmailObfuscation` in `defaultWriterOptions` is now
  `NoObfuscation`
- the default for the command-line `--email-obfuscation` option is
  now `none`.

Closes #2988.
2016-06-20 10:37:23 -07:00
John MacFarlane
054e6abd0d Revert "New method for checking for presence of tex program."
This reverts commit 285bbf61cf.
2016-05-12 21:01:30 -07:00
John MacFarlane
5d8d8b0de1 Revert "Use shell instead of proc to check for latex program."
This reverts commit ee45be5723.
2016-05-12 21:00:33 -07:00
John MacFarlane
1b8d006ac8 Revert "Require process >= 1.2.1."
This reverts commit 07a4320ba9.
2016-05-12 20:59:08 -07:00
John MacFarlane
07a4320ba9 Require process >= 1.2.1.
We need `createProcess_` to be exported.
2016-05-12 11:08:56 -07:00
John MacFarlane
1ddc71e01e Added some CSS to handle older versions of process.
`createProcess_` is in Internals until process 1.2.1.
2016-05-11 17:43:47 -07:00
John MacFarlane
ee45be5723 Use shell instead of proc to check for latex program.
This should get .bat files on Windows.  Closes #2903, with luck.
2016-05-11 14:01:18 -07:00
John MacFarlane
02993c2cc7 Made detection of latex program more robust.
Catch not-found error.
Improves on 285bbf61cf to fix #2903.
2016-05-10 09:29:11 -07:00
John MacFarlane
285bbf61cf New method for checking for presence of tex program.
Now instead of using `findExecutable`, which has limitations
on Windows, we just do `progname --version` and see if it
returns successfully.  Closes #2903.
2016-05-09 20:52:20 -07:00
KolenCheung
59ddbdee4f Loading the full MathJax config to maximize loading speed 2016-05-09 19:49:09 -07:00
John MacFarlane
e08c26c777 Change default mathjax setup to use TeX-AMS_CHTML configuration.
This is designed for cases where the input is always TeX and maximal
conformity with TeX is desired.

It seems to be smaller and load faster than what we used before.
See #2858.
2016-05-09 13:40:13 -07:00
John MacFarlane
2571328700 Use new CommonHTML output for MathJax (updated default MathJax URL).
Closes #2858.
2016-05-09 13:29:35 -07:00
John MacFarlane
3660e55e48 Fixed copyright dates. 2016-03-22 17:17:21 -07:00
Jesse Rosenthal
a8a2d4f224 Fix stdin handling for file-scope
Regardless of input type, we should use default handling if we are
dealing with stdin. In other words, there should be no file-scope if
there are no files. This was an issue with pandoc json, which could be
piped on stdin, but which was read by default with `--file-scope`.
2016-03-21 17:02:07 -04:00
Jesse Rosenthal
09b4f294bf pandoc.hs: Also use filescope for json files.
JSON files have metadata and list structure, so they can't be simply
catted, but they're useful as intermediate build files in large projects.
2016-03-15 13:08:34 -04:00
Jesse Rosenthal
5c055b4cf3 Introduce file-scope parsing (parse-before-combine)
Traditionally pandoc operates on multiple files by first concetenating
them (around extra line breaks) and then processing the joined file. So
it only parses a multi-file document at the document scope. This has the
benefit that footnotes and links can be in different files, but it also
introduces a couple of difficulties:

  - it is difficult to join files with footnotes without some sort of
    preprocessing, which makes it difficult to write academic documents
    in small pieces.

  - it makes it impossible to process multiple binary input files, which
    can't be catted.

  - it makes it impossible to process files from different input
    formats.

This commit introduces alternative method. Instead of catting the files
first, it parses the files first, and then combines the parsed
output. This makes it impossible to have links across multiple files,
and auto-identified headers won't work correctly if headers in multiple
files have the same name. On the other hand, footnotes across multiple
files will work correctly and will allow more freedom for input formats.

Since ByteStringReaders can currently only read one binary file, and
will ignore subsequent files, we also changes the behavior to
automatically parse before combining if using the ByteStringReader. If
we use one file, it will work as normal. If there is more than one file
it will combine them after parsing (assuming that the format is the
same).

Note that this is intended to be an optional method, defaulting to
off. Turn it on with `--file-scope`.
2016-03-15 12:52:51 -04:00
csforste
25a9ca697a Add TEI Writer. 2016-01-19 14:03:57 -05:00
John MacFarlane
a5efd2af11 Improved default template lookup for custom lua scripts.
Previously, if you tried to do `pandoc -s -t /path/to/lua/script.lua`,
pandoc would look for the template in
`~/.pandoc/templates/default./path/to/lua/script.lua`.
With this change it will look in the more reasonable
`~/.pandoc/templates/default.script.lua`.

This makes it possible to store default templates for custom
writers.

Closes #2625.
2016-01-06 15:47:09 -08:00
John MacFarlane
197f301795 Revert "Make file globbing work on windows."
This reverts commit 363ecfebc3.
2016-01-06 11:11:59 -08:00
John MacFarlane
363ecfebc3 Make file globbing work on windows.
Windows cmd doesn't expand wildcards; the application has to
do this.  So on windows we use 'glob' to expand.
2016-01-06 10:44:56 -08:00