diff options
author | William Carroll <wpcarro@gmail.com> | 2022-07-30T01·56-0700 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2022-07-30T02·01+0000 |
commit | 8989dad5ed88d55e24d5f3047597053232068c11 (patch) | |
tree | e1d6115958321dabef838dd869611981071ffc85 /users/wpcarro | |
parent | 7410928b5bddc12b488b102315260129565ed7ef (diff) |
feat(wpcarro/emacs): Package string.el r/4347
Mostly just a wrapper around s.el (for now?). Eventually I'd like to prune the dependency on dash.el (and maybe s.el). Change-Id: I5c2ba256524bedd93fcd13933fdbd95b1ddff6f8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6002 Reviewed-by: wpcarro <wpcarro@gmail.com> Autosubmit: wpcarro <wpcarro@gmail.com> Tested-by: BuildkiteCI
Diffstat (limited to 'users/wpcarro')
-rw-r--r-- | users/wpcarro/emacs/default.nix | 1 | ||||
-rw-r--r-- | users/wpcarro/emacs/pkgs/string/default.nix | 27 | ||||
-rw-r--r-- | users/wpcarro/emacs/pkgs/string/string.el (renamed from users/wpcarro/emacs/.emacs.d/wpc/string.el) | 26 | ||||
-rw-r--r-- | users/wpcarro/emacs/pkgs/string/tests.el | 22 |
4 files changed, 57 insertions, 19 deletions
diff --git a/users/wpcarro/emacs/default.nix b/users/wpcarro/emacs/default.nix index af8198d51cba..78d3b1b371bb 100644 --- a/users/wpcarro/emacs/default.nix +++ b/users/wpcarro/emacs/default.nix @@ -29,6 +29,7 @@ let list maybe set + string struct zle ]) ++ diff --git a/users/wpcarro/emacs/pkgs/string/default.nix b/users/wpcarro/emacs/pkgs/string/default.nix new file mode 100644 index 000000000000..406cccdfcb58 --- /dev/null +++ b/users/wpcarro/emacs/pkgs/string/default.nix @@ -0,0 +1,27 @@ +{ pkgs, depot, ... }: + +let + string = pkgs.callPackage + ({ emacsPackages }: + emacsPackages.trivialBuild { + pname = "string"; + version = "1.0.0"; + src = ./string.el; + packageRequires = [ + emacsPackages.dash + emacsPackages.s + ]; + }) + { }; + + emacs = (pkgs.emacsPackagesFor pkgs.emacs28).emacsWithPackages (epkgs: [ + string + ]); +in +string.overrideAttrs (_old: { + doCheck = true; + checkPhase = '' + ${emacs}/bin/emacs -batch \ + -l ert -l ${./tests.el} -f ert-run-tests-batch-and-exit + ''; +}) diff --git a/users/wpcarro/emacs/.emacs.d/wpc/string.el b/users/wpcarro/emacs/pkgs/string/string.el index 7e3f10c75adf..30da1805e83f 100644 --- a/users/wpcarro/emacs/.emacs.d/wpc/string.el +++ b/users/wpcarro/emacs/pkgs/string/string.el @@ -5,7 +5,7 @@ ;; Package-Requires: ((emacs "24")) ;;; Commentary: -;; Library for working with string. +;; Library for working with strings. ;;; Code: @@ -15,31 +15,15 @@ (require 's) (require 'dash) -;; TODO: Resolve the circular dependency that this introduces. -;; (require 'prelude) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Library ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun string-contains? (c x) - "Return t if X is in C." - (s-contains? c x)) - -(defun string-hookify (x) - "Append \"-hook\" to X." - (s-append "-hook" x)) - (defun string-split (y x) "Map string X into a list of strings that were separated by Y." (s-split y x)) -(defun string-ensure-hookified (x) - "Ensure that X has \"-hook\" appended to it." - (if (s-ends-with? "-hook" x) - x - (string-hookify x))) - (defun string-format (x &rest args) "Format template string X with ARGS." (apply #'format (cons x args))) @@ -48,11 +32,11 @@ "Joins `STRINGS' into onto string." (apply #'s-concat strings)) -(defun string-->symbol (string) +(defun string-to-symbol (string) "Maps `STRING' to a symbol." (intern string)) -(defun string-<-symbol (symbol) +(defun string-from-symbol (symbol) "Maps `SYMBOL' into a string." (symbol-name symbol)) @@ -106,5 +90,9 @@ "Return t if X is a string." (stringp x)) +(defun string-contains? (c x) + "Return t if X is in C." + (s-contains? c x)) + (provide 'string) ;;; string.el ends here diff --git a/users/wpcarro/emacs/pkgs/string/tests.el b/users/wpcarro/emacs/pkgs/string/tests.el new file mode 100644 index 000000000000..92290c6db803 --- /dev/null +++ b/users/wpcarro/emacs/pkgs/string/tests.el @@ -0,0 +1,22 @@ +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Dependencies +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(require 'ert) +(require 'string) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Tests +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(ert-deftest string-caps->kebab () + (string= "foo-bar-baz" (string-caps->kebab "FOO_BAR_BAZ"))) + +(ert-deftest string-kebab->caps () + (string= "FOO_BAR_BAZ" (string-kebab->caps "foo-bar-baz"))) + +(ert-deftest string-lower->caps () + (string= "FOO_BAR_BAZ" (string-lower->caps "foo bar baz"))) + +(ert-deftest string-lower->kebab () + (string= "foo-bar-baz" (string-lower->kebab "foo bar baz"))) |