about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWilliam Carroll <wpcarro@gmail.com>2022-07-30T01·56-0700
committerclbot <clbot@tvl.fyi>2022-07-30T02·01+0000
commit8989dad5ed88d55e24d5f3047597053232068c11 (patch)
treee1d6115958321dabef838dd869611981071ffc85
parent7410928b5bddc12b488b102315260129565ed7ef (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
-rw-r--r--users/wpcarro/emacs/default.nix1
-rw-r--r--users/wpcarro/emacs/pkgs/string/default.nix27
-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.el22
4 files changed, 57 insertions, 19 deletions
diff --git a/users/wpcarro/emacs/default.nix b/users/wpcarro/emacs/default.nix
index af8198d51c..78d3b1b371 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 0000000000..406cccdfcb
--- /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 7e3f10c75a..30da1805e8 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 0000000000..92290c6db8
--- /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")))