summaryrefslogtreecommitdiff
path: root/README.creole
blob: 1dfd1aab1804d631249ac7aa804dc1b2fa151d0d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
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.


=== kvalist->keys alist ===

Get just the keys from the alist.


=== kvalist->plist alist ===

Convert an alist to a plist.


=== kvalist->values alist ===

Get just the values from the alist.


=== kvalist-keys->* alist fn ===

Convert the keys of //alist// through //fn//.


=== kvalist-keys->symbols alist ===

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//.


=== kvalist2->plist alist2 ===

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:

{{{
 "a.b.c"
}}}

or:

{{{
 'a.b.c
}}}

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]].


=== kvhash->alist hash ===

Convert //hash// to an ALIST.


=== kvmap-bind args sexp seq ===

A hybrid of [[destructuring-bind]] and [[mapcar]]
//args// shall be of the form used with [[destructuring-bind]]

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.


=== kvplist->alist plist ===

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//.