chore(users): grfn -> aspen
Change-Id: I6c6847fac56f0a9a1a2209792e00a3aec5e672b9 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10809 Autosubmit: aspen <root@gws.fyi> Reviewed-by: sterni <sternenseemann@systemli.org> Tested-by: BuildkiteCI Reviewed-by: lukegb <lukegb@tvl.fyi>
This commit is contained in:
parent
0ba476a426
commit
82ecd61f5c
478 changed files with 75 additions and 77 deletions
75
users/aspen/emacs.d/sql-strings.el
Normal file
75
users/aspen/emacs.d/sql-strings.el
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
;;; -*- lexical-binding: t; -*-
|
||||
|
||||
;;; https://www.emacswiki.org/emacs/StringAtPoint
|
||||
(defun ourcomments-string-or-comment-bounds-1 (what)
|
||||
(save-restriction
|
||||
(widen)
|
||||
(let* ((here (point))
|
||||
;; Fix-me: when on end-point, how to handle that and which should be last hit point?
|
||||
(state (parse-partial-sexp (point-min) (1+ here)))
|
||||
(type (if (nth 3 state)
|
||||
'string
|
||||
(if (nth 4 state)
|
||||
'comment)))
|
||||
(start (when type (nth 8 state)))
|
||||
end)
|
||||
(unless start
|
||||
(setq state (parse-partial-sexp (point-min) here))
|
||||
(setq type (if (nth 3 state)
|
||||
'string
|
||||
(if (nth 4 state)
|
||||
'comment)))
|
||||
(setq start (when type (nth 8 state))))
|
||||
(unless (or (not what)
|
||||
(eq what type))
|
||||
(setq start nil))
|
||||
(if (not start)
|
||||
(progn
|
||||
(goto-char here)
|
||||
nil)
|
||||
(setq state (parse-partial-sexp (1+ start) (point-max)
|
||||
nil nil state 'syntax-table))
|
||||
(setq end (point))
|
||||
(goto-char here)
|
||||
(cons start end)))))
|
||||
|
||||
(defun ourcomments-bounds-of-string-at-point ()
|
||||
"Return bounds of string at point if any."
|
||||
(ourcomments-string-or-comment-bounds-1 'string))
|
||||
|
||||
(put 'string 'bounds-of-thing-at-point 'ourcomments-bounds-of-string-at-point)
|
||||
|
||||
(defun -sanitize-sql-string (str)
|
||||
(->> str
|
||||
(downcase)
|
||||
(s-trim)
|
||||
(replace-regexp-in-string
|
||||
(rx (or (and string-start (or "\"\"\""
|
||||
"\""))
|
||||
(and (or "\"\"\""
|
||||
"\"")
|
||||
string-end)))
|
||||
"")
|
||||
(s-trim)))
|
||||
|
||||
(defun sql-string-p (str)
|
||||
"Returns 't if STR looks like a string literal for a SQL statement"
|
||||
(setq str (-sanitize-sql-string str))
|
||||
(or (s-starts-with? "select" str)))
|
||||
|
||||
;;; tests
|
||||
|
||||
(require 'ert)
|
||||
|
||||
(ert-deftest sanitize-sql-string-test ()
|
||||
(should (string-equal "select * from foo;"
|
||||
(-sanitize-sql-string
|
||||
"\"\"\"SELECT * FROM foo;\n\n\"\"\""))))
|
||||
|
||||
(ert-deftest test-sql-string-p ()
|
||||
(dolist (str '("SELECT * FROM foo;"
|
||||
"select * from foo;"))
|
||||
(should (sql-string-p str)))
|
||||
|
||||
(dolist (str '("not a QUERY"))
|
||||
(should-not (sql-string-p str))))
|
||||
Loading…
Add table
Add a link
Reference in a new issue