summaryrefslogtreecommitdiff
path: root/rt-liberation-viewer.el
diff options
context:
space:
mode:
authorYoni Rabkin <yoni@rabkins.net>2020-11-18 16:26:21 -0500
committerYoni Rabkin <yoni@rabkins.net>2020-11-18 16:26:21 -0500
commitbcbf368acd9156850334bc6085990a17c7065051 (patch)
treea9572568a92a1bdd36571fd7875f0472e00f795b /rt-liberation-viewer.el
parent6defec33517e546664635ca5176d8620fb0a23d0 (diff)
* rt-liberation-viewer.el: content parsing
The darn leading spaces are still there.
Diffstat (limited to 'rt-liberation-viewer.el')
-rw-r--r--rt-liberation-viewer.el61
1 files changed, 46 insertions, 15 deletions
diff --git a/rt-liberation-viewer.el b/rt-liberation-viewer.el
index e1d499b..d48b9da 100644
--- a/rt-liberation-viewer.el
+++ b/rt-liberation-viewer.el
@@ -59,25 +59,55 @@
(car section-list)
(cadr section-list))))))))
+;; According to:
+;; "https://rt-wiki.bestpractical.com/wiki/REST#Ticket_History_Entry"
+;; id: <history-id>
+;; Ticket: <ticket-id>
+;; TimeTaken: <...>
+;; Type: <...>
+;; Field: <...>
+;; OldValue: <...>
+;; NewValue: <...>
+;; Data: <...>
+;; Description: <...>
+
+;; Content: <lin1-0>
+;; <line-1>
+;; ...
+;; <line-n>
+
+;; Creator: <...>
+;; Created: <...>
+;; Attachments: <...>
(defun rt-liber-viewer-parse-section (start end)
(goto-char start)
- (when (not (re-search-forward rt-liber-viewer-section-header-regexp
- end t))
+ (when (not (re-search-forward
+ rt-liber-viewer-section-header-regexp
+ end t))
(error "invalid section"))
(forward-line 2)
(let (section-field-alist
- section-field-end)
- (save-excursion
- (setq section-field-end
- (re-search-forward "\n\n" end nil)))
- (while (not (looking-at "^\n"))
- (when (looking-at rt-liber-viewer-section-field-regexp)
- (setq section-field-alist
- (append section-field-alist
- `((,(match-string-no-properties 1) .
- ,(match-string-no-properties 2))))))
- (forward-line))
- section-field-alist))
+ (rt-field-list
+ '(id Ticket TimeTaken Type Field
+ OldValue NewValue Data Description
+ Creator Created)))
+ ;; definitely error out if any of this doesn't work
+ (setq section-field-alist
+ (mapcar
+ (lambda (field-symbol)
+ (re-search-forward (format "^%s:" (symbol-name field-symbol)) end nil)
+ (cons field-symbol (buffer-substring (1+ (point)) (point-at-eol))))
+ rt-field-list))
+ ;; content
+ (goto-char start)
+ (let ((content-start (re-search-forward "^Content: " end nil))
+ (content-end (progn
+ (re-search-forward "^Creator: " end nil)
+ (point-at-bol))))
+ (append section-field-alist
+ `(,(cons 'Content
+ (buffer-substring content-start
+ content-end)))))))
;; According to:
;; "https://rt-wiki.bestpractical.com/wiki/REST#Ticket_History" is of
@@ -108,7 +138,8 @@
(rt-liber-viewer-parse-section
(car section-points)
(cdr section-points)))
- section-point-list)))))
+ section-point-list))
+ section-list)))
(defun rt-liber-display-ticket-history (ticket-alist &optional assoc-browser)
"Display history for ticket.