Re: [O] html checkbox output

2014-01-07 Thread Rick Frankel
Bastien-

Top quoting to keep the history but save the search to the bottom
:)...

Yes, i will rework/simplify the patch (remove the free-form option and
the in-buffer setting), but I've been short on time the last week or
so.. Will fix it and push this week.

BTW, I've kept ascii output as the default mostly so I don't break the
regression test. Should I leave it alone or make utf-8 the default and
update the test?


rick
On Sat, Jan 04, 2014 at 10:36:13AM +0100, Bastien wrote:
 Hi Nicolas and Rick,
 
 Nicolas Goaziou n.goaz...@gmail.com writes:
 
  A new buffer keyword (which needs to be documented in org.texi),
  a defcustom with a completely free sexp... Isn't it a bit too much for
  mere checkboxes?
 
 Personally I think the defcustom is enough, as this choice is likely
 to be made for all Org documents.
 
  Filters provide almost the same functionality:
 
(defun my-checkbox-filter (item backend info)
  (when (org-export-derived-backend-p backend 'html)
(replace-regexp-in-string 
  \\`.*\\(code\\[\\(X\\|#xa0;\\|-\\)\\]/code\\).*$
  (lambda (rep)
(let ((check (match-string 2 rep)))
  (cond ((equal check X) #x2611;)
((equal check -) #x2610;)
(t #x2610;
  item
  nil nil 1)))
(add-to-list 'org-export-filter-item-functions 'my-checkbox-filter)
 
 Yes, but a defcustom would be easier.
 
  Anyway, here are a few comments.
 
  +(defcustom org-html-checkbox-type ascii
  +  The type of checkboxes to use for html export. See
 
  First line of a docstring has to be a single complete sentence.
 
  +(defun org-html-checkbox (checkbox info)
  +  Format CHECKBOX into HTML. This can be overriden on a
 
  Ditto.
 
  +(cdr
  + (assoc checkbox
 
(assq checkbox
 
  +  (if (listp checkboxes) checkboxes
  +(if (string-equal (substring checkboxes 0 1) ()
 
(if (eq (aref checkboxes 0) ?\()
 
  +(read checkboxes)
 
  This looks cheesy. `read'? Do you really want to parse arbitrary
  Sexps?
 
 Can we re-work Rick's patch/code and add this feature?  Rick,
 are you still on it?
 
 Thanks,
 



Re: [O] html checkbox output

2014-01-07 Thread Bastien
Rick Frankel r...@rickster.com writes:

 Yes, i will rework/simplify the patch (remove the free-form option and
 the in-buffer setting), but I've been short on time the last week or
 so.. Will fix it and push this week.

Thanks!

 BTW, I've kept ascii output as the default mostly so I don't break the
 regression test. Should I leave it alone or make utf-8 the default and
 update the test?

I'm for keeping the ascii output as the default one,
but if people prefer the utf-8 one, so be it.

-- 
 Bastien



Re: [O] html checkbox output

2014-01-06 Thread Nicolas Goaziou
Hello,

Bastien b...@gnu.org writes:

 Hi Nicolas and Rick,

 Nicolas Goaziou n.goaz...@gmail.com writes:

 A new buffer keyword (which needs to be documented in org.texi),
 a defcustom with a completely free sexp... Isn't it a bit too much for
 mere checkboxes?

 Personally I think the defcustom is enough, as this choice is likely
 to be made for all Org documents.

 Filters provide almost the same functionality:

   (defun my-checkbox-filter (item backend info)
 (when (org-export-derived-backend-p backend 'html)
   (replace-regexp-in-string 
 \\`.*\\(code\\[\\(X\\|#xa0;\\|-\\)\\]/code\\).*$
 (lambda (rep)
   (let ((check (match-string 2 rep)))
 (cond ((equal check X) #x2611;)
   ((equal check -) #x2610;)
   (t #x2610;
 item
 nil nil 1)))
   (add-to-list 'org-export-filter-item-functions 'my-checkbox-filter)

 Yes, but a defcustom would be easier.

As long as it doesn't let you write completely free sexps. Otherwise,
a function is equally complex.


Regards,

-- 
Nicolas Goaziou



Re: [O] html checkbox output

2014-01-06 Thread Bastien
Nicolas Goaziou n.goaz...@gmail.com writes:

 As long as it doesn't let you write completely free sexps.

I agree.  But this is a very minor issue with Rick's patch,
the bulk of the work is done and I'd be glad to see it applied,
with the limitations we've been discussing.  If Rick is on it,
let's wait for this.

-- 
 Bastien



Re: [O] html checkbox output

2014-01-04 Thread Bastien
Hi Nicolas and Rick,

Nicolas Goaziou n.goaz...@gmail.com writes:

 A new buffer keyword (which needs to be documented in org.texi),
 a defcustom with a completely free sexp... Isn't it a bit too much for
 mere checkboxes?

Personally I think the defcustom is enough, as this choice is likely
to be made for all Org documents.

 Filters provide almost the same functionality:

   (defun my-checkbox-filter (item backend info)
 (when (org-export-derived-backend-p backend 'html)
   (replace-regexp-in-string 
 \\`.*\\(code\\[\\(X\\|#xa0;\\|-\\)\\]/code\\).*$
 (lambda (rep)
   (let ((check (match-string 2 rep)))
 (cond ((equal check X) #x2611;)
   ((equal check -) #x2610;)
   (t #x2610;
 item
 nil nil 1)))
   (add-to-list 'org-export-filter-item-functions 'my-checkbox-filter)

Yes, but a defcustom would be easier.

 Anyway, here are a few comments.

 +(defcustom org-html-checkbox-type ascii
 +  The type of checkboxes to use for html export. See

 First line of a docstring has to be a single complete sentence.

 +(defun org-html-checkbox (checkbox info)
 +  Format CHECKBOX into HTML. This can be overriden on a

 Ditto.

 +(cdr
 + (assoc checkbox

   (assq checkbox

 +(if (listp checkboxes) checkboxes
 +  (if (string-equal (substring checkboxes 0 1) ()

   (if (eq (aref checkboxes 0) ?\()

 +  (read checkboxes)

 This looks cheesy. `read'? Do you really want to parse arbitrary
 Sexps?

Can we re-work Rick's patch/code and add this feature?  Rick,
are you still on it?

Thanks,

-- 
 Bastien



[O] html checkbox output

2013-12-06 Thread Rick Frankel
So, here's a patch I would like a couple of people to try before i
commit it. It provides customization of checkbox formatting for html
output (unicode, ascii, checkbox input fields or custom). I couldn't
figure out how to add an association list customization with preset
options to a customization choice, so the custom option is a
partilally pre-filled sexp.

The default is still ascii, partially so that the checkbox tests don't
fail w/o being changed.

Let me know if this works for every of if it is too complex a solution
befor I apply it to master.

tia
rick
From 41da34c352f9c3899ece8294c3f618b665f12281 Mon Sep 17 00:00:00 2001
From: Rick Frankel r...@rickster.com
Date: Tue, 3 Dec 2013 14:37:30 -0500
Subject: [PATCH] Add customization options for html checkboxes.

* lisp/ox-html.el (html): Add in-buffer option HTML_CHECKBOX_TYP
(org-html-checkbox-types): New constant. Contains unicode, ascii and html
checkbox alists.
(org_html_checkbox_type): New customzation variable can be set to one
of the above choices or a user-entered alist.
(org_html_checkbox): Use of `:html-checkbox-type' export option.
---
 lisp/ox-html.el | 62 ++---
 1 file changed, 55 insertions(+), 7 deletions(-)

diff --git a/lisp/ox-html.el b/lisp/ox-html.el
index 9fa0a8c..8d0e3e3 100644
--- a/lisp/ox-html.el
+++ b/lisp/ox-html.el
@@ -126,6 +126,7 @@
 (:html-head-include-scripts nil html-scripts 
org-html-head-include-scripts)
 (:html-table-attributes nil nil org-html-table-default-attributes)
 (:html-table-row-tags nil nil org-html-table-row-tags)
+(:html-checkbox-type HTML_CHECKBOX_TYPE nil org-html-checkbox-type)
 (:html-xml-declaration nil nil org-html-xml-declaration)
 (:html-inline-images nil nil org-html-inline-images)
 (:infojs-opt INFOJS_OPT nil nil)
@@ -973,6 +974,42 @@ org-info.js for your website.
   (list :tag Postamble (const :format  postamble)
 (string :tag  id) (string :tag element
 
+(defconst org-html-checkbox-types
+  '((unicode .
+ ((on . #x2611;) (off . #x2610;) (trans . #x2610;)))
+(ascii .
+ ((on . code[X]/code)
+  (off . code[#xa0;]/code)
+  (trans . code[-]/code)))
+(html .
+ ((on . input type='checkbox' checked='checked' /)
+ (off . input type='checkbox' /)
+ (trans . input type='checkbox' /
+  Alist of checkbox types.
+The cdr of each entry is an alist list three checkbox types for
+html export: \on\, \off\ and \trans\.
+
+The choices are:
+  - unicode characters (html entities)
+  - ascii characters
+  - html checkboxes
+  - a user defined alist
+Note that only the ascii characters implement tri-state
+checkboxes. The other two use the \off\ checkbox for \trans\.)
+
+(defcustom org-html-checkbox-type ascii
+  The type of checkboxes to use for html export. See
+`org-html-checkbox-types' for for the preset values.
+  :group 'org-export-html
+  :version 24.4
+  :package-version '(Org . 8.0)
+  :type '(choice
+ (const :tag Unicode characters unicode)
+ (const :tag Ascii characters ascii)
+ (const :tag HTML checkboxes html)
+ (sexp :tag Custom alist
+   ((on . ) (off . ) (trans . )
+
 (defcustom org-html-metadata-timestamp-format %Y-%m-%d %a %H:%M
   Format used for timestamps in preamble, postamble and metadata.
 See `format-time-string' for more information on its components.
@@ -2415,18 +2452,29 @@ contextual information.
 
  Item
 
-(defun org-html-checkbox (checkbox)
-  Format CHECKBOX into HTML.
-  (case checkbox (on code[X]/code)
-   (off code[#xa0;]/code)
-   (trans code[-]/code)
-   (t )))
+(defun org-html-checkbox (checkbox info)
+  Format CHECKBOX into HTML. This can be overriden on a
+per-buffer basis with the \HTML_CHECKBOX_TYPE\ property,
+which can be either the name of one of the entries in the
+`org-html-checkbox-types' variable or an alist of the form:
+   ((on . \\) (off . \\) (trans . \\).
+See `org-html-checkbox-type' for customization.
+  (let ((checkboxes (plist-get info :html-checkbox-type)))
+(cdr
+ (assoc checkbox
+   (if (listp checkboxes) checkboxes
+ (if (string-equal (substring checkboxes 0 1) ()
+ (read checkboxes)
+   (cdr (assoc
+   (intern checkboxes)
+   org-html-checkbox-types
 
 (defun org-html-format-list-item (contents type checkbox info
 optional term-counter-id
 headline)
   Format a list item into HTML.
-  (let ((checkbox (concat (org-html-checkbox checkbox) (and checkbox  )))
+  (let ((checkbox (concat (org-html-checkbox checkbox info)
+ (and checkbox  )))
(br (org-html-close-tag br nil info)))
 (concat
  (case type
-- 
1.8.0



Re: [O] html checkbox output

2013-12-06 Thread Nicolas Goaziou
Hello,

Rick Frankel r...@rickster.com writes:

 So, here's a patch I would like a couple of people to try before i
 commit it. It provides customization of checkbox formatting for html
 output (unicode, ascii, checkbox input fields or custom). I couldn't
 figure out how to add an association list customization with preset
 options to a customization choice, so the custom option is a
 partilally pre-filled sexp.

 The default is still ascii, partially so that the checkbox tests don't
 fail w/o being changed.

 Let me know if this works for every of if it is too complex a solution
 befor I apply it to master.

A new buffer keyword (which needs to be documented in org.texi),
a defcustom with a completely free sexp... Isn't it a bit too much for
mere checkboxes? Filters provide almost the same functionality:

  (defun my-checkbox-filter (item backend info)
(when (org-export-derived-backend-p backend 'html)
  (replace-regexp-in-string 
\\`.*\\(code\\[\\(X\\|#xa0;\\|-\\)\\]/code\\).*$
(lambda (rep)
  (let ((check (match-string 2 rep)))
(cond ((equal check X) #x2611;)
  ((equal check -) #x2610;)
  (t #x2610;
item
nil nil 1)))
  (add-to-list 'org-export-filter-item-functions 'my-checkbox-filter)

Anyway, here are a few comments.

 +(defcustom org-html-checkbox-type ascii
 +  The type of checkboxes to use for html export. See

First line of a docstring has to be a single complete sentence.

 +(defun org-html-checkbox (checkbox info)
 +  Format CHECKBOX into HTML. This can be overriden on a

Ditto.

 +(cdr
 + (assoc checkbox

  (assq checkbox

 + (if (listp checkboxes) checkboxes
 +   (if (string-equal (substring checkboxes 0 1) ()

  (if (eq (aref checkboxes 0) ?\()

 +   (read checkboxes)

This looks cheesy. `read'? Do you really want to parse arbitrary Sexps?


Regards,

-- 
Nicolas Goaziou