Commit Graph
7660 Commits
Author SHA1 Message Date
Albert Krewinkel fa838deefc Lua: remove pandoc.utils.text (#7720)
The new `pandoc.Inlines` function behaves identical on string input, but
allows other Inlines-like arguments as well.

The `pandoc.utils.text` function could be written as

    function pandoc.utils.text (x)
      assert(type(x) == 'string')
      return pandoc.Inlines(x)
    end
2021-11-29 09:12:30 -08:00
Albert Krewinkel b9222e5cb1 Lua: add constructors pandoc.Blocks and pandoc.Inlines
The functions convert their argument into a list of Block and Inline
values, respectively.
2021-11-28 16:02:42 +01:00
Albert Krewinkel 3692a1d1e8 Lua: use package pandoc-lua-marshal (#7719)
The marshaling functions for pandoc's AST are extracted into a separate
package. The package comes with a number of changes:

  - Pandoc's List module was rewritten in C, thereby improving error
    messages.

  - Lists of `Block` and `Inline` elements are marshaled using the new
    list types `Blocks` and `Inlines`, respectively. These types
    currently behave identical to the generic List type, but give better
    error messages. This also opens up the possibility of adding
    element-specific methods to these lists in the future.

  - Elements of type `MetaValue` are no longer pushed as values which
    have `.t` and `.tag` properties. This was already true for
    `MetaString` and `MetaBool` values, which are still marshaled as Lua
    strings and booleans, respectively. Affected values:

      + `MetaBlocks` values are marshaled as a `Blocks` list;

      + `MetaInlines` values are marshaled as a `Inlines` list;

      + `MetaList` values are marshaled as a generic pandoc `List`s.

      + `MetaMap` values are marshaled as plain tables and no longer
        given any metatable.

  - The test suite for marshaled objects and their constructors has
    been extended and improved.

  - A bug in Citation objects, where setting a citation's suffix
    modified it's prefix, has been fixed.
2021-11-27 17:08:01 -08:00
John MacFarlane 0d25232bbf LaTeX reader: Fix semantics of \ref.
We were including the ams environment type in addition
to the number. This is proper behavior for `\cref` but
not for `\ref`.  To support `\cref` we need to store
the environment label separately.
2021-11-24 19:48:56 -08:00
John MacFarlane 2ca3993c67 LaTeX reader: improve references.
- Resolve references to theorem environments.
- Remove Span caused by "label" in figure, table, and theorem
  environments; this had an id that duplicated the environments' id.

See #813.
2021-11-24 18:41:20 -08:00
John MacFarlane 7726b69cd3 LaTeX reader: omit visible content for \label{...}.
Previously we included the text of the label in square brackets,
but this is undesirable in many cases.

See discussion in
<https://github.com/jgm/pandoc/issues/813#issuecomment-978232426>.
2021-11-24 14:47:00 -08:00
John MacFarlane 6072bdcec9 HTML reader: parse attributes on links and images.
Closes #6970.
2021-11-24 11:01:55 -08:00
Albert Krewinkel a8638894ab Lua: allow single elements as singleton MetaBlocks/MetaInlines
Single elements should always be treated as singleton lists in the Lua
subsystem.
2021-11-24 16:54:12 +01:00
John MacFarlane 79e6f8db13 Improve detection of pipe table line widths.
Fixed calculation of maximum column widths in pipe tables.
It is now based on the length of the markdown line, rather
than a "stringified" version of the parsed line.  This should
be more predictable for users. In addition, we take into account
double-wide characters such as emojis.

Closes #7713.
2021-11-23 13:29:25 -08:00
Albert Krewinkel bffd74323c Lua: add function pandoc.utils.text (#7710)
The function converts a string to `Inlines`, treating interword spaces
as `Space`s or `SoftBreak`s. If you want a `Str` with literal spaces,
use `pandoc.Str`.

Closes: #7709
2021-11-23 09:32:53 -08:00
Albert Krewinkel 0c0945b93c Lua: split strings into words when treating them as Inline list (#7712)
Using a Lua string where a list of inlines is expected will cause the
string to be split into words, replacing spaces and tabs into
`pandoc.Space()` elements and newlines into `pandoc.SoftBreak()`.

The previous behavior was to treat the string `s` as `{pandoc.Str(s)}`.
The old behavior can be recovered by wrapping the string into a table
`{s}`.
2021-11-23 09:30:48 -08:00
Jörn Krenzer 17495bf8eb Add .yml to Citeproc formatFromExtension (#7706)
Make Citeproc recognize files with .yml extension (in addition to .yaml)
as YAML bibliographies.

Closes #7707.
2021-11-22 08:42:09 -08:00
John MacFarlane 3f595659a3 yamlBsToRefs: allow multiple YAML documents.
Some people use `---` as the end delimiter in YAML
bibliography files, which causes the `yaml` library
to emit an error unless we explicitly allow multiple
YAML documents (and just consider the first).

In T.P.Readers.Metadata
2021-11-21 10:22:10 -08:00
Albert KrewinkelandAner Lucero 96a4bbe264 Capture alt-text in JATS figures (#7703)
Co-authored-by: Aner Lucero <4rgento@gmail.com>
2021-11-20 09:48:01 -08:00
Albert Krewinkel c1a82896c6 Lua: fix global module loading (#7701) 2021-11-19 20:59:23 +01:00
John MacFarlane 2b23861948 Remove unused line. 2021-11-19 10:21:23 -08:00
John MacFarlane 4f2eac88aa MediaWiki writer: fix code for generating spans for header IDs.
We need to generate a span when the header's ID doesn't match
the one MediaWiki would generate automatically.  But MediaWiki's
generation scheme is different from ours (it uses uppercase letters,
and `_` instead of `-`, for example).

This means that in going from markdown -> mediawiki, we'll now get
spans before almost every heading, unless explicit identifiers are
used that correspond to the ones MediaWiki auto-generates.
This is uglier output but it's necessary for internal links to
work properly.

See #7697.
2021-11-19 09:05:19 -08:00
John MacFarlane df5ae1c186 HTML writer: Don't create invalid data- attribute...
for empty attribute key. (It would be better to make these
unrepresentable in the type system, but for now this is
an improvement.)

Closes #7546.
2021-11-19 08:50:18 -08:00
John MacFarlane 25bba0cc62 MediaWiki writer: use HTML spans for anchors when header has id.
Closes #7697.
2021-11-18 21:15:51 -08:00
willj-dev 005dc7ce56 RST reader: handle class attribute for for custom roles (#7700)
Previously the class attribute was ignored, and the name of the role used as the class.
Closes #7699.
2021-11-18 17:33:57 -08:00
John MacFarlane 1312594526 Babel mappings: use ancientgreek for grc. 2021-11-17 16:32:36 -08:00
Albert Krewinkel cd91f72843 Lua: set lpeg, re as globals; allow shared lib access via require
The `lpeg` and `re` modules are loaded into globals of the respective
name, but they are not necessarily registered as loaded packages. This
ensures that

- the built-in library versions are preferred when setting the globals,
- a shared library is used if pandoc has been compiled without `lpeg`,
  and
- the `require` mechanism can be used to load the shared library if
  available, falling back to the internal version if possible and
  necessary.
2021-11-17 10:03:04 +01:00
Albert Krewinkel 305a4f406d Lua: make loading of global LPeg modules more robust
Ignore errors if the normal package mechanism failed; this not only
covers the case of modules being unavailable on the system, but also
works if the modules are present, but fail to load for some reason.

This makes the built-in package version a true fallback.
2021-11-16 12:06:22 +01:00
John MacFarlane c19f063420 Markdown writer: don't create autolinks when this loses information.
Previously we sometimes lost attributes when rendering links as autolinks.

Closes #7692.
2021-11-15 11:06:50 -08:00
Albert Krewinkel ea268fd8a7 LaTeX reader: add rudimentary support for \autoref (#7693) 2021-11-15 09:40:50 -08:00
Albert Krewinkel 96a01451ef JATS writer: ensure figures are wrapped with <p> in list items.
This prevents the generation of invalid output.
2021-11-12 13:29:08 +01:00
Albert Krewinkel da96e1ff40 JATS writer: add URL to element citation entries
The URL of a reference, if present, is added in tag `<uri>` to
element-citation entries.
2021-11-12 11:56:58 +01:00
Christian Despres abdfefebdf Writers.Shared: Improve toLegacyTable.
Closes #7683.
(PR #7684)
2021-11-11 20:55:37 -08:00
Albert Krewinkel ebf7f782d3 Lua: load re module available into global of the same name 2021-11-11 10:32:37 -08:00
John MacFarlane 6fb2973a58 Fix parsing of % in bibtex fields.
Closes #7678 (a bug introduced by 0a45f26).
2021-11-10 08:52:04 -08:00
John MacFarlane 03f9a0c61e Require ghc >= 8.6, base >= 4.12.
This allows us to get rid of the old custom prelude and
some crufty cpp.  But the primary reason for this is that
conduit has bumped its base lower bound to 4.12, making it
impossible for us to support lower base versions.
2021-11-09 23:43:12 -08:00
John MacFarlane 5fb3b82bdf Accept empty --metadata-file.
Closes #7675. This is a regression from 2.15 behavior.
2021-11-09 12:59:26 -08:00
Albert Krewinkel d4c73d5e65 Lua: fix argument order in constructor pandoc.Cite.
This restores the old behavior; argument order had been switched
accidentally in pandoc 2.15.
2021-11-09 14:45:36 +01:00
John MacFarlane 9c153e3d6e With -t latex-smart, don't generate \ldots from ellipsis.
Instead just use unicode ellipsis.
Closes #7674.
2021-11-08 11:59:13 -08:00
John MacFarlane 0a45f2600a Properly handle commented lines in BibTeX/BibLaTeX.
Closes #7668.
2021-11-08 10:15:53 -08:00
Rowan Rodrik van der Molen 40aa74badc Add <titleabbr> support to DocBook reader 2021-11-08 07:30:20 -08:00
Albert Krewinkel ab0fe676a8 Lua: ensure that 're' module is always available.
The module is shipped with LPeg.
2021-11-08 12:22:33 +01:00
John MacFarlane cc46667953 LaTeX reader: add 'uri' class when parsing \url.
Closes #7672.
2021-11-07 21:08:20 -08:00
John MacFarlane 213913f025 Pass ReaderOptions to custom readers as second parameter. 2021-11-06 16:47:13 -07:00
Albert Krewinkel 4a3b3b1ac6 Lua: add Pushable instance for ReaderOptions 2021-11-06 17:58:44 +01:00
Albert Krewinkel 6b462e5933 Lua: allow to pass custom reader options to pandoc.read
Reader options can now be passed as an optional third argument to
`pandoc.read`. The object can either be a table or a ReaderOptions value
like `PANDOC_READER_OPTIONS`. Creating new ReaderOptions objects is
possible through the new constructor `pandoc.ReaderOptions`.

Closes: #7656
2021-11-06 09:04:29 -07:00
John MacFarlane ee2f0021f9 Add interface for custom readers written in Lua. (#7671)
New module Text.Pandoc.Readers.Custom, exporting
readCustom [API change].

Users can now do `-f myreader.lua` and pandoc will treat the
script myreader.lua as a custom reader, which parses an input
string to a pandoc AST, using the pandoc module defined for
Lua filters.

A sample custom reader can be found in data/reader.lua.

Closes #7669.
2021-11-05 22:10:29 -07:00
Rowan Rodrik van der MolenandRowan Rodrik van der Molen 7a70a46c03 Support for <indexterm>s when reading DocBook (#7607)
* Support for <indexterm>s when reading DocBook
* Update implementation status of `<n-ary>` tags
* Remove non-idiomatic parentheses
* More complete `<indexterm>` support, with tests

Co-authored-by: Rowan Rodrik van der Molen <rowan@ytec.nl>
2021-11-05 10:22:38 -07:00
Albert Krewinkel f32fe9cbd5 T.P.Error: sort errors in handleError by exit code 2021-11-05 13:21:21 +01:00
Albert Krewinkel ebdb39b3b4 Lua: display Pandoc values using their native Haskell representation 2021-11-05 13:11:02 +01:00
Albert Krewinkel d089d799e7 Lua: always load lpeg as global module 2021-11-05 09:21:50 +01:00
Albert Krewinkel a1b6bf69f2 Lua: include lpeg module (#7649)
Compiles the 'lpeg' library (Parsing Expression Grammars For Lua) into
the program.

Package maintainers may choose to rely on package dependencies to make
lpeg available, in which case they can compile the with the constraint
`lpeg +rely-on-shared-lpeg-library`.
2021-11-04 19:25:29 -07:00
John MacFarlane 0b254ea4af Allow plain to be used in raw attribute syntax. 2021-11-04 10:11:57 -07:00
Albert Krewinkel c256ef34b3 Lua: add missing space in "package not found" message
Closes: #7658
2021-11-03 13:36:15 +01:00
John MacFarlane fa83246d7d Markdown reader: Improve inlinesInBalancedBrackets.
This is just a small improvement in terms of performance,
but it's simpler and more direct code.

Also, we avoid parsing interparagraph spaces in balanced
brackets, as the original did.
2021-11-02 23:25:27 -07:00