aboutsummaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorFilesLines
2021-12-11fix(IpynbOutput)!: rank always favors output formatKolen Cheung1-7/+7
Previously, both `fmt == f` case and Image have a rank of 1. In the end, e.g. from ipynb to html conversion, if both html and image exists, it actually prefers the image. This commit changes this, so that fmt == f is always highest rank, and rank never collides. This is achieved by keeping fmt == f case having rank 1, and every other rank increased by 1.
2021-12-11Custom reader: ensure old Readers continue to workAlbert Krewinkel2-16/+48
Retry conversion by passing a string instead of sources when the `Reader` fails with a message that hints at an outdated function. A deprecation notice is reported in that case.
2021-12-11Custom reader: pass list of sources instead of concatenated textAlbert Krewinkel3-6/+55
The first argument passed to Lua `Reader` functions is no longer a plain string but a richer data structure. The structure can easily be converted to a string by applying `tostring`, but is also a list with elements that contain each the *text* and *name* of each input source as a property of the respective name. A small example is added to the custom reader documentation, showcasing its use in a reader that creates a syntax-highlighted code block for each source code file passed as input. Existing readers must be updated.
2021-12-10Switch to released pandoc-lua-marshal-0.1.2Albert Krewinkel1-0/+1
Cell values are now marshaled as userdata objects; a constructor function for table cells is provided as `pandoc.Cell`.
2021-12-09ipynb writer: handle cell output with raw block of markdown (#7563)Kolen Cheung1-0/+2
Write RawBlock of markdown in code-cell output. #7561 makes the ipynb reader reads code-cell output with mime "text/markdown" to a RawBlock of markdown This commit makes the ipynb writer writes this RawBlock of markdown back inside a code-cell output with the same mime, preserving this information in round-trip Add tests of ipynb reader (#7561) and ipynb writer (#7563)'s ability to handle a "text/markdown" mime type in a code-cell output
2021-12-09Lua: update to latest pandoc-lua-marshal (0.1.1)Albert Krewinkel3-423/+26
- `walk` methods are added to `Block` and `Inline` values; the methods are similar to `pandoc.utils.walk_block` and `pandoc.utils.walk_inline`, but apply to filter also to the element itself, and therefore return a list of element instead of a single element. - Functions of name `Doc` are no longer accepted as alternatives for `Pandoc` filter functions. This functionality was undocumented.
2021-12-08Ipynb writer: ensure deterministic order of keys.John MacFarlane1-1/+1
2021-12-07Revert "Markdown reader: Improve inlinesInBalancedBrackets."John MacFarlane1-12/+20
This reverts commit fa83246d7de8527bbf59dfac9636a42ede185194.
2021-12-06Ipynb reader & writer: properly handle cell "id".John MacFarlane2-24/+56
This is passed through if it exists (in Nb4); otherwise the writer will add a random one so that cells all have an "id". Closes #7728.
2021-12-06Ms writer: properly encode strings for PDF contents.John MacFarlane1-2/+19
Closes #7731.
2021-12-05Commonmark writer: allow ')' delimiters on ordered lists.John MacFarlane1-1/+6
2021-12-03Improve Markdown writer escaping.John MacFarlane1-18/+19
This fixes escaping for '#' in particular. Closes #7726.
2021-11-30Markdown reader: don't allow `^` at beginning of link or image label.John MacFarlane1-2/+1
This is reserved for footnotes. Fixes a regression introduced by 0a93acf. Closes #7723.
2021-11-29Lua: remove `pandoc.utils.text` (#7720)Albert Krewinkel1-8/+0
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-28Lua: add constructors `pandoc.Blocks` and `pandoc.Inlines`Albert Krewinkel1-0/+2
The functions convert their argument into a list of Block and Inline values, respectively.
2021-11-27Lua: use package pandoc-lua-marshal (#7719)Albert Krewinkel24-1729/+207
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-24LaTeX reader: Fix semantics of `\ref`.John MacFarlane1-5/+3
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-24LaTeX reader: improve references.John MacFarlane4-5/+27
- 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-24LaTeX reader: omit visible content for `\label{...}`.John MacFarlane1-2/+1
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-24HTML reader: parse attributes on links and images.John MacFarlane2-11/+10
Closes #6970.
2021-11-24Lua: allow single elements as singleton MetaBlocks/MetaInlinesAlbert Krewinkel1-0/+3
Single elements should always be treated as singleton lists in the Lua subsystem.
2021-11-23Improve detection of pipe table line widths.John MacFarlane1-14/+18
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-23Lua: add function `pandoc.utils.text` (#7710)Albert Krewinkel2-2/+11
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-23Lua: split strings into words when treating them as Inline list (#7712)Albert Krewinkel1-4/+7
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-22Add .yml to Citeproc formatFromExtension (#7706)Jörn Krenzer1-0/+1
Make Citeproc recognize files with .yml extension (in addition to .yaml) as YAML bibliographies. Closes #7707.
2021-11-21yamlBsToRefs: allow multiple YAML documents.John MacFarlane1-2/+2
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-20Capture `alt-text` in JATS figures (#7703)Albert Krewinkel1-2/+13
Co-authored-by: Aner Lucero <4rgento@gmail.com>
2021-11-19Lua: fix global module loading (#7701)Albert Krewinkel1-7/+27
2021-11-19Remove unused line.John MacFarlane1-1/+0
2021-11-19MediaWiki writer: fix code for generating spans for header IDs.John MacFarlane1-1/+1
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-19HTML writer: Don't create invalid `data-` attribute...John MacFarlane1-0/+1
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-18MediaWiki writer: use HTML spans for anchors when header has id.John MacFarlane1-2/+8
Closes #7697.
2021-11-18RST reader: handle class attribute for for custom roles (#7700)willj-dev1-8/+16
Previously the class attribute was ignored, and the name of the role used as the class. Closes #7699.
2021-11-17Babel mappings: use ancientgreek for grc.John MacFarlane1-1/+1
2021-11-17Lua: set `lpeg`, `re` as globals; allow shared lib access via requireAlbert Krewinkel1-18/+18
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-16Lua: make loading of global LPeg modules more robustAlbert Krewinkel1-14/+20
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-15Markdown writer: don't create autolinks when this loses information.John MacFarlane1-1/+4
Previously we sometimes lost attributes when rendering links as autolinks. Closes #7692.
2021-11-15LaTeX reader: add rudimentary support for `\autoref` (#7693)Albert Krewinkel1-0/+1
2021-11-12JATS writer: ensure figures are wrapped with `<p>` in list items.Albert Krewinkel1-0/+1
This prevents the generation of invalid output.
2021-11-12JATS writer: add URL to element citation entriesAlbert Krewinkel1-0/+1
The URL of a reference, if present, is added in tag `<uri>` to element-citation entries.
2021-11-11Writers.Shared: Improve toLegacyTable.Christian Despres1-1/+1
Closes #7683. (PR #7684)
2021-11-11Lua: load `re` module available into global of the same nameAlbert Krewinkel1-21/+11
2021-11-10Fix parsing of `%` in bibtex fields.John MacFarlane1-5/+4
Closes #7678 (a bug introduced by 0a45f26).
2021-11-09Require ghc >= 8.6, base >= 4.12.John MacFarlane1-6/+0
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-09Accept empty `--metadata-file`.John MacFarlane1-0/+1
Closes #7675. This is a regression from 2.15 behavior.
2021-11-09Lua: fix argument order in constructor `pandoc.Cite`.Albert Krewinkel1-2/+2
This restores the old behavior; argument order had been switched accidentally in pandoc 2.15.
2021-11-08With `-t latex-smart`, don't generate `\ldots` from ellipsis.John MacFarlane1-1/+1
Instead just use unicode ellipsis. Closes #7674.
2021-11-08Properly handle commented lines in BibTeX/BibLaTeX.John MacFarlane1-18/+27
Closes #7668.
2021-11-08Add `<titleabbr>` support to DocBook readerRowan Rodrik van der Molen1-5/+12
2021-11-08Lua: ensure that 're' module is always available.Albert Krewinkel1-0/+8
The module is shipped with LPeg.