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

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

[nongnu] elpa/subed 7a3eed2acf 14/22: New function subed-subtitle-list r


From: ELPA Syncer
Subject: [nongnu] elpa/subed 7a3eed2acf 14/22: New function subed-subtitle-list returns list
Date: Tue, 1 Feb 2022 14:06:11 -0500 (EST)

branch: elpa/subed
commit 7a3eed2acf49315cff06b6663a639cbb9c7ddb4b
Author: Sacha Chua <sacha@sachachua.com>
Commit: Sacha Chua <sacha@sachachua.com>

    New function subed-subtitle-list returns list
    
    * subed/subed-common.el (subtitle-list): New function returns a list
    of subtitles.
    * tests/test-subed-common.el ("Getting a list of subtitles"): Add tests.
---
 subed/subed-common.el      | 20 ++++++++++++++++++++
 tests/test-subed-common.el | 21 +++++++++++++++++++++
 2 files changed, 41 insertions(+)

diff --git a/subed/subed-common.el b/subed/subed-common.el
index da6db32bf6..68aab6fae1 100644
--- a/subed/subed-common.el
+++ b/subed/subed-common.el
@@ -304,6 +304,26 @@ Return new point."
               end (save-excursion (goto-char (point-max)))))
     (delete-region beg end)))
 
+(subed-define-generic-function subtitle-list (&optional beg end)
+  "Return the subtitles from BEG to END as a list.
+The list will contain entries of the form (id start stop text).
+If BEG and END are not specified, use the whole buffer."
+  (let (result)
+    (subed-for-each-subtitle
+      (or beg (point-min))
+      (or end (point-max))
+      nil
+      (when (subed-subtitle-msecs-start)
+        (setq result
+              (cons
+               (list
+                (subed-subtitle-id)
+                (subed-subtitle-msecs-start)
+                (subed-subtitle-msecs-stop)
+                (subed-subtitle-text))
+               result))))
+    (nreverse result)))
+
 (subed-define-generic-function sanitize ()
   "Remove surplus newlines and whitespace.")
 
diff --git a/tests/test-subed-common.el b/tests/test-subed-common.el
index dc09f02c4a..491de99ccf 100644
--- a/tests/test-subed-common.el
+++ b/tests/test-subed-common.el
@@ -3109,4 +3109,25 @@ This is another.
             (subed-srt-mode)
             (expect subed--subtitle-format :to-equal "srt")
             (expect 'subed-trim-overlap-check :to-have-been-called))))))
+  (describe "Getting a list of subtitles"
+    (it "returns nil in an empty buffer."
+      (with-temp-srt-buffer
+       (expect (subed-subtitle-list) :to-equal nil)))
+    (it "returns the list."
+      (with-temp-srt-buffer
+       (insert mock-srt-data)
+       (expect (subed-subtitle-list) :to-equal
+               '((1 61000 65123 "Foo.")
+                 (2 122234 130345 "Bar.")
+                 (3 183450 195500 "Baz.")))))
+    (it "returns a subset when bounds are specified."
+      (with-temp-srt-buffer
+       (insert mock-srt-data)
+       (subed-jump-to-subtitle-id 3)
+       (backward-char 1)
+       (expect (subed-subtitle-list (point-min) (point))
+               :to-equal
+               '((1 61000 65123 "Foo.")
+                 (2 122234 130345 "Bar.")))))
+    )
   )



reply via email to

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