From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: New exporter and dates in tables Date: Sun, 14 Apr 2013 22:36:41 +0200 Message-ID: <87sj2s7sti.fsf@gmail.com> References: <87fvz1opiz.fsf@norang.ca> <8761zxwlvn.fsf@gmail.com> <87bo9pntym.fsf@norang.ca> <0604BF00-1FE8-4EAA-A346-C125A5127CAD@gmail.com> <877gkcvm3n.fsf@gmail.com> <173ADFE7-A1FB-4ECB-A78A-C99662A8030F@gmail.com> <87fvyysghk.fsf@gmail.com> <87bo9mh6ex.fsf@bzg.ath.cx> <87d2u1s3wf.fsf@gmail.com> <8738uxrrtc.fsf@bzg.ath.cx> <87mwt2aefz.fsf@gmail.com> <874nfa34vj.fsf@bzg.ath.cx> <87ehee9vz6.fsf@gmail.com> <87ip3p8mun.fsf@bzg.ath.cx> <87wqs58c7h.fsf@gmail.com> <87ip3p5ipz.fsf@bzg.ath.cx> <87ppxx8bs0.fsf@gmail.com> <871uad5hzv.fsf@bzg.ath.cx> <87haj98avd.fsf@gmail.com> <87vc7p42bt.fsf@bzg.ath.cx> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([208.118.235.92]:32914) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1URTfL-0001Vd-R6 for emacs-orgmode@gnu.org; Sun, 14 Apr 2013 16:36:49 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1URTfK-0006oT-Ac for emacs-orgmode@gnu.org; Sun, 14 Apr 2013 16:36:47 -0400 In-Reply-To: <87vc7p42bt.fsf@bzg.ath.cx> (Bastien's message of "Sun, 14 Apr 2013 16:24:54 +0200") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Bastien Cc: Bernt Hansen , emacs-orgmode@gnu.org, Carsten Dominik --=-=-= Content-Type: text/plain Bastien writes: > Nicolas Goaziou writes: > >> We can widen the definition of `standalone': a standalone timestamp is >> a timestamp belonging to a paragraph that contains only timestamps >> objects. > > Great. If that's possible, then I think that's the best solution. The following patch should do that. It comes with tests, but it should be tested extensively, if only to know if this feature is as useful as it seems. Note that another option is to allow all timestamps, put timestamps you don't want to export in a specific drawer (e.g. "TIME"), and ignore this drawer during export. Regards, -- Nicolas Goaziou --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-ox-Add-more-options-to-skip-timestamps.patch >From 8faa562ce1d2a80988736e7a045b7c16aba7ebc9 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sun, 14 Apr 2013 22:20:16 +0200 Subject: [PATCH] ox: Add more options to skip timestamps * lisp/ox.el (org-export-with-timestamps): Allow `not-standalone', `active-not-standalone' and `inactive-not-standalone' values. Update docstring. (org-export--skip-p): Skip timestamps according to new values. * testing/lisp/test-ox.el: Add tests. --- lisp/ox.el | 59 ++++++++++++++++++++++++++---------- testing/lisp/test-ox.el | 79 +++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 107 insertions(+), 31 deletions(-) diff --git a/lisp/ox.el b/lisp/ox.el index fffb7ce..75ea25a 100644 --- a/lisp/ox.el +++ b/lisp/ox.el @@ -721,9 +721,19 @@ also be set with the OPTIONS keyword, e.g. \"timestamp:nil\"." (defcustom org-export-with-timestamps t "Non nil means allow timestamps in export. -It can be set to `active', `inactive', t or nil, in order to -export, respectively, only active timestamps, only inactive ones, -all of them or none. +It can be set to any of the following values: + t export all timestamps. + `active' export active timestamps only. + `active-not-standalone' export active timestamps which are not + isolated in a paragraph containing only + timestamps. + `inactive' export inactive timestamps only. +`inactive-not-standalone' export inactive timestamps which are not + isolated in a paragraph containing only + timestamps. + `not-standalone' export timestamps which are not isolated + in a paragraph containing only timestamps. + nil do not export timestamps This option can also be set with the OPTIONS keyword, e.g. \"<:nil\"." @@ -2017,19 +2027,36 @@ a tree with a select tag." (not (org-export-get-previous-element blob options)))) (table-row (org-export-table-row-is-special-p blob options)) (timestamp - (case (plist-get options :with-timestamps) - ;; No timestamp allowed. - ('nil t) - ;; Only active timestamps allowed and the current one isn't - ;; active. - (active - (not (memq (org-element-property :type blob) - '(active active-range)))) - ;; Only inactive timestamps allowed and the current one isn't - ;; inactive. - (inactive - (not (memq (org-element-property :type blob) - '(inactive inactive-range)))))))) + (let ((standalonep + (lambda (ts) + ;; Return a non-nil value when TS is a timestamp object + ;; in a paragraph with only timestamps and whitespaces. + (let ((parent (org-export-get-parent-element ts))) + (when (memq (org-element-type parent) '(paragraph verse-block)) + (not + (org-element-map parent + (cons 'plain-text + (remq 'timestamp org-element-all-objects)) + (lambda (obj) + (or (not (stringp obj)) (org-string-nw-p obj))) + options t))))))) + (case (plist-get options :with-timestamps) + ('nil t) + (active + (not (memq (org-element-property :type blob) '(active active-range)))) + (active-not-standalone + (not (and (memq (org-element-property :type blob) + '(active active-range)) + (not (funcall standalonep blob))))) + (inactive-not-standalone + (not + (and (memq (org-element-property :type blob) + '(inactive inactive-range)) + (not (funcall standalonep blob))))) + (inactive + (not (memq (org-element-property :type blob) + '(inactive inactive-range)))) + (not-standalone (funcall standalonep blob))))))) ;;; The Transcoder diff --git a/testing/lisp/test-ox.el b/testing/lisp/test-ox.el index 46531a1..90b4eb5 100644 --- a/testing/lisp/test-ox.el +++ b/testing/lisp/test-ox.el @@ -394,21 +394,70 @@ Paragraph" (org-test-with-temp-text "[0/0]" (org-test-with-backend test (org-export-as - 'test nil nil nil '(:with-statistics-cookies nil)))))) - ;; Timestamps. - (org-test-with-temp-text "[2012-04-29 sun. 10:45]<2012-04-29 sun. 10:45>" - (org-test-with-backend test - (should - (equal (org-export-as 'test nil nil nil '(:with-timestamps t)) - "[2012-04-29 sun. 10:45]<2012-04-29 sun. 10:45>\n")) - (should - (equal (org-export-as 'test nil nil nil '(:with-timestamps nil)) "")) - (should - (equal (org-export-as 'test nil nil nil '(:with-timestamps active)) - "<2012-04-29 sun. 10:45>\n")) - (should - (equal (org-export-as 'test nil nil nil '(:with-timestamps inactive)) - "[2012-04-29 sun. 10:45]\n"))))) + 'test nil nil nil '(:with-statistics-cookies nil))))))) + +(ert-deftest test-org-export/with-timestamps () + "Test `org-export-with-timestamps' specifications." + ;; t value. + (should + (equal + "[2012-04-29 sun. 10:45]<2012-04-29 sun. 10:45>\n" + (org-test-with-temp-text "[2012-04-29 sun. 10:45]<2012-04-29 sun. 10:45>" + (org-test-with-backend test + (org-export-as 'test nil nil nil '(:with-timestamps t)))))) + ;; nil value. + (should + (equal + "" + (org-test-with-temp-text "[2012-04-29 sun. 10:45]<2012-04-29 sun. 10:45>" + (org-test-with-backend test + (org-export-as 'test nil nil nil '(:with-timestamps nil)))))) + ;; `active' value. + (should + (equal + "<2012-04-29 sun. 10:45>\n" + (org-test-with-temp-text "[2012-04-29 sun. 10:45]<2012-04-29 sun. 10:45>" + (org-test-with-backend test + (org-export-as 'test nil nil nil '(:with-timestamps active)))))) + ;; `active-not-standalone' value. + (should + (equal + "Paragraph <2012-03-29 Thu>" + (org-test-with-temp-text + "<2012-04-29 Thu>\n\nParagraph <2012-03-29 Thu> [2012-03-29 Thu]" + (org-test-with-backend test + (org-trim + (org-export-as 'test nil nil nil + '(:with-timestamps active-not-standalone))))))) + ;; `inactive' value. + (should + (equal + "[2012-04-29 sun. 10:45]\n" + (org-test-with-temp-text "[2012-04-29 sun. 10:45]<2012-04-29 sun. 10:45>" + (org-test-with-backend test + (org-export-as 'test nil nil nil '(:with-timestamps inactive)))))) + ;; `inactive-not-standalone' value. + (should + (equal + "Paragraph [2012-03-29 Thu]" + (org-test-with-temp-text + "[2012-04-29 Thu]\n\nParagraph <2012-03-29 Thu> [2012-03-29 Thu]" + (org-test-with-backend test + (org-trim + (org-export-as 'test nil nil nil + '(:with-timestamps inactive-not-standalone))))))) + ;; `not-standalone' value. + (should + (equal + "Paragraph <2012-03-29 Thu> [2012-03-29 Thu]\n| [2012-03-29 Thu] |" + (org-test-with-temp-text "<2012-03-29 Thu> [2012-04-29 Thu] + +Paragraph <2012-03-29 Thu> [2012-03-29 Thu] +| [2012-03-29 Thu] |" + (org-test-with-backend test + (org-trim + (org-export-as 'test nil nil nil + '(:with-timestamps not-standalone)))))))) (ert-deftest test-org-export/comment-tree () "Test if export process ignores commented trees." -- 1.8.2.1 --=-=-=--