A collection of tools for dealing with key/value data structures such as plists, alists and hash-tables.
kvalist->filter-keys alist &rest keys
Return the alist filtered to the keys list.
Only pairs where the car is a member of keys will be returned.
kvalist->hash alist &rest hash-table-args
Convert alist to a HASH.
hash-table-args are passed to the hash-table creation.
Get just the keys from the alist.
Convert an alist to a plist.
Get just the values from the alist.
kvalist-keys->* alist fn
Convert the keys of alist through fn.
Convert the keys of alist into symbols.
kvalist-sort alist pred
Sort alist (by key) with pred.
kvalist-sort-by-value alist pred
Sort alist by value with pred.
kvalist2->alist alist2 car-key cdr-key &optional proper
Reduce the alist2 (a list of alists) to a single alist.
car-key is the key of each alist to use as the resulting key and cdr-key is the key of each alist to user as the resulting cdr.
If proper is t then the alist is a list of proper lists, not cons cells.
kvalist2->filter-keys alist2 &rest keys
Return the alist2 (a list of alists) filtered to the keys.
Convert a list of alists too a list of plists.
kvcmp a b
Do a comparison of the two values using printable syntax.
Use this as the function to pass to sort.
kvdotassoc expr table
Dotted expression handling with assoc.
kvdotassoc-fn expr table func
Use the dotted expr to access deeply nested data in table.
expr is a dot separated expression, either a symbol or a string. For example:
If the expr is a symbol then the keys of the alist are also expected to be symbols.
table is expected to be an alist currently.
func is some sort of assoc like function.
kvdotassq expr table
Dotted expression handling with assq.
Convert hash to an ALIST.
kvmap-bind args sexp seq
Unlike most other mapping forms this is a macro intended to be used for structural transformations, so the expected usage will be that args describes the structure of the items in seq, and sexp will describe the structure desired.
Convert plist to an alist.
The keys are expected to be :prefixed and the colons are removed. The keys in the resulting alist are symbols.
kvplist->filter-keys plist &rest keys
Filter the plist to just those matching keys.
keys must actually be :-less symbols.
kvalist->filter-keys is actually used to do this work.
kvplist->merge &rest plists
Merge the 2nd and subsequent plists into the first, clobbering values set by lists to the left.
kvplist2->filter-keys plist2 &rest keys
Return the plist2 (a list of plists) filtered to the keys.