emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 41a929c 1/2: Add new function string-greaterp


From: Nicolas Petton
Subject: [Emacs-diffs] master 41a929c 1/2: Add new function string-greaterp
Date: Thu, 04 Jun 2015 16:32:14 +0000

branch: master
commit 41a929c5ae1110e39f94c018dc2b3e224e884f18
Author: Nicolas Petton <address@hidden>
Commit: Nicolas Petton <address@hidden>

    Add new function string-greaterp
    
    * lisp/subr.el (string-greaterp): New function.  Also aliased to
    `string>'.
    * test/automated/subr-tests.el (string-comparison-test): Add unit
    tests for `string>'and `string<'.
    * src/fns.c (string-lessp): Better docstring.
---
 lisp/subr.el                 |    8 ++++++++
 src/fns.c                    |   28 ++++++++++++++--------------
 test/automated/subr-tests.el |   24 +++++++++++++++++++++++-
 3 files changed, 45 insertions(+), 15 deletions(-)

diff --git a/lisp/subr.el b/lisp/subr.el
index b9a847d..df17310 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -1384,6 +1384,7 @@ is converted into a string by expressing it in decimal."
 (defalias 'send-region 'process-send-region)
 (defalias 'string= 'string-equal)
 (defalias 'string< 'string-lessp)
+(defalias 'string> 'string-greaterp)
 (defalias 'move-marker 'set-marker)
 (defalias 'rplaca 'setcar)
 (defalias 'rplacd 'setcdr)
@@ -3834,6 +3835,13 @@ consisting of STR followed by an invisible left-to-right 
mark
   (if (string-match "\\cR" str)
       (concat str (propertize (string ?\x200e) 'invisible t))
     str))
+
+(defun string-greaterp (string1 string2)
+  "Return non-nil if STRING1 is greater than STRING2 in lexicographic order.
+Case is significant.
+Symbols are also allowed; their print names are used instead."
+  (string-lessp string2 string1))
+
 
 ;;;; Specifying things to do later.
 
diff --git a/src/fns.c b/src/fns.c
index 235a4f6..6bbb57f 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -303,26 +303,26 @@ If string STR1 is greater, the value is a positive number 
N;
 }
 
 DEFUN ("string-lessp", Fstring_lessp, Sstring_lessp, 2, 2, 0,
-       doc: /* Return t if first arg string is less than second in 
lexicographic order.
+       doc: /* Return non-nil if STRING1 is less than STRING2 in lexicographic 
order.
 Case is significant.
 Symbols are also allowed; their print names are used instead.  */)
-  (register Lisp_Object s1, Lisp_Object s2)
+  (register Lisp_Object string1, Lisp_Object string2)
 {
   register ptrdiff_t end;
   register ptrdiff_t i1, i1_byte, i2, i2_byte;
 
-  if (SYMBOLP (s1))
-    s1 = SYMBOL_NAME (s1);
-  if (SYMBOLP (s2))
-    s2 = SYMBOL_NAME (s2);
-  CHECK_STRING (s1);
-  CHECK_STRING (s2);
+  if (SYMBOLP (string1))
+    string1 = SYMBOL_NAME (string1);
+  if (SYMBOLP (string2))
+    string2 = SYMBOL_NAME (string2);
+  CHECK_STRING (string1);
+  CHECK_STRING (string2);
 
   i1 = i1_byte = i2 = i2_byte = 0;
 
-  end = SCHARS (s1);
-  if (end > SCHARS (s2))
-    end = SCHARS (s2);
+  end = SCHARS (string1);
+  if (end > SCHARS (string2))
+    end = SCHARS (string2);
 
   while (i1 < end)
     {
@@ -330,13 +330,13 @@ Symbols are also allowed; their print names are used 
instead.  */)
         characters, not just the bytes.  */
       int c1, c2;
 
-      FETCH_STRING_CHAR_ADVANCE (c1, s1, i1, i1_byte);
-      FETCH_STRING_CHAR_ADVANCE (c2, s2, i2, i2_byte);
+      FETCH_STRING_CHAR_ADVANCE (c1, string1, i1, i1_byte);
+      FETCH_STRING_CHAR_ADVANCE (c2, string2, i2, i2_byte);
 
       if (c1 != c2)
        return c1 < c2 ? Qt : Qnil;
     }
-  return i1 < SCHARS (s2) ? Qt : Qnil;
+  return i1 < SCHARS (string2) ? Qt : Qnil;
 }
 
 DEFUN ("string-collate-lessp", Fstring_collate_lessp, Sstring_collate_lessp, 
2, 4, 0,
diff --git a/test/automated/subr-tests.el b/test/automated/subr-tests.el
index d29efc6..28a423f 100644
--- a/test/automated/subr-tests.el
+++ b/test/automated/subr-tests.el
@@ -2,7 +2,8 @@
 
 ;; Copyright (C) 2015 Free Software Foundation, Inc.
 
-;; Author: Oleh Krehel <address@hidden>
+;; Author: Oleh Krehel <address@hidden>,
+;;         Nicolas Petton <address@hidden>
 ;; Keywords:
 
 ;; This file is part of GNU Emacs.
@@ -60,5 +61,26 @@
                      (quote
                       (0 font-lock-keyword-face))))))))
 
+(ert-deftest string-comparison-test ()
+  (should (string-lessp "abc" "acb"))
+  (should (string-lessp "aBc" "abc"))
+  (should (string-lessp "abc" "abcd"))
+  (should (string-lessp "abc" "abcd"))
+  (should-not (string-lessp "abc" "abc"))
+  (should-not (string-lessp "" ""))
+
+  (should (string-greaterp "acb" "abc"))
+  (should (string-greaterp "abc" "aBc"))
+  (should (string-greaterp "abcd" "abc"))
+  (should (string-greaterp "abcd" "abc"))
+  (should-not (string-greaterp "abc" "abc"))
+  (should-not (string-greaterp "" ""))
+
+  ;; Symbols are also accepted
+  (should (string-lessp 'abc 'acb))
+  (should (string-lessp "abc" 'acb))
+  (should (string-greaterp 'acb 'abc))
+  (should (string-greaterp "acb" 'abc)))
+
 (provide 'subr-tests)
 ;;; subr-tests.el ends here



reply via email to

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