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

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

[elpa] externals/org e34d7781f0 01/17: org-element-entity-parser: Refact


From: ELPA Syncer
Subject: [elpa] externals/org e34d7781f0 01/17: org-element-entity-parser: Refactor entity regexp using `rx'
Date: Thu, 19 Oct 2023 06:58:51 -0400 (EDT)

branch: externals/org
commit e34d7781f038493112a15980f5b606006ebe26ff
Author: Ihor Radchenko <yantar92@posteo.net>
Commit: Ihor Radchenko <yantar92@posteo.net>

    org-element-entity-parser: Refactor entity regexp using `rx'
    
    * lisp/org-element.el (org-element-entity-parser): Rewrite entity
    regexp using more readable `rx' form.
    * testing/lisp/test-org-element.el (test-org-element/entity-parser):
    Add new test cases for whitespace entities.
---
 lisp/org-element.el              | 12 +++++++++++-
 testing/lisp/test-org-element.el | 15 +++++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/lisp/org-element.el b/lisp/org-element.el
index 5fd5b5d271..ca5a00e2dd 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -3466,7 +3466,17 @@ properties.  Otherwise, return nil.
 
 Assume point is at the beginning of the entity."
   (catch 'no-object
-    (when (looking-at "\\\\\\(?:\\(?1:_ 
+\\)\\|\\(?1:there4\\|sup[123]\\|frac[13][24]\\|[a-zA-Z]+\\)\\(?2:$\\|{}\\|[^[:alpha:]]\\)\\)")
+    (when (looking-at
+           (rx "\\"
+               (or
+                (group-n 1 (seq "_" (1+ " ")))
+                (seq
+                 (group-n 1
+                   (or "there4"
+                       (seq "sup" (in "123"))
+                       (seq "frac" (in "13") (in "24"))
+                       (1+ (in "a-zA-Z"))))
+                 (group-n 2 (or eol "{}" (not letter)))))))
       (save-excursion
        (let* ((value (or (org-entity-get (match-string 1))
                          (throw 'no-object nil)))
diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el
index bcc2efbdb0..ade255ea09 100644
--- a/testing/lisp/test-org-element.el
+++ b/testing/lisp/test-org-element.el
@@ -1318,6 +1318,21 @@ CLOCK: [2023-10-13 Fri 14:40]--[2023-10-13 Fri 14:51] => 
 0:11"
   (should
    (org-test-with-temp-text "\\sin"
      (org-element-map (org-element-parse-buffer) 'entity 'identity)))
+  ;; Special case: space-based entities.
+  (should
+   (equal
+    "_   "
+    ;; Space after entity must be a part of its name.
+    (org-test-with-temp-text "\\_   Foo"
+      (org-element-property
+       :name
+       (car (org-element-map (org-element-parse-buffer) 'entity 'identity))))))
+  (should-not
+   ;; {} is not a part of whitespace entity name.
+   (org-test-with-temp-text "\\_   {}Foo"
+     (org-element-property
+      :bracketsp
+      (car (org-element-map (org-element-parse-buffer) 'entity 'identity)))))
   ;; With brackets.
   (should
    (org-element-property



reply via email to

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