mirror of
https://github.com/sharkdp/bat.git
synced 2025-01-22 21:48:56 +01:00
Add Common Lisp syntax highlighting test files
This commit is contained in:
parent
b83716f0eb
commit
4b2b419400
80
tests/syntax-tests/highlighted/Lisp/utils.lisp
Normal file
80
tests/syntax-tests/highlighted/Lisp/utils.lisp
Normal file
@ -0,0 +1,80 @@
|
||||
[38;2;255;255;255m([0m[38;2;248;248;242mcl:[0m[38;2;102;217;239mdefpackage[0m[38;2;248;248;242m :chillax.utils[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242m:use :cl :alexandria[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242m:[0m[38;2;102;217;239mexport[0m
|
||||
[38;2;248;248;242m :fun :mkhash :hashget :strcat :dequote :at[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;255;255;255m([0m[38;2;102;217;239min-package[0m[38;2;248;248;242m :chillax.utils[0m[38;2;255;255;255m)[0m
|
||||
|
||||
[38;2;117;113;94m;[0m[38;2;117;113;94m;; Functions[0m
|
||||
[38;2;255;255;255m([0m[3;38;2;102;217;239mdefmacro[0m[38;2;248;248;242m [0m[38;2;166;226;46mfun[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242m&body body[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mThis macro puts the FUN back in FUNCTION.[0m[38;2;230;219;116m"[0m
|
||||
[38;2;248;248;242m `[0m[38;2;255;255;255m([0m[38;2;102;217;239mlambda[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242m&optional _[0m[38;2;255;255;255m)[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242mdeclare [0m[38;2;255;255;255m([0m[38;2;248;248;242mignorable _[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;248;248;242m ,@body[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
|
||||
[38;2;117;113;94m;[0m[38;2;117;113;94m;; Hash tables[0m
|
||||
[38;2;255;255;255m([0m[3;38;2;102;217;239mdefun[0m[38;2;248;248;242m [0m[38;2;166;226;46mmkhash[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242m&[0m[38;2;102;217;239mrest[0m[38;2;248;248;242m keys[0m[38;2;249;38;114m-[0m[38;2;249;38;114mand[0m[38;2;249;38;114m-[0m[38;2;102;217;239mvalues[0m[38;2;248;248;242m &aux [0m[38;2;255;255;255m([0m[38;2;248;248;242mtable [0m[38;2;255;255;255m([0m[38;2;102;217;239mmake-hash-table[0m[38;2;248;248;242m :test [0m[38;2;190;132;255m#[0m[38;2;190;132;255m'equal[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mConvenience function for `literal' hash table definition.[0m[38;2;230;219;116m"[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;249;38;114mloop[0m[38;2;248;248;242m [0m[38;2;249;38;114mfor[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242mkey val[0m[38;2;255;255;255m)[0m[38;2;248;248;242m on keys[0m[38;2;249;38;114m-[0m[38;2;249;38;114mand[0m[38;2;249;38;114m-[0m[38;2;102;217;239mvalues[0m[38;2;248;248;242m by [0m[38;2;190;132;255m#[0m[38;2;190;132;255m'cddr[0m[38;2;248;248;242m [0m[38;2;249;38;114mdo[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239msetf[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mgethash[0m[38;2;248;248;242m key table[0m[38;2;255;255;255m)[0m[38;2;248;248;242m val[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;249;38;114mfinally[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;249;38;114mreturn[0m[38;2;248;248;242m table[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
|
||||
[38;2;255;255;255m([0m[3;38;2;102;217;239mdefun[0m[38;2;248;248;242m [0m[38;2;166;226;46mhashget[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242mhash &[0m[38;2;102;217;239mrest[0m[38;2;248;248;242m keys[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mConvenience function for recursively accessing hash tables.[0m[38;2;230;219;116m"[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mreduce[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mlambda[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242mh k[0m[38;2;255;255;255m)[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mgethash[0m[38;2;248;248;242m k h[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;248;248;242m keys :initial[0m[38;2;249;38;114m-[0m[38;2;248;248;242mvalue hash[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
|
||||
[38;2;255;255;255m([0m[38;2;102;217;239mdefine-compiler-macro[0m[38;2;248;248;242m hashget [0m[38;2;255;255;255m([0m[38;2;248;248;242mhash &[0m[38;2;102;217;239mrest[0m[38;2;248;248;242m keys[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;190;132;255mnull[0m[38;2;248;248;242m keys[0m[38;2;255;255;255m)[0m[38;2;248;248;242m hash[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;249;38;114mlet[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;255;255;255m([0m[38;2;248;248;242mhash[0m[38;2;249;38;114m-[0m[38;2;248;248;242msym [0m[38;2;255;255;255m([0m[38;2;102;217;239mmake-symbol[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mHASH[0m[38;2;230;219;116m"[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242mkey[0m[38;2;249;38;114m-[0m[38;2;248;248;242msyms [0m[38;2;255;255;255m([0m[38;2;249;38;114mloop[0m[38;2;248;248;242m [0m[38;2;249;38;114mfor[0m[38;2;248;248;242m i below [0m[38;2;255;255;255m([0m[38;2;102;217;239mlength[0m[38;2;248;248;242m keys[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;102;217;239mcollect[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mmake-symbol[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mformat[0m[38;2;248;248;242m [0m[38;2;190;132;255mnil[0m[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116m~:@(~:R~)-KEY[0m[38;2;230;219;116m"[0m[38;2;248;248;242m i[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m `[0m[38;2;255;255;255m([0m[38;2;249;38;114mlet[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;255;255;255m([0m[38;2;248;248;242m,hash[0m[38;2;249;38;114m-[0m[38;2;248;248;242msym ,hash[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m ,@[0m[38;2;255;255;255m([0m[38;2;249;38;114mloop[0m[38;2;248;248;242m [0m[38;2;249;38;114mfor[0m[38;2;248;248;242m key in keys [0m[38;2;249;38;114mfor[0m[38;2;248;248;242m sym in key[0m[38;2;249;38;114m-[0m[38;2;248;248;242msyms[0m
|
||||
[38;2;248;248;242m [0m[38;2;102;217;239mcollect[0m[38;2;248;248;242m `[0m[38;2;255;255;255m([0m[38;2;248;248;242m,sym ,key[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m ,[0m[38;2;255;255;255m([0m[38;2;102;217;239mreduce[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mlambda[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242mhash key[0m[38;2;255;255;255m)[0m[38;2;248;248;242m `[0m[38;2;255;255;255m([0m[38;2;102;217;239mgethash[0m[38;2;248;248;242m ,key ,hash[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m key[0m[38;2;249;38;114m-[0m[38;2;248;248;242msyms :initial[0m[38;2;249;38;114m-[0m[38;2;248;248;242mvalue hash[0m[38;2;249;38;114m-[0m[38;2;248;248;242msym[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
|
||||
[38;2;255;255;255m([0m[3;38;2;102;217;239mdefun[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239msetf[0m[38;2;248;248;242m hashget[0m[38;2;255;255;255m)[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242mnew[0m[38;2;249;38;114m-[0m[38;2;248;248;242mvalue hash key &[0m[38;2;102;217;239mrest[0m[38;2;248;248;242m more[0m[38;2;249;38;114m-[0m[38;2;248;248;242mkeys[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;230;219;116m"[0m[38;2;230;219;116mUses the last key given to hashget to insert NEW-VALUE into the hash table[0m
|
||||
[38;2;230;219;116mreturned by the second-to-last key.[0m
|
||||
[38;2;230;219;116mtl;dr: DWIM SETF function for HASHGET.[0m[38;2;230;219;116m"[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;249;38;114mif[0m[38;2;248;248;242m more[0m[38;2;249;38;114m-[0m[38;2;248;248;242mkeys[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239msetf[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mgethash[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mcar[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mlast[0m[38;2;248;248;242m more[0m[38;2;249;38;114m-[0m[38;2;248;248;242mkeys[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mapply[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255m'hashget[0m[38;2;248;248;242m hash key [0m[38;2;255;255;255m([0m[38;2;102;217;239mbutlast[0m[38;2;248;248;242m more[0m[38;2;249;38;114m-[0m[38;2;248;248;242mkeys[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m new[0m[38;2;249;38;114m-[0m[38;2;248;248;242mvalue[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239msetf[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mgethash[0m[38;2;248;248;242m key hash[0m[38;2;255;255;255m)[0m[38;2;248;248;242m new[0m[38;2;249;38;114m-[0m[38;2;248;248;242mvalue[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
|
||||
[38;2;117;113;94m;[0m[38;2;117;113;94m;; Strings[0m
|
||||
[38;2;255;255;255m([0m[3;38;2;102;217;239mdefun[0m[38;2;248;248;242m [0m[38;2;166;226;46mstrcat[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mstring[0m[38;2;248;248;242m &[0m[38;2;102;217;239mrest[0m[38;2;248;248;242m more[0m[38;2;249;38;114m-[0m[38;2;248;248;242mstrings[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mapply[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255m'concatenate[0m[38;2;248;248;242m '[0m[38;2;102;217;239mstring[0m[38;2;248;248;242m [0m[38;2;102;217;239mstring[0m[38;2;248;248;242m more[0m[38;2;249;38;114m-[0m[38;2;248;248;242mstrings[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
|
||||
[38;2;255;255;255m([0m[3;38;2;102;217;239mdefun[0m[38;2;248;248;242m [0m[38;2;166;226;46mdequote[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mstring[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;249;38;114mlet[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;255;255;255m([0m[38;2;248;248;242mlen [0m[38;2;255;255;255m([0m[38;2;102;217;239mlength[0m[38;2;248;248;242m [0m[38;2;102;217;239mstring[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;249;38;114mif[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;249;38;114mand[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;249;38;114m>[0m[38;2;248;248;242m len [0m[38;2;190;132;255m1[0m[38;2;255;255;255m)[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242mstarts[0m[38;2;249;38;114m-[0m[38;2;249;38;114mwith[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255m\"[0m[38;2;248;248;242m [0m[38;2;102;217;239mstring[0m[38;2;255;255;255m)[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242mends[0m[38;2;249;38;114m-[0m[38;2;249;38;114mwith[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255m\"[0m[38;2;248;248;242m [0m[38;2;102;217;239mstring[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239msubseq[0m[38;2;248;248;242m [0m[38;2;102;217;239mstring[0m[38;2;248;248;242m [0m[38;2;190;132;255m1[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;249;38;114m-[0m[38;2;248;248;242m len [0m[38;2;190;132;255m1[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;102;217;239mstring[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
|
||||
[38;2;117;113;94m;[0m[38;2;117;113;94m;;[0m
|
||||
[38;2;117;113;94m;[0m[38;2;117;113;94m;; At[0m
|
||||
[38;2;117;113;94m;[0m[38;2;117;113;94m;;[0m
|
||||
[38;2;255;255;255m([0m[38;2;102;217;239mdefgeneric[0m[38;2;248;248;242m at [0m[38;2;255;255;255m([0m[38;2;248;248;242mdoc &[0m[38;2;102;217;239mrest[0m[38;2;248;248;242m keys[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;255;255;255m([0m[38;2;102;217;239mdefgeneric[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239msetf[0m[38;2;248;248;242m at[0m[38;2;255;255;255m)[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242mnew[0m[38;2;249;38;114m-[0m[38;2;248;248;242mvalue doc key &[0m[38;2;102;217;239mrest[0m[38;2;248;248;242m more[0m[38;2;249;38;114m-[0m[38;2;248;248;242mkeys[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
|
||||
[38;2;255;255;255m([0m[3;38;2;102;217;239mdefmethod[0m[38;2;248;248;242m [0m[38;2;166;226;46mat[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;255;255;255m([0m[38;2;248;248;242mdoc hash[0m[38;2;249;38;114m-[0m[38;2;248;248;242mtable[0m[38;2;255;255;255m)[0m[38;2;248;248;242m &[0m[38;2;102;217;239mrest[0m[38;2;248;248;242m keys[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mapply[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255m'hashget[0m[38;2;248;248;242m doc keys[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;255;255;255m([0m[3;38;2;102;217;239mdefmethod[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239msetf[0m[38;2;248;248;242m at[0m[38;2;255;255;255m)[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242mnew[0m[38;2;249;38;114m-[0m[38;2;248;248;242mvalue [0m[38;2;255;255;255m([0m[38;2;248;248;242mdoc hash[0m[38;2;249;38;114m-[0m[38;2;248;248;242mtable[0m[38;2;255;255;255m)[0m[38;2;248;248;242m key &[0m[38;2;102;217;239mrest[0m[38;2;248;248;242m more[0m[38;2;249;38;114m-[0m[38;2;248;248;242mkeys[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mapply[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255m'[0m[38;2;255;255;255m([0m[38;2;102;217;239msetf[0m[38;2;248;248;242m hashget[0m[38;2;255;255;255m)[0m[38;2;248;248;242m new[0m[38;2;249;38;114m-[0m[38;2;248;248;242mvalue doc key more[0m[38;2;249;38;114m-[0m[38;2;248;248;242mkeys[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
|
||||
[38;2;255;255;255m([0m[3;38;2;102;217;239mdefmethod[0m[38;2;248;248;242m [0m[38;2;166;226;46mat[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;255;255;255m([0m[38;2;248;248;242mdoc [0m[38;2;102;217;239mlist[0m[38;2;255;255;255m)[0m[38;2;248;248;242m &[0m[38;2;102;217;239mrest[0m[38;2;248;248;242m keys[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mreduce[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mlambda[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242malist key[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mcdr[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239massoc[0m[38;2;248;248;242m key alist :test [0m[38;2;190;132;255m#[0m[38;2;190;132;255m'equal[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m keys :initial[0m[38;2;249;38;114m-[0m[38;2;248;248;242mvalue doc[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;255;255;255m([0m[3;38;2;102;217;239mdefmethod[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239msetf[0m[38;2;248;248;242m at[0m[38;2;255;255;255m)[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242mnew[0m[38;2;249;38;114m-[0m[38;2;248;248;242mvalue [0m[38;2;255;255;255m([0m[38;2;248;248;242mdoc [0m[38;2;102;217;239mlist[0m[38;2;255;255;255m)[0m[38;2;248;248;242m key &[0m[38;2;102;217;239mrest[0m[38;2;248;248;242m more[0m[38;2;249;38;114m-[0m[38;2;248;248;242mkeys[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;249;38;114mif[0m[38;2;248;248;242m more[0m[38;2;249;38;114m-[0m[38;2;248;248;242mkeys[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239msetf[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mcdr[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239massoc[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mcar[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mlast[0m[38;2;248;248;242m more[0m[38;2;249;38;114m-[0m[38;2;248;248;242mkeys[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mapply[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255m'at[0m[38;2;248;248;242m doc key [0m[38;2;255;255;255m([0m[38;2;102;217;239mbutlast[0m[38;2;248;248;242m more[0m[38;2;249;38;114m-[0m[38;2;248;248;242mkeys[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m :test [0m[38;2;190;132;255m#[0m[38;2;190;132;255m'equal[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m new[0m[38;2;249;38;114m-[0m[38;2;248;248;242mvalue[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239msetf[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mcdr[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239massoc[0m[38;2;248;248;242m key doc :test [0m[38;2;190;132;255m#[0m[38;2;190;132;255m'equal[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;248;248;242m new[0m[38;2;249;38;114m-[0m[38;2;248;248;242mvalue[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
|
||||
[38;2;117;113;94m;[0m[38;2;117;113;94m; A playful alias.[0m
|
||||
[38;2;255;255;255m([0m[3;38;2;102;217;239mdefun[0m[38;2;248;248;242m [0m[38;2;248;248;242m@ [0m[38;2;255;255;255m([0m[38;2;248;248;242mdoc &[0m[38;2;102;217;239mrest[0m[38;2;248;248;242m keys[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mapply[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255m'at[0m[38;2;248;248;242m doc keys[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
||||
[38;2;255;255;255m([0m[3;38;2;102;217;239mdefun[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239msetf[0m[38;2;248;248;242m @[0m[38;2;255;255;255m)[0m[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;248;248;242mnew[0m[38;2;249;38;114m-[0m[38;2;248;248;242mvalue doc key &[0m[38;2;102;217;239mrest[0m[38;2;248;248;242m more[0m[38;2;249;38;114m-[0m[38;2;248;248;242mkeys[0m[38;2;255;255;255m)[0m
|
||||
[38;2;248;248;242m [0m[38;2;255;255;255m([0m[38;2;102;217;239mapply[0m[38;2;248;248;242m [0m[38;2;190;132;255m#[0m[38;2;190;132;255m'[0m[38;2;255;255;255m([0m[38;2;102;217;239msetf[0m[38;2;248;248;242m at[0m[38;2;255;255;255m)[0m[38;2;248;248;242m new[0m[38;2;249;38;114m-[0m[38;2;248;248;242mvalue doc key more[0m[38;2;249;38;114m-[0m[38;2;248;248;242mkeys[0m[38;2;255;255;255m)[0m[38;2;255;255;255m)[0m
|
24
tests/syntax-tests/source/Lisp/LICENSE.md
Normal file
24
tests/syntax-tests/source/Lisp/LICENSE.md
Normal file
@ -0,0 +1,24 @@
|
||||
The `utils.lisp` file has been added from https://github.com/zkat/chillax under the following license:
|
||||
|
||||
Copyright © 2009-2010 Kat Marchán
|
||||
|
||||
Permission is hereby granted, free of charge, to any person
|
||||
obtaining a copy of this software and associated documentation
|
||||
files (the "Software"), to deal in the Software without
|
||||
restriction, including without limitation the rights to use, copy,
|
||||
modify, merge, publish, distribute, sublicense, and/or sell copies
|
||||
of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
80
tests/syntax-tests/source/Lisp/utils.lisp
Normal file
80
tests/syntax-tests/source/Lisp/utils.lisp
Normal file
@ -0,0 +1,80 @@
|
||||
(cl:defpackage :chillax.utils
|
||||
(:use :cl :alexandria)
|
||||
(:export
|
||||
:fun :mkhash :hashget :strcat :dequote :at))
|
||||
(in-package :chillax.utils)
|
||||
|
||||
;;; Functions
|
||||
(defmacro fun (&body body)
|
||||
"This macro puts the FUN back in FUNCTION."
|
||||
`(lambda (&optional _) (declare (ignorable _)) ,@body))
|
||||
|
||||
;;; Hash tables
|
||||
(defun mkhash (&rest keys-and-values &aux (table (make-hash-table :test #'equal)))
|
||||
"Convenience function for `literal' hash table definition."
|
||||
(loop for (key val) on keys-and-values by #'cddr do (setf (gethash key table) val)
|
||||
finally (return table)))
|
||||
|
||||
(defun hashget (hash &rest keys)
|
||||
"Convenience function for recursively accessing hash tables."
|
||||
(reduce (lambda (h k) (gethash k h)) keys :initial-value hash))
|
||||
|
||||
(define-compiler-macro hashget (hash &rest keys)
|
||||
(if (null keys) hash
|
||||
(let ((hash-sym (make-symbol "HASH"))
|
||||
(key-syms (loop for i below (length keys)
|
||||
collect (make-symbol (format nil "~:@(~:R~)-KEY" i)))))
|
||||
`(let ((,hash-sym ,hash)
|
||||
,@(loop for key in keys for sym in key-syms
|
||||
collect `(,sym ,key)))
|
||||
,(reduce (lambda (hash key) `(gethash ,key ,hash))
|
||||
key-syms :initial-value hash-sym)))))
|
||||
|
||||
(defun (setf hashget) (new-value hash key &rest more-keys)
|
||||
"Uses the last key given to hashget to insert NEW-VALUE into the hash table
|
||||
returned by the second-to-last key.
|
||||
tl;dr: DWIM SETF function for HASHGET."
|
||||
(if more-keys
|
||||
(setf (gethash (car (last more-keys))
|
||||
(apply #'hashget hash key (butlast more-keys)))
|
||||
new-value)
|
||||
(setf (gethash key hash) new-value)))
|
||||
|
||||
;;; Strings
|
||||
(defun strcat (string &rest more-strings)
|
||||
(apply #'concatenate 'string string more-strings))
|
||||
|
||||
(defun dequote (string)
|
||||
(let ((len (length string)))
|
||||
(if (and (> len 1) (starts-with #\" string) (ends-with #\" string))
|
||||
(subseq string 1 (- len 1))
|
||||
string)))
|
||||
|
||||
;;;
|
||||
;;; At
|
||||
;;;
|
||||
(defgeneric at (doc &rest keys))
|
||||
(defgeneric (setf at) (new-value doc key &rest more-keys))
|
||||
|
||||
(defmethod at ((doc hash-table) &rest keys)
|
||||
(apply #'hashget doc keys))
|
||||
(defmethod (setf at) (new-value (doc hash-table) key &rest more-keys)
|
||||
(apply #'(setf hashget) new-value doc key more-keys))
|
||||
|
||||
(defmethod at ((doc list) &rest keys)
|
||||
(reduce (lambda (alist key)
|
||||
(cdr (assoc key alist :test #'equal)))
|
||||
keys :initial-value doc))
|
||||
(defmethod (setf at) (new-value (doc list) key &rest more-keys)
|
||||
(if more-keys
|
||||
(setf (cdr (assoc (car (last more-keys))
|
||||
(apply #'at doc key (butlast more-keys))
|
||||
:test #'equal))
|
||||
new-value)
|
||||
(setf (cdr (assoc key doc :test #'equal)) new-value)))
|
||||
|
||||
;; A playful alias.
|
||||
(defun @ (doc &rest keys)
|
||||
(apply #'at doc keys))
|
||||
(defun (setf @) (new-value doc key &rest more-keys)
|
||||
(apply #'(setf at) new-value doc key more-keys))
|
Loading…
Reference in New Issue
Block a user