summaryrefslogtreecommitdiffstats
path: root/emacsconf-stream.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacsconf-stream.el')
-rw-r--r--emacsconf-stream.el105
1 files changed, 46 insertions, 59 deletions
diff --git a/emacsconf-stream.el b/emacsconf-stream.el
index 6843219..3e60369 100644
--- a/emacsconf-stream.el
+++ b/emacsconf-stream.el
@@ -483,39 +483,50 @@ With a prefix argument (\\[universal-argument]), clear the overlay."
(interactive (list (emacsconf-complete-talk-info)))
(let* ((prev (or prev (emacsconf-previous-talk talk info)))
(dir (expand-file-name "in-between" emacsconf-stream-asset-dir))
- (template (expand-file-name "template.svg" dir))
- (dom (xml-parse-file template)))
- (mapc (lambda (entry)
- (let ((prefix (car entry)))
- (emacsconf-stream-svg-set-text dom (concat prefix "title")
- (plist-get (cdr entry) :title))
- (emacsconf-stream-svg-set-text dom (concat prefix "speakers")
- (plist-get (cdr entry) :speakers-with-pronouns))
- (emacsconf-stream-svg-set-text dom (concat prefix "url")
- (and (cdr entry) (concat emacsconf-base-url (plist-get (cdr entry) :url))))
- (emacsconf-stream-svg-set-text
- dom
- (concat prefix "qa")
- (pcase (plist-get (cdr entry) :q-and-a)
- ("live" "Live Q&A after talk")
- ("IRC" "IRC Q&A after talk")
- (_ "")))))
- (list (cons "previous-" prev)
- (cons "current-" talk)))
- (with-temp-file (expand-file-name (concat (plist-get talk :slug) ".svg") dir)
- (dom-print dom))
- (when (or force (null (file-exists-p (expand-file-name (concat (plist-get talk :slug) ".png")
- dir))))
- (shell-command
- (concat "inkscape --export-type=png -w 1280 -h 720 --export-background-opacity=0 "
- (shell-quote-argument (expand-file-name (concat (plist-get talk :slug) ".svg")
- dir))))
- (shell-command
- (concat "mogrify -alpha off "
- (shell-quote-argument (expand-file-name (concat (plist-get talk :slug) ".png")
- dir))))
- (expand-file-name (concat (plist-get talk :slug) ".png")
- dir))))
+ (template
+ (with-temp-buffer
+ (insert-file-contents
+ (expand-file-name "_template.tex" dir))
+ (buffer-string)))
+ (default-directory dir))
+ (write-region
+ (emacsconf-replace-plist-in-string
+ (list
+ :current-title
+ (or (plist-get talk :title) "")
+ :current-speakers
+ (or (plist-get talk :speakers) "")
+ :current-details
+ (format "%s\\\\\n%s"
+ (or (plist-get talk :absolute-url) "")
+ (pcase (plist-get talk :q-and-a)
+ ((rx "live") "Live Q\\&A after talk")
+ ((rx "pad") "Etherpad")
+ ((rx "IRC") "IRC Q\\&A after talk")
+ (_ "")))
+ :previous-title
+ (or (plist-get prev :title) "")
+ :conf-name emacsconf-name
+ :conf-year emacsconf-year
+ :previous-speakers
+ (or (plist-get prev :speakers) "")
+ :previous-details
+ (format "%s\\\\\n%s"
+ (or (plist-get prev :absolute-url) "")
+ (pcase (plist-get prev :q-and-a)
+ ((rx "live") "Live Q\\&A after talk")
+ ((rx "pad") "Etherpad")
+ ((rx "IRC") "IRC Q\\&A after talk")
+ (_ ""))))
+ template)
+ nil
+ (expand-file-name (concat (plist-get talk :slug) ".tex") dir))
+ (shell-command
+ (format "lualatex -shell-escape %s && inkscape --pdf-poppler --export-type=png -w 1280 -h 720 --export-background-opacity=0 --export-text-to-path %s"
+ (expand-file-name (concat (plist-get talk :slug) ".tex")
+ dir)
+ (expand-file-name (concat (plist-get talk :slug) ".pdf")
+ dir)))))
;; (emacsconf-stream-generate-in-between-page (emacsconf-resolve-talk "science") nil nil t)
;; (emacsconf-stream-generate-in-between-page (emacsconf-resolve-talk "health") nil nil t)
;; (emacsconf-stream-generate-in-between-page (emacsconf-resolve-talk "eev") nil nil t)
@@ -545,37 +556,13 @@ With a prefix argument (\\[universal-argument]), clear the overlay."
(setq info (or emacsconf-schedule-draft (emacsconf-publish-prepare-for-display (emacsconf-filter-talks (or info (emacsconf-get-talk-info))))))
(let* ((by-track (seq-group-by (lambda (o) (plist-get o :track)) info))
(dir (expand-file-name "in-between" emacsconf-stream-asset-dir))
- (template (expand-file-name "template.svg" dir)))
+ (default-directory dir))
(unless (file-directory-p dir)
(make-directory dir t))
(mapc (lambda (track)
(let (prev)
(mapc (lambda (talk)
- (let ((dom (xml-parse-file template)))
- (mapc (lambda (entry)
- (let ((prefix (car entry)))
- (emacsconf-stream-svg-set-text dom (concat prefix "title")
- (plist-get (cdr entry) :title))
- (emacsconf-stream-svg-set-text dom (concat prefix "speakers")
- (plist-get (cdr entry) :speakers))
- (emacsconf-stream-svg-set-text dom (concat prefix "url")
- (and (cdr entry) (concat emacsconf-base-url (plist-get (cdr entry) :url))))
- (emacsconf-stream-svg-set-text
- dom
- (concat prefix "qa")
- (pcase (plist-get (cdr entry) :q-and-a)
- ((rx "live") "Live Q&A after talk")
- ((rx "pad") "Etherpad")
- ((rx "IRC") "IRC Q&A after talk")
- (_ "")))))
- (list (cons "previous-" prev)
- (cons "current-" talk)))
- (with-temp-file (expand-file-name (concat (plist-get talk :slug) ".svg") dir)
- (dom-print dom))
- (shell-command
- (concat "inkscape --export-type=png -w 1280 -h 720 --export-background-opacity=0 "
- (shell-quote-argument (expand-file-name (concat (plist-get talk :slug) ".svg")
- dir)))))
+ (emacsconf-stream-generate-in-between-page talk prev)
(setq prev talk))
(emacsconf-filter-talks (cdr track)))))
by-track)))