From 4b9096c7955cb0e57b89512e57227254fac14663 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Tue, 4 Oct 2022 15:10:16 -0400 Subject: gen,dev * sat,sun * am,pm --- emacsconf-publish.el | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ emacsconf-schedule.el | 44 +++++++++++++++++++++++++---------------- 2 files changed, 82 insertions(+), 17 deletions(-) diff --git a/emacsconf-publish.el b/emacsconf-publish.el index 286b1ff..acb7239 100644 --- a/emacsconf-publish.el +++ b/emacsconf-publish.el @@ -418,6 +418,61 @@ resources." info "\n"))) (save-buffer)))) + +(defun emacsconf-generate-main-schedule-with-tracks (&optional info) + (interactive) + (setq info (or info (emacsconf-schedule-inflate-sexp emacsconf-schedule-plan + (emacsconf-get-talk-info)))) + (with-temp-file (expand-file-name "schedule-details.md" + (expand-file-name emacsconf-year emacsconf-directory)) + (let ((links + (mapconcat (lambda (track) + (concat (cadr track) ": " + (mapconcat (lambda (sec) + (format "%s" + (car track) (car sec) (cadr sec))) + '(("sat-am" "Sat AM") + ("sat-pm" "Sat PM") + ("sun-am" "Sun AM") + ("sun-pm" "Sun PM")) + " - "))) + '(("gen" "General") + ("dev" "Development")) + " \n"))) + (insert (mapconcat + (lambda (track) + (let* ((id (elt track 0)) + (label (elt track 1)) + (start (elt track 2)) + (end (elt track 3)) + (sequence (emacsconf-schedule-get-subsequence info start end)) + (sat (emacsconf-schedule-get-subsequence sequence "Saturday" "Sunday")) + (sun (emacsconf-schedule-get-subsequence sequence "Sunday"))) + (format "\n\n\n## %s\n\n%s\n\n" + id + label + (mapconcat + (lambda (section) + (let ((section-id (elt section 0)) + (section-label (elt section 1)) + (section-seq (caddr section))) + (format "%s\n\n\n### %s track - %s\n%s\n" + links + id section-id + label + section-label + (emacsconf-format-main-schedule + section-seq)))) + `(("sat-am" "Saturday morning - Dec 3" ,(cdr (emacsconf-schedule-get-subsequence sat nil "LUNCH"))) + ("sat-pm" "Saturday afternoon - Dec 3" ,(cdr (emacsconf-schedule-get-subsequence sat "LUNCH"))) + ("sun-am" "Sunday morning - Dec 4" ,(cdr (emacsconf-schedule-get-subsequence sun nil "LUNCH"))) + ("sun-pm" "Sunday afternoon - Dec 4" ,(cdr (emacsconf-schedule-get-subsequence sun "LUNCH")))) + "\n\n") + ))) + '(("gen" "General" "^GEN Sat" "^DEV Sat") + ("dev" "Development" "^DEV Sat")) + "\n"))))) + (defun emacsconf-generate-main-schedule (&optional info) (interactive) (with-temp-file (expand-file-name "schedule-details.md" (expand-file-name emacsconf-year emacsconf-directory)) diff --git a/emacsconf-schedule.el b/emacsconf-schedule.el index 9d17ace..94b61aa 100644 --- a/emacsconf-schedule.el +++ b/emacsconf-schedule.el @@ -268,16 +268,21 @@ Each function should take the info and manipulate it as needed, returning the ne 'rect `((x . ,x) (y . ,y) - (width . ,(if vertical width size)) - (height . ,(1- (if vertical size height))) - (stroke . "black") - (fill . ,(cond - ((string-match "BREAK\\|LUNCH" (plist-get o :title)) "white") - ((plist-get o :invalid) "red") - ((string-match "EST" - (or (plist-get o :availability) "")) - "lightgray") - (t "lightgreen"))))) + (width . ,(if vertical width size)) + (height . ,(1- (if vertical size height))) + (stroke . "black") + (stroke-dasharray . + ,(if (string-match "live" (or (plist-get o :q-and-a) "live")) + "" + "5,5,5" + )) + (fill . ,(cond + ((string-match "BREAK\\|LUNCH" (plist-get o :title)) "white") + ((plist-get o :invalid) "red") + ((string-match "EST" + (or (plist-get o :availability) "")) + "lightgray") + (t "lightgreen"))))) (dom-node 'g `((transform . ,(format "translate(%d,%d)" @@ -352,13 +357,17 @@ Each function should take the info and manipulate it as needed, returning the ne (defun emacsconf-schedule-get-subsequence (info start &optional end) "START and END are regexps to match against the title in INFO." - (seq-subseq info - (1+ (seq-position info start - (lambda (o match) (string-match match (plist-get o :title))))) - (if end - (seq-position info end - (lambda (o match) (string-match match (plist-get o :title)))) - (length info)))) + (let ((start-position + (and start + (seq-position info start + (lambda (o match) (string-match match (plist-get o :title))))))) + (seq-subseq info + (or start-position 0) + (if end + (seq-position (seq-subseq info (or start-position 0)) + end + (lambda (o match) (string-match match (plist-get o :title)))) + (length info))))) ;;; Schedule summary @@ -586,5 +595,6 @@ Both start and end time are tested." "") (or (plist-get o :availability) ""))))) +(defvar emacsconf-schedule-plan nil "Sequence of talks.") (provide 'emacsconf-schedule) ;;; emacsconf-schedule.el ends here -- cgit v1.2.3