aboutsummaryrefslogtreecommitdiff
path: root/test/Tests/Lua.hs
AgeCommit message (Collapse)AuthorFilesLines
2017-12-02Lua filters: refactor lua module handlingAlbert Krewinkel1-13/+11
The integration with Lua's package/module system is improved: A pandoc-specific package searcher is prepended to the searchers in `package.searchers`. The modules `pandoc` and `pandoc.mediabag` can now be loaded via `require`.
2017-11-20data/pandoc.lua: enable table-like behavior of attributes (#4080)Albert Krewinkel1-3/+11
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
2017-11-18Lua filters: preload text module (#4077)Albert Krewinkel1-3/+9
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
2017-10-27Automatic reformating by stylish-haskell.John MacFarlane1-8/+8
2017-09-30Text.Pandoc.Lua: add mediabag submoduleAlbert Krewinkel1-3/+7
2017-08-22Text.Pandoc.Lua: support Inline and Block catch-allsAlbert Krewinkel1-0/+6
Try function `Inline`/`Block` if no other filter function of the respective type matches an element. Closes: #3859
2017-08-22Text.Pandoc.Lua: respect metatable when getting filtersAlbert Krewinkel1-0/+6
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.
2017-08-14Test fixes so we can find data files.John MacFarlane1-2/+2
In old tests & command tests, we now set the environment variable pandoc_datadir. In lua tests, we set the datadir explicitly.
2017-08-13Use hslua >= 0.7, update Lua codeAlbert Krewinkel1-17/+14
2017-06-29Added parameter for user data directory to runLuaFilter.John MacFarlane1-2/+2
in Text.Pandoc.Lua. Also to pushPandocModule. This change allows users to override pandoc.lua with a file in their local data directory, adding custom functions, etc. @tarleb, if you think this is a bad idea, you can revert this. But in general our data files are all overridable.
2017-05-07Use fewer quickcheck tests for lua tests, to speed things up.John MacFarlane1-3/+3
2017-04-30Lua filter: fall-back to global filters when none is returnedAlbert Krewinkel1-0/+6
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
2017-04-14Lua filter: allow shorthand functions for math and quotedAlbert Krewinkel1-14/+21
Allow to use functions named `SingleQuoted`, `DoubleQuoted`, `DisplayMath`, and `InlineMath` in filters.
2017-04-13Use lua constructors to push meta valuesAlbert Krewinkel1-2/+6
2017-04-07Lua filter: improve doc filter performanceAlbert Krewinkel1-1/+9
Pandoc elements are pushed and pulled from the lua stack via custom instances.
2017-04-06Ensure correctness of StackValue instancesAlbert Krewinkel1-0/+28
2017-04-02Lua module: add readers submoduleAlbert Krewinkel1-0/+6
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.
2017-03-20Lua filters (#3514)Albert Krewinkel1-0/+34
* 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.