From a0af1b5926e45c830f734883b909e733fd3c01cb Mon Sep 17 00:00:00 2001
From: Albert Krewinkel <albert@zeitkraut.de>
Date: Sun, 19 Dec 2021 09:17:54 +0100
Subject: Lua: change representation of TableHead, TableFoot, and Row values.

The objects now also follow the principle that element attributes are
accessible through the `.attr` field. Rows in `TableHead` and
`TableFoot` are available via the `.rows` field. Row objects have a
`.cells` field, containing the list of table cells.

Closes: #7718
---
 cabal.project      |  2 +-
 doc/lua-filters.md | 93 +++++++++++++++++++++++++++++++++++++++++++++---------
 stack.yaml         |  2 +-
 3 files changed, 80 insertions(+), 17 deletions(-)

diff --git a/cabal.project b/cabal.project
index 091031930..bc617093c 100644
--- a/cabal.project
+++ b/cabal.project
@@ -6,7 +6,7 @@ constraints: aeson >= 2.0.1.0
 source-repository-package
   type: git
   location: https://github.com/pandoc/pandoc-lua-marshal
-  tag: 98e3de5087bb533fadbb89720f83f7f7cc3be5bf
+  tag: 45e53d9dce37d20f8e30e0d297a43c5b4c4a6831
 
 source-repository-package
   type: git
diff --git a/doc/lua-filters.md b/doc/lua-filters.md
index 93595a814..616c13cea 100644
--- a/doc/lua-filters.md
+++ b/doc/lua-filters.md
@@ -1876,8 +1876,6 @@ List attributes
 Values of this type can be created with the
 [`pandoc.ListAttributes`](#pandoc.listattributes) constructor.
 
-Object equality is determined via [`pandoc.utils.equals`].
-
 Fields:
 
 `start`
@@ -1896,10 +1894,13 @@ Fields:
 
 A table row.
 
-Tuple fields:
+Fields:
 
-1. row attributes
-2. row cells (list of [Cells])
+`attr`
+:   element attributes ([Attr][])
+
+`cells`
+:   list of table cells ([List][] of [Cell][]s)
 
 ### TableBody {#type-tablebody}
 
@@ -1909,35 +1910,59 @@ number of row header columns.
 Fields:
 
 `attr`
-:   table body attributes ([Attr])
+:   table body attributes ([Attr][])
 
 `body`
-:   table body rows (list of [Rows])
+:   table body rows ([List][] of [Row][]s)
 
 `head`
-:   intermediate head (list of [Rows])
+:   intermediate head ([List][] of [Row][]s)
 
 `row_head_columns`
 :   number of columns taken up by the row head of each row of a
-    [TableBody]. The row body takes up the remaining columns.
+    [TableBody][]. The row body takes up the remaining columns.
 
 ### TableFoot {#type-tablefoot}
 
 The foot of a table.
 
-This is a pair with the following components:
+Fields:
 
-1. attributes
-2. foot rows ([Rows])
+`attr`
+:   element attributes ([Attr][])
+
+`rows`
+:   list of rows ([List][] of [Row][]s)
+
+`identifier`
+:   alias for `attr.identifier` (string)
+
+`classes`
+:   alias for `attr.classes` ([List][] of strings)
+
+`attributes`
+:   alias for `attr.attributes` ([Attributes][])
 
 ### TableHead {#type-tablehead}
 
 The head of a table.
 
-This is a pair with the following components:
+Fields:
+
+`attr`
+:   element attributes ([Attr][])
+
+`rows`
+:   list of rows ([List][] of [Row][]s)
+
+`identifier`
+:   alias for `attr.identifier` (string)
+
+`classes`
+:   alias for `attr.classes` ([List][] of strings)
 
-1. attributes
-2. head rows ([Rows])
+`attributes`
+:   alias for `attr.attributes` ([Attributes][])
 
 ## ReaderOptions {#type-readeroptions}
 
@@ -2120,6 +2145,7 @@ Usage:
 [Block]: #type-block
 [Blocks]: #type-block
 [Caption]: #type-caption
+[Cell]: #type-cell
 [Cells]: #type-cell
 [Citation]: #type-citation
 [Citations]: #type-citation
@@ -2138,6 +2164,7 @@ Usage:
 [Pandoc]: #type-pandoc
 [Para]: #type-para
 [Plain]: #type-plain
+[Row]: #type-row
 [Rows]: #type-row
 [SimpleTable]: #type-simpletable
 [Table]: #type-table
@@ -2901,6 +2928,42 @@ format, and functions to filter and modify a subtree.
 
     Returns: [ListAttributes](#type-listattributes) object
 
+[`Row ([cells[, attr]])`]{#pandoc.row}
+
+:   Creates a table row.
+
+    Parameters:
+
+    `cells`:
+    :   list of table cells in this row
+
+    `attr`:
+    :   row attributes
+
+[`TableFoot ([rows[, attr]])`]{#pandoc.tablefoot}
+
+:   Creates a table foot.
+
+    Parameters:
+
+    `rows`:
+    :   list of table rows
+
+    `attr`:
+    :   table foot attributes
+
+[`TableHead ([rows[, attr]])`]{#pandoc.tablehead}
+
+:   Creates a table head.
+
+    Parameters:
+
+    `rows`:
+    :   list of table rows
+
+    `attr`:
+    :   table head attributes
+
 ## Legacy types
 
 [`SimpleTable (caption, aligns, widths, headers, rows)`]{#pandoc.simpletable}
diff --git a/stack.yaml b/stack.yaml
index 14e81063c..a76508782 100644
--- a/stack.yaml
+++ b/stack.yaml
@@ -38,7 +38,7 @@ extra-deps:
 - git: https://github.com/jgm/ipynb.git
   commit: 00246af10885c2ad4413ace4f69a7e6c88297a08
 - git: https://github.com/pandoc/pandoc-lua-marshal
-  commit: 98e3de5087bb533fadbb89720f83f7f7cc3be5bf
+  commit: 45e53d9dce37d20f8e30e0d297a43c5b4c4a6831
 ghc-options:
    "$locals": -fhide-source-paths -Wno-missing-home-modules
 resolver: lts-18.10
-- 
cgit v1.2.3