branch: externals/phps-mode
commit 8ed0716dd920d8a8ab7bdf484bc79c656773ceb5
Author: Christian Johansson <[email protected]>
Commit: Christian Johansson <[email protected]>
Started with unit tests for getting point lexer data
---
phps-lexer.el | 36 ++++++++++++++++++++++++++++++++----
phps-test-lexer.el | 13 ++++++++++---
2 files changed, 42 insertions(+), 7 deletions(-)
diff --git a/phps-lexer.el b/phps-lexer.el
index d9b6493..1529dd7 100644
--- a/phps-lexer.el
+++ b/phps-lexer.el
@@ -1257,10 +1257,38 @@ ANY_CHAR'
(defun phps-mode/lexer-get-point-data()
"Return information about point in tokens."
- (message "Point: %s in %s" (point) phps-mode/lexer-tokens)
- (dolist (item phps-mode/lexer-tokens)
- )
- )
+ ;; (message "Point: %s in %s" (point) phps-mode/lexer-tokens)
+ (let ((position (point))
+ (in-scripting nil)
+ (brace-level 0)
+ (parenthesis-level 0)
+ (inline-function-level 0))
+ (catch 'stop-iteration
+ (dolist (item phps-mode/lexer-tokens)
+ (let ((token (car item))
+ (start (car (cdr item)))
+ (end (cdr (cdr item))))
+ ;; (message "Token: %s Start: %s End: %s Item: %s" token start end
item)
+
+ (when (> start position)
+ ;; (message "Stopping iteration at: %s %s" start position)
+ (throw 'stop-iteration nil))
+
+ (pcase token
+ ('T_OPEN_TAG (setq in-scripting t))
+ ('T_OPEN_TAG_WITH_ECHO (setq in-scripting t))
+ ('T_CLOSE_TAG (setq in-scripting nil))
+ ("{" (setq brace-level (+ brace-level 1)))
+ ("}" (setq brace-level (- brace-level 1)))
+ ("(" (setq parenthesis-level (+ parenthesis-level 1)))
+ (")" (setq parenthesis-level (- parenthesis-level 1)))
+ (_))
+
+ )))
+ (let ((data (list in-scripting brace-level parenthesis-level
inline-function-level)))
+ ;; (message "data: %s" data)
+ data)
+ ))
(defun phps-mode/lex--SETUP (start end)
"Just prepare other lexers for lexing region START to END."
diff --git a/phps-test-lexer.el b/phps-test-lexer.el
index a45db16..3b3059f 100644
--- a/phps-test-lexer.el
+++ b/phps-test-lexer.el
@@ -239,12 +239,19 @@
)
-(defun phps-mode/test-lexer-get-point-data ()
+(defun phps-mode/test-lexer--get-point-data ()
"Return information about point in tokens."
+
(phps-mode/with-test-buffer
"<?php\nNAMESPACE MyNameSpace;\nCLASS MyClass {\n\tpublic function
__construct() {\n\t\texit;\n\t}\n}\n"
(goto-char 30)
- (phps-mode/lexer-get-point-data))
+ (should (equal (list t 1 0 0) (phps-mode/lexer-get-point-data))))
+
+ (phps-mode/with-test-buffer
+ "<html><head><title><?php echo $title; ?></title><body>Bla
bla</body></html>"
+ (goto-char 15)
+ (should (equal (list nil 0 0 0) (phps-mode/lexer-get-point-data))))
+
)
(defun phps-mode/test-lexer ()
@@ -256,7 +263,7 @@
(phps-mode/test-lexer--complex-tokens)
(phps-mode/test-lexer--namespaces)
(phps-mode/test-lexer--errors)
- (phps-mode/test-lexer-get-point-data)
+ (phps-mode/test-lexer--get-point-data)
;; (message "\n-- Ran all tests for lexer. --")
)