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

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

[elpa] externals/tiny fd8a6b0 4/4: tiny.el: Make "m10|fun(%s)" work


From: Stefan Monnier
Subject: [elpa] externals/tiny fd8a6b0 4/4: tiny.el: Make "m10|fun(%s)" work
Date: Mon, 15 Mar 2021 22:25:37 -0400 (EDT)

branch: externals/tiny
commit fd8a6b0b0c564d8242259e20e557ee6041f40908
Author: Oleh Krehel <ohwoeowho@gmail.com>
Commit: Oleh Krehel <ohwoeowho@gmail.com>

    tiny.el: Make "m10|fun(%s)" work
    
    Stop relying on 'cl, use 'cl-lib instead.
---
 tiny-test.el | 11 ++++++++---
 tiny.el      | 30 +++++++++++++++---------------
 2 files changed, 23 insertions(+), 18 deletions(-)

diff --git a/tiny-test.el b/tiny-test.el
index ec4694d..dca458c 100644
--- a/tiny-test.el
+++ b/tiny-test.el
@@ -61,15 +61,20 @@ with point at the end of TXT."
   (should (equal (with-text-value "m\\n;; 10|%(+ x x) and %(* x x) and %s" 
#'tiny-mapconcat-parse)
                  '(nil "\\n;; " "10" nil "%(+ x x) and %(* x x) and %s")))
   (should (equal (with-text-value "m10|%0.2f" #'tiny-mapconcat-parse)
-                 '(nil nil "10" nil "%0.2f"))))
+                 '(nil nil "10" nil "%0.2f")))
+  (should (equal (with-text-value "m1\\n999|fun%s();" #'tiny-mapconcat-parse)
+                 '("1" "\\n" "999" nil "fun%s();"))))
 
 (ert-deftest tiny-extract-sexps ()
   (should (equal (tiny-extract-sexps "expr1 %(+ x x), nothing %%  char %c, hex 
%x, and expr2 %(* x x), float %0.2f and sym %s")
                  '("expr1 %s, nothing %%  char %c, hex %x, and expr2 %s, float 
%0.2f and sym %s"
                    "(+ x x)" nil nil "(* x x)" nil nil)))
   (should (equal (tiny-extract-sexps "m1\n5| (%c(+ x ?a -1)) %0.1f(* x 0.2)")
-                 '("m1
-5| (%c) %0.1f" "(+ x ?a -1)" "(* x 0.2)"))))
+                 '("m1\n5| (%c) %0.1f" "(+ x ?a -1)" "(* x 0.2)")))
+  (should (equal (tiny-extract-sexps "fun%s ();")
+                 '("fun%s ();" nil)))
+  (should (equal (tiny-extract-sexps "fun%s();")
+                 '("fun%s();" nil))))
 
 (ert-deftest tiny-mapconcat ()
   (should (equal (with-text-value "m10" (lambda()(eval (tiny-mapconcat))))
diff --git a/tiny.el b/tiny.el
index 652fe51..b04a310 100644
--- a/tiny.el
+++ b/tiny.el
@@ -104,8 +104,7 @@
 
 ;;; Code:
 
-(eval-when-compile
-  (require 'cl))
+(require 'cl-lib)
 (require 'help-fns)
 (require 'org)
 
@@ -173,7 +172,7 @@ Defaults are used in place of null values."
                                                 (read x)
                                               (if (>= (1+ idx) n-have)
                                                   'x
-                                                `(nth ,(incf idx) lst))))
+                                                `(nth ,(cl-incf idx) lst))))
                                           (cdr tes)))))
                     ',seq
                     ,(tiny--strip-newlines s1))))))
@@ -183,7 +182,7 @@ Defaults are used in place of null values."
         (width "[0-9]*")
         (precision "\\(?:\\.[0-9]+\\)?")
         (character "[sdoxXefgcS]?"))
-    (format "\\(%s%s%s%s\\)("
+    (format "\\(%s%s%s%s\\)([^)]+)"
             flags width precision character)))
 
 (defun tiny-extract-sexps (str)
@@ -200,12 +199,12 @@ Each element of FORMS corresponds to a `format'-style % 
form in STR.
           (setq start (1+ beg))
 
           (cond ((= ?% (aref str (1+ beg)))
-                 (incf start))
+                 (cl-incf start))
 
                 ((and (eq beg (string-match tiny-format-str str beg))
                       (setq fexp (match-string-no-properties 1 str)))
-                 (incf beg (length fexp))
-                 (destructuring-bind (_sexp . end)
+                 (cl-incf beg (length fexp))
+                 (cl-destructuring-bind (_sexp . end)
                      (read-from-string str beg)
                    (push
                     (replace-regexp-in-string "(date" "(tiny-date"
@@ -271,9 +270,10 @@ Return nil if nothing was matched, otherwise
             ;; or [expr][fmt]
             ;;
             ;; First, try to match [expr][fmt]
-            (string-match "^\\(.*?\\)|?\\(%.*\\)?$" str)
-            (setq expr (match-string-no-properties 1 str))
-            (setq fmt (match-string-no-properties 2 str))
+            (when (or (string-match "^\\([^|]*\\)|\\(.*\\)?$" str)
+                      (string-match "^\\(.*?\\)\\(%.*\\)?$" str))
+              (setq expr (match-string-no-properties 1 str))
+              (setq fmt (match-string-no-properties 2 str)))
             ;; If it's a valid expression, we're done
             (when (setq expr (tiny-tokenize expr))
               (setq n2 n1
@@ -324,13 +324,13 @@ Return nil if nothing was matched, otherwise
                      (error "Unexpected \" \"")))
                   ;; special syntax to read chars
                   ((string= s "?")
-                   (setq s (format "%s" (read (substring str i (incf j)))))
+                   (setq s (format "%s" (read (substring str i (cl-incf j)))))
                    (push s out)
                    (push " " out))
                   ((string= s ")")
                    ;; expect a close paren only if it's necessary
                    (if (>= n-paren 0)
-                       (decf n-paren)
+                       (cl-decf n-paren)
                      (error "Unexpected \")\""))
                    (when (string= (car out) " ")
                      (pop out))
@@ -340,7 +340,7 @@ Return nil if nothing was matched, otherwise
                    ;; open paren is used sometimes
                    ;; when there are numbers in the expression
                    (setq expect-fun t)
-                   (incf n-paren)
+                   (cl-incf n-paren)
                    (push "(" out))
                   ((progn (setq sym (intern-soft s))
                           (cond
@@ -352,7 +352,7 @@ Return nil if nothing was matched, otherwise
                              ;; (when (zerop n-paren) (push "(" out))
                              (unless (equal (car out) "(")
                                (push "(" out)
-                               (incf n-paren))
+                               (cl-incf n-paren))
                              t)
                             ((and sym (boundp sym) (not expect-fun))
                              t)))
@@ -365,7 +365,7 @@ Return nil if nothing was matched, otherwise
                      (push " " out)
                      (setq j (+ i (length num-s)))))
                   (t
-                   (incf j)
+                   (cl-incf j)
                    nil))
             (setq i j)
             (setq j (1+ i))))



reply via email to

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