summaryrefslogtreecommitdiff
path: root/test/lua
Commit message (Collapse)AuthorAge
* data/pandoc.lua: enable table-like behavior of attributes (#4080)Albert Krewinkel2017-11-20
| | | | | | | | | | | | | | | | | | | | | | Attribute lists are represented as associative lists in Lua. Pure associative lists are awkward to work with. A metatable is attached to attribute lists, allowing to access and use the associative list as if the attributes were stored in as normal key-value pair in table. Note that this changes the way `pairs` works on attribute lists. Instead of producing integer keys and two-element tables, the resulting iterator function now returns the key and value of those pairs. Use `ipairs` to get the old behavior. Warning: the new iteration mechanism only works if pandoc has been compiled with Lua 5.2 or later (current default: 5.3). The `pandoc.Attr` function is altered to allow passing attributes as key-values in a normal table. This is more convenient than having to construct the associative list which is used internally. Closes #4071
* Lua filters: preload text module (#4077)Albert Krewinkel2017-11-18
| | | | | | | | | | | The `text` module is preloaded in lua. The module contains some UTF-8 aware string functions, implemented in Haskell. The module is loaded on request only, e.g.: text = require 'text' function Str (s) s.text = text.upper(s.text) return s end
* Allow lua filters to return lists of elementsAlbert Krewinkel2017-09-24
| | | | Closes: #3918
* Text.Pandoc.Lua: support Inline and Block catch-allsAlbert Krewinkel2017-08-22
| | | | | | | Try function `Inline`/`Block` if no other filter function of the respective type matches an element. Closes: #3859
* Text.Pandoc.Lua: respect metatable when getting filtersAlbert Krewinkel2017-08-22
| | | | | | | | | | | | | | | | This change makes it possible to define a catch-all function using lua's metatable lookup functionality. function catch_all(el) … end return { setmetatable({}, {__index = function(_) return catch_all end}) } A further effect of this change is that the map with filter functions now only contains functions corresponding to AST element constructors.
* data/pandoc.lua: regularize constructors.John MacFarlane2017-06-29
| | | | | | We now use Pandoc instead of Doc (though Doc remains a deprecated Synonym), and we deprecate DoubleQuoted, SingleQuoted, InlineMath, and DisplayMath.
* Lua filters: Remove special treatment of Quoted, Math.John MacFarlane2017-06-29
| | | | | | No more SingleQuoted, DoubleQuoted, InlineMath, DisplayMath. This makes everything uniform and predictable, though it does open up a difference btw lua filters and custom writers.
* Lua filter: fall-back to global filters when none is returnedAlbert Krewinkel2017-04-30
| | | | | | | | | The implicitly defined global filter (i.e. all element filtering functions defined in the global lua environment) is used if no filter is returned from a lua script. This allows to just write top-level functions in order to define a lua filter. E.g function Emph(elem) return pandoc.Strong(elem.content) end
* Lua module: provide simple `read` format parserAlbert Krewinkel2017-04-26
| | | | | | A single `read` function parsing pandoc-supported formats is added to the module. This is simpler and more convenient than the previous method of exposing all reader functions individually.
* Lua filter: allow filtering of meta data onlyAlbert Krewinkel2017-04-26
|
* Lua filter: revert to non-destructuring filtersAlbert Krewinkel2017-04-15
| | | | | We want to provide an interface familiar to users of other filtering libraries.
* Lua filter: allow shorthand functions for math and quotedAlbert Krewinkel2017-04-14
| | | | | Allow to use functions named `SingleQuoted`, `DoubleQuoted`, `DisplayMath`, and `InlineMath` in filters.
* Lua filter: use destructured functions for block filtersAlbert Krewinkel2017-04-14
| | | | | | Filtering functions take element components as arguments instead of the whole block elements. This resembles the way elements are handled in custom writers.
* Lua filter: use destructured functions for inline filtersAlbert Krewinkel2017-04-12
| | | | | | Instead of taking the whole inline element, forcing users to destructure it themselves, the components of the elements are passed to the filtering functions.
* Lua module: add readers submoduleAlbert Krewinkel2017-04-02
| | | | | | | | | | | | | | | Plain text readers are exposed to lua scripts via the `pandoc.reader` submodule, which is further subdivided by format. Converting e.g. a markdown string into a pandoc document is possible from within lua: doc = pandoc.reader.markdown.read_doc("Hello, World!") A `read_block` convenience function is provided for all formats, although it will still parse the whole string but return only the first block as the result. Custom reader options are not supported yet, default options are used for all parsing operations.
* Lua filters (#3514)Albert Krewinkel2017-03-20
* Add `--lua-filter` option. This works like `--filter` but takes pathnames of special lua filters and uses the lua interpreter baked into pandoc, so that no external interpreter is needed. Note that lua filters are all applied after regular filters, regardless of their position on the command line. * Add Text.Pandoc.Lua, exporting `runLuaFilter`. Add `pandoc.lua` to data files. * Add private module Text.Pandoc.Lua.PandocModule to supply the default lua module. * Add Tests.Lua to tests. * Add data/pandoc.lua, the lua module pandoc imports when processing its lua filters. * Document in MANUAL.txt.