-
-
Save priyadarshan/cb3ad8d2f7fedfb8f90cc5a083987aa1 to your computer and use it in GitHub Desktop.
org2blog: Wordpress crayon-plugin Backend for Org Export Engine
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;; ox-wp-crayon.el - Wordpress crayon-plugin Backend for Org Export Engine | |
;;; overrides org-wp-src-block function of org2blog / ox-wp package, https://github.com/punchagan/org2blog | |
;;; Copyright (C) 2017 [email protected] | |
;;; Version: 20170110-1 | |
;; 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/>. | |
(require 'ox-wp) | |
(defvar ox-wp-caption-format-str | |
'"style=\"text-align:center; font-family:Verdana,'Lucida Sans Unicode',sans-serif; font-style:italic; font-size:small;\"" | |
"Styles for caption" | |
) | |
;; Supported cranyon attributes: | |
;; - lang: programming language | |
;; - title: set a title, e.g. #+ATTR_WP: title:"best code ever" | |
;; - mark: highlight lines, e.g. #+ATTR_WP: markhl:2-5 | |
;; https://github.com/aramk/crayon-syntax-highlighter | |
(defun org-wp-src-block-crayon (src-block contents info) | |
"Transcode a SRC-BLOCK element from Org to WP Cranyon HTML. | |
CONTENTS holds the contents of the item. INFO is a plist holding | |
contextual information." | |
(let ((lang (org-element-property :language src-block)) | |
(caption (let ((cp (org-export-get-caption src-block))) | |
(if cp (format "<figcaption %s>%s</figcaption>" (or ox-wp-caption-format-str "") cp)))) | |
;; Crayon doesn't supported captions well, there is a <p/> tag between code and caption and | |
;; I have not found a way arround that. So I recommend not to use captions actually. | |
(langs-map (plist-get info :wp-shortcode-langs-map)) | |
(markhl (let ((ml (org-export-read-attribute :attr_wp src-block :markhl))) | |
(if ml (concat " mark:" ml)))) | |
(blktitle (let ((tl (org-export-read-attribute :attr_wp src-block :title))) | |
(if tl (concat " title=\"" tl "\""))))) | |
(format "<figure><pre class=\"lang:%s%s decode:true \" %s>%s</pre>%s</figure>" | |
(or (cdr (assoc lang langs-map)) (when lang (downcase lang)) "text") | |
(or markhl "") | |
(or blktitle "") | |
(org-export-format-code-default src-block info) | |
(or caption "") | |
))) | |
(advice-add 'org-wp-src-block :override #'org-wp-src-block-crayon) | |
(provide 'ox-wp-crayon) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment