aboutsummaryrefslogtreecommitdiff
path: root/data/pandoc.lua
AgeCommit message (Collapse)AuthorFilesLines
2021-10-29Lua: use hslua module abstraction where possibleAlbert Krewinkel1-115/+5
This will make it easier to generate module documentation in the future.
2021-10-26Lua: marshal SimpleTable values as userdata objectsAlbert Krewinkel1-24/+0
2021-10-26Lua: generate constants in module pandoc programmaticallyAlbert Krewinkel1-80/+0
2021-10-26Lua: marshal ListAttributes values as userdata objectsAlbert Krewinkel1-42/+0
2021-10-26Lua: marshal Block values as userdata objectsAlbert Krewinkel1-205/+0
Properties of Block values are marshalled lazily, which generally improves performance considerably. Script users may also notice the following differences: - Block element properties can no longer be accessed by numerical indexing of the `.c` field. The `.c` property now serves as an alias for `.content`, so some filter that used this undocumented method for property access may continue to work, while others will need to be updated and use proper property names. - The marshalled Block elements now have a `show` method, and a `__tostring` metamethod. Both return the Haskell string representation of the element. - Block values now have the Lua type `userdata` instead of `table`.
2021-10-25Lua: marshal Citation values as userdata objectsAlbert Krewinkel1-23/+0
2021-10-22Lua: marshal Inline elements as userdataAlbert Krewinkel1-271/+0
This includes the following user-facing changes: - Deprecated inline constructors are removed. These are `DoubleQuoted`, `SingleQuoted`, `DisplayMath`, and `InlineMath`. - Attr values are no longer normalized when assigned to an Inline element property. - It's no longer possible to access parts of Inline elements via numerical indexes. E.g., `pandoc.Span('test')[2]` used to give `pandoc.Str 'test'`, but yields `nil` now. This was undocumented behavior not intended to be used in user scripts. Use named properties instead. - Accessing `.c` to get a JSON-like tuple of all components no longer works. This was undocumented behavior. - Only known properties can be set on an element value. Trying to set a different property will now raise an error.
2021-10-22Lua: marshal Attr values as userdataAlbert Krewinkel1-152/+3
- Adds a new `pandoc.AttributeList()` constructor, which creates the associative attribute list that is used as the third component of `Attr` values. Values of this type can often be passed to constructors instead of `Attr` values. - `AttributeList` values can no longer be indexed numerically.
2021-10-22Lua: marshal Pandoc values as userdataAlbert Krewinkel1-20/+0
2020-09-20Lua filters: add SimpleTable for backwards compatibility (#6575)Albert Krewinkel1-0/+24
A new type `SimpleTable` is made available to Lua filters. It is similar to the `Table` type in pandoc versions before 2.10; conversion functions from and to the new Table type are provided. Old filters using tables now require minimal changes and can use, e.g., if PANDOC_VERSION > {2,10,1} then pandoc.Table = pandoc.SimpleTable end and function Table (tbl) tbl = pandoc.utils.to_simple_table(tbl) … return pandoc.utils.from_simple_table(tbl) end to work with the current pandoc version.
2020-07-25Lua filters: make attr argument optional in Table constructorAlbert Krewinkel1-3/+3
This changes the Lua API. It is highly unlikely for this change to affect existing filters, since the documentation for the new Table constructor (and type) was incomplete and partly wrong before. The Lua API is now more consistent, as all constructors for elements with attributes now take attributes as the last parameter.
2020-04-28Support new Underline element in readers and writers (#6277)Vaibhav Sagar1-1/+11
Deprecate `underlineSpan` in Shared in favor of `Text.Pandoc.Builder.underline`.
2020-04-15Lua: support new tablesAlbert Krewinkel1-13/+14
2019-09-15Lua filters: allow passing of HTML-like tables instead of Attr (#5750)Albert Krewinkel1-16/+75
Attr values can now be given as normal Lua tables; this can be used as a convenient alternative to define Attr values, instead of constructing values with `pandoc.Attr`. Identifiers are taken from the *id* field, classes must be given as space separated words in the *class* field. All remaining fields are included as misc attributes. With this change, the following lines now create equal elements: pandoc.Span('test', {id = 'test', class = 'a b', check = 1}) pandoc.Span('test', pandoc.Attr('test', {'a','b'}, {check = 1})) This also works when using the *attr* setter: local span = pandoc.Span 'text' span.attr = {id = 'test', class = 'a b', check = 1} Furthermore, the *attributes* field of AST elements can now be a plain key-value table even when using the `attributes` accessor: local span = pandoc.Span 'test' span.attributes = {check = 1} -- works as expected now Closes: #5744
2019-06-12Lua: add a `clone()` method to all AST elements (#5572)Albert Krewinkel1-0/+9
Closes: #5568
2019-06-11data/pandoc.lua: fix deletion of nonexistent attributesAlbert Krewinkel1-1/+4
Fixes: #5569
2019-05-04Lua: add `pandoc.system` module (#5468)Albert Krewinkel1-0/+1
The `system` Lua module provides utility functions to interact with the operating- and file system. E.g. print(pandoc.system.get_current_directory()) or pandoc.system.with_temporary_directory('tikz', function (dir) -- write and compile a TikZ file with pdflatex end)
2019-02-09data/pandoc.lua: re-export all bundled modulesAlbert Krewinkel1-7/+11
All Lua modules bundled with pandoc, i.e., `pandoc.List`, `pandoc.mediabag`, `pandoc.utils`, and `text` are re-exported from the `pandoc` module. They are assigned to the fields `List`, `mediabag`, `utils`, and `text`, respectively.
2019-02-07data/pandoc.lua: re-export List and utils moduleAlbert Krewinkel1-0/+4
2019-01-13data/pandoc.lua: auto-fix nested constructor argumentsAlbert Krewinkel1-6/+18
Incorrect types to pandoc element constructors are automatically converted to the correct types when possible. This was already done for most constructors, but conversions are now also done for nested types (like lists of lists).
2018-11-19Lua filters: test AST object equality via HaskellAlbert Krewinkel1-1/+4
Equality of Lua objects representing pandoc AST elements is tested by unmarshalling the objects and comparing the result in Haskell. A new function `equals` which performs this test has been added to the `pandoc.utils` module. Closes: #5092
2018-10-20Lua filters: iterate over AST element fields when using `pairs`Albert Krewinkel1-0/+58
This makes it possible to iterate over all field names of an AST element by using a generic `for` loop with `pairs`: for field_name, field_content in pairs(element) do … end Raw table fields of AST elements should be considered an implementation detail and might change in the future. Accessing element properties should always happen through the fields listed in the Lua filter docs. Note that the iterator currently excludes the `t`/`tag` field.
2018-10-15Lua pandoc module: ensure MetaList elements behave like ListsAlbert Krewinkel1-0/+3
Methods usable on Lists can also be used on MetaList objects.
2018-10-15Lua pandoc module: fix MetaList constructorAlbert Krewinkel1-1/+6
Passing a MetaList object to the constructor `pandoc.MetaList` now returns the passed list as a MetaList. This is consistent with the constructor behavior when passed an (untagged) list. Previously, the constructor used to create a new MetaList with the passed MetaList as its only element.
2018-10-11data/pandoc.lua: add datatype ListAttributesAlbert Krewinkel1-1/+29
Make ListAttributes a datatype. The type is similar to Attr.
2018-10-06Lua filter doc: fix description of Code.textAlbert Krewinkel1-1/+1
2018-06-08pandoc.lua: fix a typo (#4692)Felix Yan1-1/+1
2018-01-13data/pandoc.lua: add attr, listAttributes accessorsAlbert Krewinkel1-11/+14
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.
2018-01-13data/pandoc.lua: accept single block as singleton listAlbert Krewinkel1-19/+28
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.
2018-01-13data/pandoc.lua: accept singleton inline as a listAlbert Krewinkel1-16/+30
Every constructor which accepts a list of inlines now also accepts a single inline element for convenience.
2018-01-13data/pandoc.lua: drop _VERSIONAlbert Krewinkel1-3/+0
Having a _VERSION became superfluous, as this module is closely tied to the pandoc version, which is available via PANDOC_VERSION.
2018-01-09data/pandoc.lua: fix access to Attr componentsAlbert Krewinkel1-6/+4
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.
2018-01-09data/pandoc.lua: slightly de-complicate accessor codeAlbert Krewinkel1-20/+20
Change: minor
2018-01-08data/pandoc.lua: cleanup code, remove cruftAlbert Krewinkel1-81/+90
2018-01-07data/pandoc.lua: fix docstringsAlbert Krewinkel1-9/+18
Change: minor
2018-01-07data/pandoc.lua: make Attr an AstElementAlbert Krewinkel1-9/+7
Attr is an AST element, which is now reflected in the type hierarchy.
2018-01-07data/pandoc.lua: drop 'pandoc-api-version' from Pandoc objectsAlbert Krewinkel1-4/+2
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.
2018-01-07data/pandoc.lua: make all types subtypes of AstElementAlbert Krewinkel1-25/+28
*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`).
2018-01-06data/pandoc.lua: split type and behavior tablesAlbert Krewinkel1-51/+83
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'
2018-01-06data/pandoc.lua: rename Element to AstElementAlbert Krewinkel1-9/+9
This avoids confusion with the Element type from Text.Pandoc.Shared. Change: minor
2018-01-06data/pandoc.lua: remove dead codeAlbert Krewinkel1-6/+2
A `Element:new` method was a left-over was never called. Change: minor
2018-01-06data/pandoc.lua: fix Element inheritanceAlbert Krewinkel1-2/+3
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.
2018-01-05Update copyright notices to include 2018Albert Krewinkel1-2/+2
2018-01-05data/pandoc.lua: fix attribute names of CitationAlbert Krewinkel1-13/+15
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
2017-12-29data/pandoc.lua: drop function pandoc.global_filterAlbert Krewinkel1-36/+1
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.
2017-12-29data/pandoc.lua: fix documentation for global_filterAlbert Krewinkel1-5/+5
2017-12-28Fixed some doc comments in data/pandoc.lua.John MacFarlane1-10/+10
2017-12-21Lua modules: added pandoc.utils moduleAlbert Krewinkel1-0/+5
A new module `pandoc.utils` has been created. It holds utility functions like `sha1`, which was moved from the main `pandoc` module.
2017-12-20Lua modules: turn pipe, read into full Haskell functionsAlbert Krewinkel1-47/+0
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.
2017-12-19pandoc.lua: re-add missing MetaMap functionAlbert Krewinkel1-1/+4
This was a bug introduced in version 2.0.4 (commit 3f1f9536d4817bbdd797c01050a887fe4cdf347c).