emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/rt-liberation ec9245d 37/68: * rt-liberation-viewer.el:


From: Yoni Rabkin
Subject: [elpa] externals/rt-liberation ec9245d 37/68: * rt-liberation-viewer.el: start work on formatting
Date: Wed, 16 Dec 2020 12:11:11 -0500 (EST)

branch: externals/rt-liberation
commit ec9245dcfaffc686167aa298dc964ea2be3fa803
Author: Yoni Rabkin <yoni@rabkins.net>
Commit: Yoni Rabkin <yoni@rabkins.net>

    * rt-liberation-viewer.el: start work on formatting
---
 rt-liberation-viewer.el | 47 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 46 insertions(+), 1 deletion(-)

diff --git a/rt-liberation-viewer.el b/rt-liberation-viewer.el
index c5a75c2..e07186d 100644
--- a/rt-liberation-viewer.el
+++ b/rt-liberation-viewer.el
@@ -171,6 +171,51 @@ ASSOC-BROWSER if non-nil should be a ticket browser."
             section-point-list))
       section-list)))
 
+(defun rt-liber-viewer2-format-content (content)
+  (with-temp-buffer
+    (insert content)
+
+    ;; Convert the 9 leading whitespaces from RT's comment lines.
+    (goto-char (point-min))
+    (insert "    ")
+    (while (re-search-forward "^         " (point-max) t)
+      (replace-match "    "))
+
+    (fill-region (point-min)
+                (point-max))
+
+    (buffer-substring (point-min)
+                     (point-max))))
+
+(defun rt-liber-viewer2-display-section (section)
+  (let ((ticket-id (alist-get 'Ticket section))
+       (creator   (alist-get 'Creator section))
+       (date      (alist-get 'Created section))
+       (type      (alist-get 'Type section))
+       (content   (alist-get 'Content section)))
+    (insert
+     (format "Ticket %s by %s on %s (-N- days ago) (%s)\n"
+            ticket-id
+            creator
+            date
+            type))
+    (cond ((or (string= type "Status")
+              (string= type "CustomField")
+              ;; (string= type "EmailRecord")
+              (string= type "Set"))
+          'nop-for-now)
+         (t (insert
+             (format "\n%s\n"
+                     (rt-liber-viewer2-format-content content)))))))
+
+(defun rt-liber-viewer2-display-history (contents)
+  (let ((section-list (rt-liber-viewer-parse-history contents)))
+    (mapc
+     (lambda (section)
+       (rt-liber-viewer2-display-section section))
+     section-list)))
+
+;; Before release: move this back to the top
 (defconst rt-liber-viewer2-font-lock-keywords
   (let ((header-regexp (regexp-opt '("id: ")
                                   t)))
@@ -191,7 +236,7 @@ ASSOC-BROWSER if non-nil should be a ticket browser."
     (with-current-buffer new-ticket-buffer
       (let ((inhibit-read-only t))
        (erase-buffer)
-       (insert "watch this space for further development")
+       (rt-liber-viewer2-display-history contents)
        (goto-char (point-min))
        (rt-liber-viewer2-mode)
        (set



reply via email to

[Prev in Thread] Current Thread [Next in Thread]