[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/xr ccc76c8 2/3: More careful character class parsing
From: |
Mattias Engdegård |
Subject: |
[elpa] externals/xr ccc76c8 2/3: More careful character class parsing |
Date: |
Tue, 5 Mar 2019 05:08:20 -0500 (EST) |
branch: externals/xr
commit ccc76c8c0b836bbf26b94edfd33d5bb3e8e2a021
Author: Mattias Engdegård <address@hidden>
Commit: Mattias Engdegård <address@hidden>
More careful character class parsing
[[:random rubbish:]] is an error, not a valid regexp.
---
xr-test.el | 11 +++++++++++
xr.el | 12 ++++++------
2 files changed, 17 insertions(+), 6 deletions(-)
diff --git a/xr-test.el b/xr-test.el
index 4a24ef3..d4e2d48 100644
--- a/xr-test.el
+++ b/xr-test.el
@@ -176,6 +176,17 @@
'(not (any "A-FI-Ma-eg-ns-t" "G"))))
(should (equal (xr "[z-a][^z-a]")
'(seq (any) anything)))
+ (should (equal (xr "[[:alpha]]")
+ '(seq (any ":[ahlp") "]")))
+ (should (equal (xr "[:alpha:]")
+ '(any ":ahlp")))
+ (should (equal (xr "[[:digit:]-z]")
+ '(any "z-" digit)))
+ (should (equal (xr "[A-[:digit:]]")
+ '(seq (any "A-[" ":dgit") "]")))
+ (should-error (xr "[[::]]"))
+ (should-error (xr "[[:=:]]"))
+ (should-error (xr "[[:letter:]]"))
)
(ert-deftest xr-empty ()
diff --git a/xr.el b/xr.el
index 9db27b3..1fd9324 100644
--- a/xr.el
+++ b/xr.el
@@ -97,13 +97,13 @@
(while (not (looking-at "]"))
(cond
;; character class
- ((looking-at (rx "[:" (group (one-or-more letter)) ":]"))
+ ((looking-at (rx "[:" (group (*? anything)) ":]"))
(let ((sym (intern (match-string 1))))
- (when (not (memq sym
- '(ascii alnum alpha blank cntrl digit graph
- lower multibyte nonascii print punct space
- unibyte upper word xdigit)))
- (error "No character class `%s'" sym))
+ (unless (memq sym
+ '(ascii alnum alpha blank cntrl digit graph
+ lower multibyte nonascii print punct space
+ unibyte upper word xdigit))
+ (error "No character class `%s'" (match-string 0)))
(if (memq sym classes)
(xr--report warnings (point)
(format "Duplicated character class `[:%s:]'" sym))