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

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

[elpa] externals/phps-mode 8ed0716 022/405: Started with unit tests for


From: Stefan Monnier
Subject: [elpa] externals/phps-mode 8ed0716 022/405: Started with unit tests for getting point lexer data
Date: Sat, 13 Jul 2019 09:59:32 -0400 (EDT)

branch: externals/phps-mode
commit 8ed0716dd920d8a8ab7bdf484bc79c656773ceb5
Author: Christian Johansson <address@hidden>
Commit: Christian Johansson <address@hidden>

    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. --")
   )
 



reply via email to

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