feat(wpcarro/emacs): Package maybe.el
(Temporarily) remove dependency on list.el in favor of dash, which I'm not thrilled about. Change-Id: Ic4348ee72582dee63ba07a183f3bda65baa7e2d6 Reviewed-on: https://cl.tvl.fyi/c/depot/+/5999 Reviewed-by: wpcarro <wpcarro@gmail.com> Autosubmit: wpcarro <wpcarro@gmail.com> Tested-by: BuildkiteCI
This commit is contained in:
		
							parent
							
								
									4a4f8f9358
								
							
						
					
					
						commit
						230c4bbb3e
					
				
					 6 changed files with 59 additions and 25 deletions
				
			
		|  | @ -33,6 +33,7 @@ | |||
| (require 'struct) | ||||
| (require 'ts) | ||||
| (require 'general) | ||||
| (require 'list) | ||||
| 
 | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ;; Library | ||||
|  |  | |||
|  | @ -13,6 +13,7 @@ | |||
| ;; Dependencies | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| 
 | ||||
| (require 'dash) | ||||
| (require 'maybe) | ||||
| (require 'cl-lib) | ||||
| 
 | ||||
|  | @ -31,13 +32,13 @@ | |||
| ;; Int -> Int -> Int -> Boolean | ||||
| (cl-defun math-triangle-of-power (&key base power result) | ||||
|   (cond | ||||
|    ((maybe-somes? base power result) | ||||
|    ((-all? #'maybe-some? (list base power result)) | ||||
|     (error "All three arguments should not be set")) | ||||
|    ((maybe-somes? power result) | ||||
|    ((-all? #'maybe-some? (list power result)) | ||||
|     (message "power and result")) | ||||
|    ((maybe-somes? base result) | ||||
|    ((-all? #'maybe-some? (list base result)) | ||||
|     (log result base)) | ||||
|    ((maybe-somes? base power) | ||||
|    ((-all? #'maybe-some? (list base power)) | ||||
|     (expt base power)) | ||||
|    (t | ||||
|     (error "Two of the three arguments must be set")))) | ||||
|  |  | |||
|  | @ -27,6 +27,7 @@ let | |||
|     (with wpcarro.emacs.pkgs; [ | ||||
|       al | ||||
|       list | ||||
|       maybe | ||||
|       set | ||||
|       struct | ||||
|       zle | ||||
|  |  | |||
							
								
								
									
										24
									
								
								users/wpcarro/emacs/pkgs/maybe/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								users/wpcarro/emacs/pkgs/maybe/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | |||
| { pkgs, depot, ... }: | ||||
| 
 | ||||
| let | ||||
|   maybe = pkgs.callPackage | ||||
|     ({ emacsPackages }: | ||||
|       emacsPackages.trivialBuild { | ||||
|         pname = "maybe"; | ||||
|         version = "1.0.0"; | ||||
|         src = ./maybe.el; | ||||
|         packageRequires = [ ]; | ||||
|       }) | ||||
|     { }; | ||||
| 
 | ||||
|   emacs = (pkgs.emacsPackagesFor pkgs.emacs28).emacsWithPackages (epkgs: [ | ||||
|     maybe | ||||
|   ]); | ||||
| in | ||||
| maybe.overrideAttrs (_old: { | ||||
|   doCheck = true; | ||||
|   checkPhase = '' | ||||
|     ${emacs}/bin/emacs -batch \ | ||||
|       -l ert -l ${./tests.el} -f ert-run-tests-batch-and-exit | ||||
|   ''; | ||||
| }) | ||||
|  | @ -31,19 +31,6 @@ | |||
| 
 | ||||
| ;;; Code: | ||||
| 
 | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ;; Dependencies | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| 
 | ||||
| (require 'list) | ||||
| 
 | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ;; Constants | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| 
 | ||||
| (defvar maybe--run-tests? t | ||||
|   "When t, run the test suite defined herein.") | ||||
| 
 | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ;; Library | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
|  | @ -56,14 +43,6 @@ | |||
|   "Return t when X is non-nil." | ||||
|   (not (maybe-nil? x))) | ||||
| 
 | ||||
| (defun maybe-nils? (&rest xs) | ||||
|   "Return t if all XS are nil." | ||||
|   (list-all? #'maybe-nil? xs)) | ||||
| 
 | ||||
| (defun maybe-somes? (&rest xs) | ||||
|   "Return t if all XS are non-nil." | ||||
|   (list-all? #'maybe-some? xs)) | ||||
| 
 | ||||
| (defun maybe-default (default x) | ||||
|   "Return DEFAULT when X is nil." | ||||
|   (if (maybe-nil? x) default x)) | ||||
							
								
								
									
										28
									
								
								users/wpcarro/emacs/pkgs/maybe/tests.el
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								users/wpcarro/emacs/pkgs/maybe/tests.el
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ;; Dependencies | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| 
 | ||||
| (require 'maybe) | ||||
| 
 | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| ;; Tests | ||||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||||
| 
 | ||||
| (ert-deftest maybe-nil? () | ||||
|   (and | ||||
|    (maybe-nil? nil) | ||||
|    (not (maybe-nil? t)))) | ||||
| 
 | ||||
| (ert-deftest maybe-some? () | ||||
|   (and | ||||
|    (maybe-some? '(1 2 3)) | ||||
|    (not (maybe-some? nil)))) | ||||
| 
 | ||||
| (ert-deftest maybe-default () | ||||
|   (and | ||||
|    (string= "some" (maybe-default "some" nil)) | ||||
|    (= 10 (maybe-default 1 10)))) | ||||
| 
 | ||||
| (ert-deftest maybe-map () | ||||
|   (eq nil (maybe-map (lambda (x) (* x 2)) nil)) | ||||
|   (= 4 (maybe-map (lambda (x) (* x 2)) 2))) | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue