forked from mirrors/org-mode
ox: Add function returning row number in a table
* lisp/ox.el (org-export-table-row-number): New function. (org-export-table-cell-address): Use new function. * testing/lisp/test-ox.el: Add test.
This commit is contained in:
parent
6ce2b72c9f
commit
5f48315568
23
lisp/ox.el
23
lisp/ox.el
|
@ -4640,6 +4640,21 @@ INFO is a plist used as a communication channel."
|
|||
(org-export-table-row-ends-rowgroup-p table-row info)
|
||||
(= (org-export-table-row-group table-row info) 1)))
|
||||
|
||||
(defun org-export-table-row-number (table-row info)
|
||||
"Return TABLE-ROW number.
|
||||
INFO is a plist used as a communication channel. Return value is
|
||||
zero-based and ignores separators. The function returns nil for
|
||||
special colums and separators."
|
||||
(when (and (eq (org-element-property :type table-row) 'standard)
|
||||
(not (org-export-table-row-is-special-p table-row info)))
|
||||
(let ((number 0))
|
||||
(org-element-map (org-export-get-parent-table table-row) 'table-row
|
||||
(lambda (row)
|
||||
(cond ((eq row table-row) number)
|
||||
((eq (org-element-property :type row) 'standard)
|
||||
(incf number) nil)))
|
||||
info 'first-match))))
|
||||
|
||||
(defun org-export-table-dimensions (table info)
|
||||
"Return TABLE dimensions.
|
||||
|
||||
|
@ -4677,13 +4692,7 @@ function returns nil for other cells."
|
|||
(eq (car (org-element-contents table-row)) table-cell)))
|
||||
(cons
|
||||
;; Row number.
|
||||
(let ((row-count 0))
|
||||
(org-element-map table 'table-row
|
||||
(lambda (row)
|
||||
(cond ((eq (org-element-property :type row) 'rule) nil)
|
||||
((eq row table-row) row-count)
|
||||
(t (incf row-count) nil)))
|
||||
info 'first-match))
|
||||
(org-export-table-row-number (org-export-get-parent table-cell) info)
|
||||
;; Column number.
|
||||
(let ((col-count 0))
|
||||
(org-element-map table-row 'table-cell
|
||||
|
|
|
@ -1911,6 +1911,35 @@ Another text. (ref:text)
|
|||
(mapcar (lambda (row) (org-export-table-row-group row info))
|
||||
(org-element-map tree 'table-row 'identity))))))
|
||||
|
||||
(ert-deftest test-org-export/table-row-number ()
|
||||
"Test `org-export-table-row-number' specifications."
|
||||
;; Standard test. Number is 0-indexed.
|
||||
(should
|
||||
(equal '(0 1)
|
||||
(org-test-with-parsed-data "| a | b | c |\n| d | e | f |"
|
||||
(org-element-map tree 'table-row
|
||||
(lambda (row) (org-export-table-row-number row info)) info))))
|
||||
;; Number ignores separators.
|
||||
(should
|
||||
(equal '(0 1)
|
||||
(org-test-with-parsed-data "
|
||||
| a | b | c |
|
||||
|---+---+---|
|
||||
| d | e | f |"
|
||||
(org-element-map tree 'table-row
|
||||
(lambda (row) (org-export-table-row-number row info)) info))))
|
||||
;; Number ignores special rows.
|
||||
(should
|
||||
(equal '(0 1)
|
||||
(org-test-with-parsed-data "
|
||||
| / | < | > |
|
||||
| | b | c |
|
||||
|---+-----+-----|
|
||||
| | <c> | <c> |
|
||||
| | e | f |"
|
||||
(org-element-map tree 'table-row
|
||||
(lambda (row) (org-export-table-row-number row info)) info)))))
|
||||
|
||||
(ert-deftest test-org-export/table-cell-width ()
|
||||
"Test `org-export-table-cell-width' specifications."
|
||||
;; 1. Width is primarily determined by width cookies. If no cookie
|
||||
|
|
Loading…
Reference in New Issue