From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: RFC: Proposal for an Org Special Block for ox-html Date: Thu, 24 May 2018 14:28:06 -0400 Message-ID: References: <87o9h56jdl.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="000000000000cbd55d056cf7d038" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:38529) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fLuyM-0007R1-CO for emacs-orgmode@gnu.org; Thu, 24 May 2018 14:28:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fLuyL-0001jC-7Z for emacs-orgmode@gnu.org; Thu, 24 May 2018 14:28:22 -0400 Received: from mail-wr0-x22a.google.com ([2a00:1450:400c:c0c::22a]:42049) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fLuyK-0001iP-TT for emacs-orgmode@gnu.org; Thu, 24 May 2018 14:28:21 -0400 Received: by mail-wr0-x22a.google.com with SMTP id w10-v6so4834218wrk.9 for ; Thu, 24 May 2018 11:28:20 -0700 (PDT) In-Reply-To: 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" To: emacs-org list --000000000000cbd55d056cf7d038 Content-Type: text/plain; charset="UTF-8" Hello Aaron, On Thu, May 24, 2018 at 2:08 PM Kaushal Modi wrote: > Expanding on your idea.. what if we had another Special block with name > summary? > > #+begin_details > #+begin_summary > Open for details > > More summary. > #+end_summary > Many details here. > #+end_details > >From quick testing, this works (doesn't support the div tags for HTML4). The good part is that the "summary" Special Block is automatically handled by ox-html. ((string= block-type "details") ;; Recognize Org Special blocks like: ;; #+begin_details ;; #+begin_summary ;; This is summary. ;; #+end_summary ;; Here are the details. ;; #+end_details (let* ((is-open (member "open" (org-element-property :attr_html special-block))) (str1 (org-blackfriday-special-block special-block contents nil)) ;; Insert a new-line before the closing tag ;; for correct Markdown parsing for cases when the ;; Special Block content ends a code block. Without this ;; inserted newline, the Markdown converted content will ;; look like below, and Blackfriday won't parse it ;; correctly. ;; ```emacs-lisp ;; (message "a code block") ;; ``` ;; A closing

tag is also added.. the opening

;; tag is later added in the `str2' var if summary is ;; present, else in `str3' var. (str1 (replace-regexp-in-string "\\'" "\n

\\&" str1)) ;; Detect the summary closing tag "". ;; Also add the opening

tag with "details" class ;; so that just as CSS rules can be set for summary ;; ("details summary"), they can be set for the details ;; portion following the

too, using "details ;; .details". (str2 (replace-regexp-in-string "\\(\\(.\\|\n\\)*\\)" "\\1

" str1))) ;; (message "[DBG details/summary]: is-open:%S `%s' `%s'" is-open str1 str2) (if is-open (replace-regexp-in-string "\\`\\(" "\\1 open>" str2) str2))) Also, thinking about HTML4 support, as details and summary tags were added in HTML5, the "support" would be simply to and the (string= block-type "details") condition with org-html-html5-fancy or equivalent. So then for HTML4, details and summary Special Blocks will simply be div tags. -- Kaushal Modi --000000000000cbd55d056cf7d038 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdj5IZWxsbyBBYXJvbiw8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2 PjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj48ZGl2IGRpcj0ibHRyIj5PbiBUaHUsIE1heSAyNCwg MjAxOCBhdCAyOjA4IFBNIEthdXNoYWwgTW9kaSAmbHQ7PGEgaHJlZj0ibWFpbHRvOmthdXNoYWwu bW9kaUBnbWFpbC5jb20iPmthdXNoYWwubW9kaUBnbWFpbC5jb208L2E+Jmd0OyB3cm90ZTo8YnI+ PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjAgMCAw IC44ZXg7Ym9yZGVyLWxlZnQ6MXB4ICNjY2Mgc29saWQ7cGFkZGluZy1sZWZ0OjFleCI+RXhwYW5k aW5nIG9uIHlvdXIgaWRlYS4uIHdoYXQgaWYgd2UgaGFkIGFub3RoZXIgU3BlY2lhbCBibG9jayB3 aXRoIG5hbWUgc3VtbWFyeT88ZGl2IGRpcj0ibHRyIj48ZGl2PjxkaXYgY2xhc3M9ImdtYWlsX3F1 b3RlIj48ZGl2Pjxicj48L2Rpdj48ZGl2PiMrYmVnaW5fZGV0YWlsczxicj4jK2JlZ2luX3N1bW1h cnk8L2Rpdj48ZGl2Pk9wZW4gZm9yIGRldGFpbHM8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pk1v cmUgc3VtbWFyeS48YnI+PC9kaXY+PGRpdj4jK2VuZF9zdW1tYXJ5PGJyPg0KDQpNYW55IGRldGFp bHMgaGVyZS48YnI+IytlbmRfZGV0YWlsczwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvYmxvY2tx dW90ZT48ZGl2Pjxicj48L2Rpdj48ZGl2PkZyb20gcXVpY2sgdGVzdGluZywgdGhpcyB3b3JrcyAo ZG9lc24mIzM5O3Qgc3VwcG9ydCB0aGUgZGl2IHRhZ3MgZm9yIEhUTUw0KS4gVGhlIGdvb2QgcGFy dCBpcyB0aGF0IHRoZSAmcXVvdDtzdW1tYXJ5JnF1b3Q7IFNwZWNpYWwgQmxvY2sgaXMgYXV0b21h dGljYWxseSBoYW5kbGVkIGJ5IG94LWh0bWwuwqA8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PsKg wqDCoMKgICgoc3RyaW5nPSBibG9jay10eXBlICZxdW90O2RldGFpbHMmcXVvdDspPGJyPsKgwqDC oMKgwqAgOzsgUmVjb2duaXplIE9yZyBTcGVjaWFsIGJsb2NrcyBsaWtlOjxicj7CoMKgwqDCoMKg IDs7wqDCoCAjK2JlZ2luX2RldGFpbHM8YnI+wqDCoMKgwqDCoCA7O8KgwqAgIytiZWdpbl9zdW1t YXJ5PGJyPsKgwqDCoMKgwqAgOzvCoMKgIFRoaXMgaXMgc3VtbWFyeS48YnI+wqDCoMKgwqDCoCA7 O8KgwqAgIytlbmRfc3VtbWFyeTxicj7CoMKgwqDCoMKgIDs7wqDCoCBIZXJlIGFyZSB0aGUgZGV0 YWlscy48YnI+wqDCoMKgwqDCoCA7O8KgwqAgIytlbmRfZGV0YWlsczxicj7CoMKgwqDCoMKgIChs ZXQqICgoaXMtb3BlbiAobWVtYmVyICZxdW90O29wZW4mcXVvdDsgKG9yZy1lbGVtZW50LXByb3Bl cnR5IDphdHRyX2h0bWwgc3BlY2lhbC1ibG9jaykpKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKHN0cjEgKG9yZy1ibGFja2ZyaWRheS1zcGVjaWFsLWJsb2NrIHNwZWNpYWwtYmxvY2sgY29u dGVudHMgbmlsKSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDs7IEluc2VydCBhIG5ldy1s aW5lIGJlZm9yZSB0aGUgY2xvc2luZyAmbHQ7L2RldGFpbHMmZ3Q7IHRhZzxicj7CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgOzsgZm9yIGNvcnJlY3QgTWFya2Rvd24gcGFyc2luZyBmb3IgY2FzZXMg d2hlbiB0aGU8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDs7IFNwZWNpYWwgQmxvY2sgY29u dGVudCBlbmRzIGEgY29kZSBibG9jay4gV2l0aG91dCB0aGlzPGJyPsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCA7OyBpbnNlcnRlZCBuZXdsaW5lLCB0aGUgTWFya2Rvd24gY29udmVydGVkIGNvbnRl bnQgd2lsbDxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOzsgbG9vayBsaWtlIGJlbG93LCBh bmQgQmxhY2tmcmlkYXkgd29uJiMzOTt0IHBhcnNlIGl0PGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCA7OyBjb3JyZWN0bHkuPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7O8KgwqAgYGBg ZW1hY3MtbGlzcDxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOzvCoMKgIChtZXNzYWdlICZx dW90O2EgY29kZSBibG9jayZxdW90Oyk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDs7wqDC oCBgYGAmbHQ7L2RldGFpbHMmZ3Q7PGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA7OyBBIGNs b3NpbmcgJmx0Oy9wJmd0OyB0YWcgaXMgYWxzbyBhZGRlZC4uIHRoZSBvcGVuaW5nICZsdDtwJmd0 Ozxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOzsgdGFnIGlzIGxhdGVyIGFkZGVkIGluIHRo ZSBgc3RyMiYjMzk7IHZhciBpZiBzdW1tYXJ5IGlzPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCA7OyBwcmVzZW50LCBlbHNlIGluIGBzdHIzJiMzOTsgdmFyLjxicj7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKHN0cjEgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAmcXVvdDsmbHQ7L2RldGFp bHMmZ3Q7XFwmIzM5OyZxdW90OyAmcXVvdDtcbiZsdDsvcCZndDtcXCZhbXA7JnF1b3Q7IHN0cjEp KTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOzsgRGV0ZWN0IHRoZSBzdW1tYXJ5IGNsb3Np bmcgdGFnICZxdW90OyZsdDsvc3VtbWFyeSZndDsmcXVvdDsuPGJyPsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCA7OyBBbHNvIGFkZCB0aGUgb3BlbmluZyAmbHQ7cCZndDsgdGFnIHdpdGggJnF1b3Q7 ZGV0YWlscyZxdW90OyBjbGFzczxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOzsgc28gdGhh dCBqdXN0IGFzIENTUyBydWxlcyBjYW4gYmUgc2V0IGZvciBzdW1tYXJ5PGJyPsKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCA7OyAoJnF1b3Q7ZGV0YWlscyBzdW1tYXJ5JnF1b3Q7KSwgdGhleSBjYW4g YmUgc2V0IGZvciB0aGUgZGV0YWlsczxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgOzsgcG9y dGlvbiBmb2xsb3dpbmcgdGhlICZsdDtzdW1tYXJ5Jmd0OyB0b28sIHVzaW5nICZxdW90O2RldGFp bHM8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDs7IC5kZXRhaWxzJnF1b3Q7Ljxicj7CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgKHN0cjIgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZzxicj7C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmcXVvdDtcXCgmbHQ7c3VtbWFy eSZndDtcXCguXFx8XG5cXCkqJmx0Oy9zdW1tYXJ5Jmd0O1xcKSZxdW90Ozxicj7CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmcXVvdDtcXDEmbHQ7cCBjbGFzcz1cJnF1b3Q7 ZGV0YWlsc1wmcXVvdDsmZ3Q7JnF1b3Q7PGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHN0cjEpKSk8YnI+wqDCoMKgwqDCoMKgwqAgOzsgKG1lc3NhZ2UgJnF1b3Q7W0RC RyBkZXRhaWxzL3N1bW1hcnldOiBpcy1vcGVuOiVTIGAlcyYjMzk7IGAlcyYjMzk7JnF1b3Q7IGlz LW9wZW4gc3RyMSBzdHIyKTxicj7CoMKgwqDCoMKgwqDCoCAoaWYgaXMtb3Blbjxicj7CoMKgwqDC oMKgwqDCoMKgwqDCoMKgIChyZXBsYWNlLXJlZ2V4cC1pbi1zdHJpbmcgJnF1b3Q7XFxgXFwoJmx0 O2RldGFpbHNcXCkmZ3Q7JnF1b3Q7ICZxdW90O1xcMSBvcGVuJmd0OyZxdW90OyBzdHIyKTxicj7C oMKgwqDCoMKgwqDCoMKgwqAgc3RyMikpKTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+QWxzbywg dGhpbmtpbmcgYWJvdXQgSFRNTDQgc3VwcG9ydCwgYXMgZGV0YWlscyBhbmQgc3VtbWFyeSB0YWdz IHdlcmUgYWRkZWQgaW4gSFRNTDUsIHRoZSAmcXVvdDtzdXBwb3J0JnF1b3Q7IHdvdWxkIGJlIHNp bXBseSB0byBhbmQgdGhlIChzdHJpbmc9IGJsb2NrLXR5cGUgJnF1b3Q7ZGV0YWlscyZxdW90Oykg Y29uZGl0aW9uIHdpdGggb3JnLWh0bWwtaHRtbDUtZmFuY3kgb3IgZXF1aXZhbGVudC4gU28gdGhl biBmb3IgSFRNTDQsIGRldGFpbHMgYW5kIHN1bW1hcnkgU3BlY2lhbCBCbG9ja3Mgd2lsbCBzaW1w bHkgYmUgZGl2IHRhZ3MuPGJyPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pi0tIDxicj48ZGl2IGRp cj0ibHRyIiBjbGFzcz0iZ21haWxfc2lnbmF0dXJlIiBkYXRhLXNtYXJ0bWFpbD0iZ21haWxfc2ln bmF0dXJlIj48cCBkaXI9Imx0ciI+S2F1c2hhbCBNb2RpPC9wPg0KPC9kaXY+DQo= --000000000000cbd55d056cf7d038--