Re: [O] another blog exporter
Hello, thank you very much for your feedback. On 02/10/2014 12:30 PM, Nicolas Goaziou wrote: Hello, Bastien b...@gnu.org writes: Somehow this calls for a way to let a backend use several affiliated keywords. For example you would have: #+ATTR_HTML: :width 400px #+ATTR_BLOG: :lineno t Org already provided a syntax to number lines in source blocks. Couldn't it be used instead? #+begin_src emacs-lisp -n ... #+end_src Thanks a lot, I didn't know about this feature. Now I use the -n/+n flags. When using -n flag the ATTR_BLOG attribute :firstline is used as the first line number; the default is 1 as in the LaTeX exporter. and the exporter would take both into account, letting you to simply export to HTML without the need to add redundant information. Nicolas, did this cross your mind? Or maybe this is already feasible? This is already feasible. See `org-beamer-plain-list' for an example. Both #+attr_latex and #+attr_beamer are read but the latter has precedence over the former. I already use this, but I felt a need to document those attributes that get extra treatment: wordpress uses class=alignleft instead of HTML align=right and I changed the style handling to support surrounding double quotes ( :style margin: 9pt; background: red; ) Best regards Robert
Re: [O] another blog exporter
Hi Robert, Robert Klein rokl...@roklein.de writes: I posted the latest three posts on http://www.xyzzy.de using ox-blog. Neat, thanks! I can use #+ATTR_HTML, but I wasn't sure about using new attributes, e.g. :highlight and :lineno for source blocks. I didn't want to pollute ATTR_HTML with things that are of no use for the HTML exporter. You're right. Somehow this calls for a way to let a backend use several affiliated keywords. For example you would have: #+ATTR_HTML: :width 400px #+ATTR_BLOG: :lineno t and the exporter would take both into account, letting you to simply export to HTML without the need to add redundant information. Nicolas, did this cross your mind? Or maybe this is already feasible? If you don't see a problem in #+ATTR_HTML, I'll happily change this. No, that will pollute the HTML export (I don't expect anything weird in the HTML output with unknown attributes, but the document will not validate correctly, and this is confusing anyway.) Thanks! -- Bastien
Re: [O] another blog exporter
Hello, Bastien b...@gnu.org writes: Somehow this calls for a way to let a backend use several affiliated keywords. For example you would have: #+ATTR_HTML: :width 400px #+ATTR_BLOG: :lineno t Org already provided a syntax to number lines in source blocks. Couldn't it be used instead? #+begin_src emacs-lisp -n ... #+end_src and the exporter would take both into account, letting you to simply export to HTML without the need to add redundant information. Nicolas, did this cross your mind? Or maybe this is already feasible? This is already feasible. See `org-beamer-plain-list' for an example. Both #+attr_latex and #+attr_beamer are read but the latter has precedence over the former. Regards, -- Nicolas Goaziou
Re: [O] another blog exporter
Hi Bastien, On 02/09/2014 08:55 AM, Bastien wrote: Hi Robert, Robert Klein rokl...@roklein.de writes: I put ox-blog on github: https://github.com/roklein/ox-blog Thanks for your work on this, looks neat. Do you have an example website produced by ox-blog? Also, I see you use a new #+ATTR_BLOG keyword. Is this needed for images and such? I'd expect #+ATTR_HTML would be enough here, users won't want to use both #+ATTR_HTML and #+ATTR_BLOG I guess. I posted the latest three posts on http://www.xyzzy.de using ox-blog. I can use #+ATTR_HTML, but I wasn't sure about using new attributes, e.g. :highlight and :lineno for source blocks. I didn't want to pollute ATTR_HTML with things that are of no use for the HTML exporter. If you don't see a problem in #+ATTR_HTML, I'll happily change this. Thanks for the feed-back! Best regards Robert
Re: [O] another blog exporter
Hi Ken On 02/08/2014 01:27 AM, Ken Mankoff wrote: Hi Robert, On Fri, 7 Feb 2014, Robert Klein wrote: around the org-mode 8.0 release I began to write a new blog exporter using the new export framework. I wanted one feature org2blog didn't offer, support for different syntax highlighters, and i wanted to learn about the new exporter and Emacs programming. Does your exporter work across multiple files (one file per post), or only one file? -k. It works both ways, just like the other exporters: C-c C-e b ... exports the whole file C-c C-e C-s b ... exports the current subtree If you set up the `org-blog-project-alist', all files in the `base-directory' can be exported. Best regards Robert
Re: [O] another blog exporter
Hi, I put ox-blog on github: https://github.com/roklein/ox-blog I removed the unnecessary org-blog-example-block and added some attributes to be used with source blocks (line numbers, highlighting of lines, title). Best regards Robert On 02/07/2014 06:10 PM, Robert Klein wrote: Hi, around the org-mode 8.0 release I began to write a new blog exporter using the new export framework. I wanted one feature org2blog didn't offer, support for different syntax highlighters, and i wanted to learn about the new exporter and Emacs programming. Around Christmas I did some polishing to make it ready for a greater public. Would there a place for it in contrib/ or is it better suited for a github repository? Thanks and best regards Robert
Re: [O] another blog exporter
Hi Robert, Robert Klein rokl...@roklein.de writes: I put ox-blog on github: https://github.com/roklein/ox-blog Thanks for your work on this, looks neat. Do you have an example website produced by ox-blog? Also, I see you use a new #+ATTR_BLOG keyword. Is this needed for images and such? I'd expect #+ATTR_HTML would be enough here, users won't want to use both #+ATTR_HTML and #+ATTR_BLOG I guess. Best, -- Bastien
[O] another blog exporter
Hi, around the org-mode 8.0 release I began to write a new blog exporter using the new export framework. I wanted one feature org2blog didn't offer, support for different syntax highlighters, and i wanted to learn about the new exporter and Emacs programming. Around Christmas I did some polishing to make it ready for a greater public. Would there a place for it in contrib/ or is it better suited for a github repository? Thanks and best regards Robert ;;; ox-blog.el --- Blog Back-End for Org Export Engine ;; Copyright (C) 2013, 2014 Robert Klein ;; Author: Robert Klein roklein at roklein dot de ;; Keywords: WordPress, HTML ;; This file is not part of GNU Emacs. ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see http://www.gnu.org/licenses/. ;;; Commentary: ;; This library implements an blog back-end for the Org ;; generic exporter. ;; To test it, run: ;; ;; M-x org-blog-export-as-html ;; ;; in an Org mode buffer. See ox.el and ox-html.el for more details ;; on how this exporter works. ;;; Code: (require 'ox-html) ;; in turn requires ox-publish and ox. (require 'xml-rpc) ; (require 'wp-xml-rpc) ; (require 'cl) (org-export-define-derived-backend 'blog 'html :menu-entry '(?b Export to WP Blog Presentation ((?H To temporary buffer org-blog-export-as-html) (?h To file org-blog-export-to-html) (?d To blog as draft org-blog-export-to-blog-as-draft) (?p To blog and publish org-blog-export-to-blog-as-publish) (?o To file and open (lambda (a s v b) (if a (org-blog-export-to-html t s v b) (org-open-file (org-blog-export-to-html nil s v b))) :options-alist '((:blog-url BLOG_URL nil nil t) (:blog-username BLOG_USERNAME nil nil t) (:blog-id BLOG_ID nil nil t) (:blog-password BLOG_PASSWORD nil nil t) (:blog-post-id BLOG_POST_ID nil nil t) (:blog-publish-datetime BLOG_PUBLISH_DATETIME nil nil t) (:blog-post-type BLOG_POST_TYPE post-type org-blog-post-type t) (:blog-syntax-highlighter BLOG_SYNTAX_HIGHLIGHTER bloghl org-blog-syntax-highlighter t) (:blog-timezone BLOG_TIMEZONE blogtz nil t) (:blog-tags BLOG_TAGS nil org-blog-tags newline) (:blog-confirm-new-tags BLOG_CONFIRM_NEW_TAGS nil org-blog-confirm-new-tags t) (:blog-categories BLOG_CATEGORIES nil org-blog-categories newline) (:blog-confirm-new-categories BLOG_CONFIRM_NEW_CATEGORIES nil org-blog-confirm-new-categories t) (:blog-use-tags-as-categories BLOG_USE_TAGS_AS_CATEGORIES nil nil t) (:blog-upload-filetypes BLOG_UPLOAD_FILETYPES nil org-blog-upload-filetypes split)) :translate-alist '(;(inner-template . org-blog-inner-template) ;; use org-html-inner-template (example-block . org-blog-example-block) (keyword . org-blog-keyword) (latex-environment . org-blog-latex-environment) (latex-fragment . org-blog-latex-fragment) (link . org-blog-link) (src-block . org-blog-src-block) (template . org-blog-template))) ;;; Internal variables ;(defvar org-blog-id 1 ; ID of blog. Typically 1.) (defvar org-blog-files-to-upload nil A list containing the file names to upload to the blog.) (defvar org-blog-image-list nil Images to upload/change URL in buffer.) ;;; User Configuration Variables (defgroup org-export-blog nil Options for exporting Org mode files to a wordpress based blog. :tag Org Export Blog :group 'org-export) (defcustom org-blog-project-alist nil Association list to control blog publication behavior. Eash element of the alist is a blog 'project.' The CAR of each element is a string, uniquely identifying the project. The CDR of each element is in the following form: 1. A well-formed property list with an even number of elements, alternating keys and values, specifying parameters for the publishing process. When a property is given a value in `org-blog-project-alist', its setting overrides the value of the corresponding user variable (if any) during publishing. However, options set within a file override everything. Most properties are optional, but some should always be set: `:base-directory' Directory containing publishing source files. `:blog-url' Blog where posts will be published. `:blog-id' Blog ID; usually `1'. Some properties control details of the Org publishing process, and are equivalent to the
Re: [O] another blog exporter
Robert Klein rokl...@roklein.de writes: Hi, around the org-mode 8.0 release I began to write a new blog exporter using the new export framework. I wanted one feature org2blog didn't offer, support for different syntax highlighters, and i wanted to learn about the new exporter and Emacs programming. Around Christmas I did some polishing to make it ready for a greater public. Cool. Could you provide an example blog so that we can see the output? ;;; Transcode Functions Example Block (defun org-blog-example-block (example-block contents info) Transcode a EXAMPLE-BLOCK element from Org to HTML. CONTENTS is nil. INFO is a plist holding contextual information. (if (org-export-read-attribute :attr_html example-block :textarea) (org-html--textarea-block example-block) ;;; beginnin here we need org/wp-syntac/syntaxhl information (format pre class=\example\\n%s/pre (org-html-format-code example-block info Isn't this an exact copy of the corresponding entry in ox-html (Less the name)? Why? Latex Environment (defun org-blog-latex-environment (latex-environment contents info) Transcode a LATEX-ENVIRONMENT element from Org to HTML. CONTENTS is nil. INFO is a plist holding contextual information. (let ((processing-type (plist-get info :with-latex)) (latex-frag (org-remove-indentation (org-element-property :value latex-environment))) (attributes (org-combine-plists (org-export-read-attribute :attr_html latex-environment) (org-export-read-attribute :attr_blog latex-environment (case processing-type ((t mathjax) (org-html-format-latex latex-frag 'mathjax info)) ((dvipng imagemagick) (let ((formula-link (org-html-format-latex latex-frag processing-type info))) (when (and formula-link (string-match file:\\([^]]*\\) formula-link)) ;; Do not provide a caption or a name to be consistent with ;; `mathjax' handling. (org-html--wrap-image (org-blog--format-image (match-string 1 formula-link) attributes info) info (t latex-frag Same. There seems to be a couple of these. . . Rasmus -- Don't panic!!!
Re: [O] another blog exporter
Hi Rasmus, thank you very much for your feedback! On 02/07/2014 06:35 PM, Rasmus wrote: Could you provide an example blog so that we can see the output? The two latest posts (FreeBSD and DHCP) at http://www.xyzzy.de/ I put the original org for download at the end of both posts. ;;; Transcode Functions Example Block (defun org-blog-example-block (example-block contents info) Transcode a EXAMPLE-BLOCK element from Org to HTML. CONTENTS is nil. INFO is a plist holding contextual information. (if (org-export-read-attribute :attr_html example-block :textarea) (org-html--textarea-block example-block) ;;; beginnin here we need org/wp-syntac/syntaxhl information (format pre class=\example\\n%s/pre (org-html-format-code example-block info Isn't this an exact copy of the corresponding entry in ox-html (Less the name)? Why? - org-blog-example-block /is/ an exact copy, I planned to add the highlighters here, too, and to support line numbers. Forgot it :( - org-blog-latex-environment adds support for =#+ATTR_BLOG:= - org-blog-latex-fragment currently also is an exact copy. I'm not sure mathjax works, so I put it here for further work. - org-blog-link supports =attr_blog= and fills the list of images to be uploaded. (I really hated to copy this one... in an earler version I cl-flet-ted org-html--format-image to avoid copying this one. for org-blog-export-[as|to]-blog, I had no choice. :) I just found out, when I introduced scheduled posting I broke unscheduled posting; this is the patch: --- emacs/ox-blog.el2014-01-21 10:57:50 + +++ emacs/ox-blog.el2014-02-07 18:38:52 + @@ -1089,7 +1089,7 @@ ;; administrator may post (post-status (cond ((equal draft-or-publish-p draft) draft) ((equal contributor user-role) pending) - ((and publish-datetime + ((and (not (string= publish-datetime)) (or (equal author user-role) (equal administrator user-role))) future) Best regards and thank you very much for the feedback, Robert
Re: [O] another blog exporter
Hi Robert, On Fri, 7 Feb 2014, Robert Klein wrote: around the org-mode 8.0 release I began to write a new blog exporter using the new export framework. I wanted one feature org2blog didn't offer, support for different syntax highlighters, and i wanted to learn about the new exporter and Emacs programming. Does your exporter work across multiple files (one file per post), or only one file? -k.