path: root/data/pandoc.lua
Commit message (Collapse)AuthorAge
* data/pandoc.lua: add attr, listAttributes accessorsAlbert Krewinkel2018-01-13
| | | | | | | Elements with attributes got an additional `attr` accessor. Attributes were accessible only via the `identifier`, `classes`, and `attributes`, which was in conflict with the documentation, which indirectly states that such elements have the an `attr` property.
* data/pandoc.lua: accept single block as singleton listAlbert Krewinkel2018-01-13
| | | | | | Every constructor which accepts a list of blocks now also accepts a single block element for convenience. Furthermore, strings are accepted as shorthand for `{pandoc.Str "text"}` in constructors.
* data/pandoc.lua: accept singleton inline as a listAlbert Krewinkel2018-01-13
| | | | | Every constructor which accepts a list of inlines now also accepts a single inline element for convenience.
* data/pandoc.lua: drop _VERSIONAlbert Krewinkel2018-01-13
| | | | | Having a _VERSION became superfluous, as this module is closely tied to the pandoc version, which is available via PANDOC_VERSION.
* data/pandoc.lua: fix access to Attr componentsAlbert Krewinkel2018-01-09
| | | | | | Accessing an Attr value (e.g., ` Attr().classes`) was broken; the more common case of accessing it via an Inline or Block element was unaffected by this.
* data/pandoc.lua: slightly de-complicate accessor codeAlbert Krewinkel2018-01-09
| | | | Change: minor
* data/pandoc.lua: cleanup code, remove cruftAlbert Krewinkel2018-01-08
* data/pandoc.lua: fix docstringsAlbert Krewinkel2018-01-07
| | | | Change: minor
* data/pandoc.lua: make Attr an AstElementAlbert Krewinkel2018-01-07
| | | | Attr is an AST element, which is now reflected in the type hierarchy.
* data/pandoc.lua: drop 'pandoc-api-version' from Pandoc objectsAlbert Krewinkel2018-01-07
| | | | | | This attribute was out-of-sync with the actual version as is mostly irrelevant in the context Lua filters and custom writers. Use the global `PANDOC_API_VERSION` instead.
* data/pandoc.lua: make all types subtypes of AstElementAlbert Krewinkel2018-01-07
| | | | | | | | *Pandoc*, *Meta*, and *Citation* were just plain functions and did not set a metatable on the returned value, which made it difficult to amend objects of these types with new behavior. They are now subtypes of AstElement, meaning that all their objects can gain new features when a method is added to the behavior object (e.g., `pandoc.Pandoc.behavior`).
* data/pandoc.lua: split type and behavior tablesAlbert Krewinkel2018-01-06
| | | | | | | | | | | | | Clearly distinguish between a type and the behavioral properties of an instance of that type. The behavior of a type (and all its subtypes) can now be amended by adding methods to that types `behavior` object, without exposing the type objects internals. E.g.: pandoc.Inline.behavior.frob = function () print'42' end local str = pandoc.Str'hello' str.frob() -- outputs '42'
* data/pandoc.lua: rename Element to AstElementAlbert Krewinkel2018-01-06
| | | | | | This avoids confusion with the Element type from Text.Pandoc.Shared. Change: minor
* data/pandoc.lua: remove dead codeAlbert Krewinkel2018-01-06
| | | | | | A `Element:new` method was a left-over was never called. Change: minor
* data/pandoc.lua: fix Element inheritanceAlbert Krewinkel2018-01-06
| | | | | | | | Extending all elements of a given type (e.g., all inline elements) was difficult, as the table used to lookup unknown methods would be reset every time a new element of that type was created, preventing recursive property lookup. This is was changed in that all methods and attributes of supertypes are now available to their subtypes.
* Update copyright notices to include 2018Albert Krewinkel2018-01-05
* data/pandoc.lua: fix attribute names of CitationAlbert Krewinkel2018-01-05
| | | | | | | | The fields were named like the Haskell fields, not like the documented, shorter version. The names are changed to match the documentation and Citations are given a shared metatable to enable simple extensibility. Fixes: #4222
* data/pandoc.lua: drop function pandoc.global_filterAlbert Krewinkel2017-12-29
| | | | | | | | | | The function `global_filter` was used internally to get the implicitly defined global filter. It was of little value to end-users, but caused unnecessary code duplication in pandoc. The function has hence been dropped. Internally, the global filter is now received by interpreting the global table as lua filter. This is a Lua API change.
* data/pandoc.lua: fix documentation for global_filterAlbert Krewinkel2017-12-29
* Fixed some doc comments in data/pandoc.lua.John MacFarlane2017-12-28
* Lua modules: added pandoc.utils moduleAlbert Krewinkel2017-12-21
| | | | | A new module `pandoc.utils` has been created. It holds utility functions like `sha1`, which was moved from the main `pandoc` module.
* Lua modules: turn pipe, read into full Haskell functionsAlbert Krewinkel2017-12-20
| | | | | | The `pipe` and `read` utility functions are converted from hybrid lua/haskell functions into full Haskell functions. This avoids the need for intermediate `_pipe`/`_read` helper functions, which have dropped.
* pandoc.lua: re-add missing MetaMap functionAlbert Krewinkel2017-12-19
| | | | | This was a bug introduced in version 2.0.4 (commit 3f1f9536d4817bbdd797c01050a887fe4cdf347c).
* Lua filters: refactor lua module handlingAlbert Krewinkel2017-12-02
| | | | | | | 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`.
* pandoc.lua: set metatable on List MetaValuesAlbert Krewinkel2017-12-01
| | | | | | | The `List` metatable is assigned to the tables which get passed to the constructors `MetaBlocks`, `MetaInline`, and `MetaList`. This enables the use of the resulting objects as lists. This is part of the changes discussed in #4081.
* Lua/StackInstances: push Pandoc and Meta via constructorAlbert Krewinkel2017-12-01
| | | | | | | Pandoc and Meta elements are now pushed by calling the respective constructor functions of the pandoc Lua module. This makes serialization consistent with the way blocks and inlines are pushed to lua and allows to use List methods with the `blocks` value.
* List.lua: add missing fixes as discussed in #4099Albert Krewinkel2017-12-01
| | | | The changes were missing due to an error while using git.
* Add basic lua List module (#4099)Albert Krewinkel2017-11-28
| | | | | | | | | | | | | | | | | | The List module is automatically loaded, but not assigned to a global variable. It can be included in filters by calling `List = require 'List'`. Lists of blocks, lists of inlines, and lists of classes are now given `List` as a metatable, making working with them more convenient. E.g., it is now possible to concatenate lists of inlines using Lua's concatenation operator `..` (requires at least one of the operants to have `List` as a metatable): function Emph (emph) local s = {pandoc.Space(), pandoc.Str 'emphasized'} return pandoc.Span(emph.content .. s) end Closes: #4081
* 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
* pandoc.lua: define default list attributesAlbert Krewinkel2017-10-25
| | | | | | The second argument of the OrderedList constructor, which should define the list's attributes, is made optional. Default attributes are used if the parameter is omitted.
* pandoc.lua: destructure attr for Link and ImageAlbert Krewinkel2017-10-17
| | | | | | Make Attr values accessible through through the keys `identifier`, `classes` and `attributes`. This is already used in other elements with attributes and is now fixed for Link and Image.
* pandoc.lua: throw better error when pipe command failsAlbert Krewinkel2017-10-05
| | | | | A table containing the error code, command, and command output is thrown instead of just a string error message.
* pandoc.lua: use wrapper funciton for pipe commandAlbert Krewinkel2017-10-03
| | | | | | | | | | | | The pipe command is wrapped in a lua function, throwing a lua error if the command returns with an error. A wrapper is needed as Haskell functions exposed to lua may not throw lua errors due to limitations of hslua. The error handling is written such that a table can be returned as an error object in the future. This is potentially useful when finer control is required while catching the error in lua code. Current limitations of hslua require error objects to be strings.
* Lua.PandocModule: promote addFunction to top levelAlbert Krewinkel2017-10-03
| | | | This reduces some boilerplate.
* data/pandoc.lua: fix typos in documentationAlbert Krewinkel2017-08-31
* 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
* data/pandoc.lua: fix documentationAlbert Krewinkel2017-08-21
| | | | Multiple documentation mistakes were fixed.
* data/pandoc.lua: Include Pandoc, Meta in implicit filtersAlbert Krewinkel2017-08-21
| | | | | | Functions with a name that corresponds to an AST element are included in implicit pandoc filter, but both `Meta` and `Pandoc` were wrongly ignored till now.
* 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.
* data/pandoc.lua: add accessors to Table elementsAlbert Krewinkel2017-06-27
* Lua module: allow omitting Attr in element constructorsAlbert Krewinkel2017-05-18
| | | | | | | The Attr argument is made optional for all pandoc element constructors which take such a parameter. The attr param is always the last argument of the constructor functions, so the option to omit them makes it easier to construct new pandoc elements by hand.
* 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: simplify Attributes, rename to AttrAlbert Krewinkel2017-04-30
| | | | | | | Attributes was written to behave much like a normal table, in order to simplify working with it. However, all Attr containing elements were changed to provide panflute-like accessors to Attr components, rendering the previous approach unnecessary.
* Lua module: make Header argument order consistentAlbert Krewinkel2017-04-30
| | | | | Attributes are always passed as the last element, making it possible to omit this argument. Argument order for `Header` was wrong and is fixed.
* Lua module: add example for usage of `read`Albert Krewinkel2017-04-30
* 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 natural access to meta elementsAlbert Krewinkel2017-04-26
| | | | | | | | Meta elements that are treated as lua tables (i.e. MetaList, MetaInlines, MetaBlocks, and MetaMap), are no longer wrapped in an additional table but simply marked via a metatable. This allows treating those meta values just like normal tables, while still making empty elements of those values distinguishable.
* Lua module: provide accessors to element propertiesAlbert Krewinkel2017-04-15
* Lua filter: use Attributes constructor for AttrsAlbert Krewinkel2017-04-15
| | | | | | Element attributes are pushed to the stack via the `Attributes` function. `Attributes` creates an Attr like triple, but the triple also allows table-like access to key-value pairs.
* Lua module: fix doc generation, reorder codeAlbert Krewinkel2017-04-15
| | | | Ensure that documentation generated with `ldoc` is readable and correct.