On 11/07/2013 22:13, Joseph Wright wrote: > Looks at what seems to be needed, an ('opt-in') interface such as > > \keys_define:nn { module } > { > key-one .code:n = { \tl_show:n { key-one } }, > key-one .group:n = { a }, > key-two .code:n = { \tl_show:n { key-two } }, > } > \keys_set_grouped:nnn { module } { a } > { key-one = value , key-two = value } > > is not unreasonable. This allows each key to be in exactly one group: > doing multiple groups is possible but more tricky. (Code follows a bit > later.) My thinking with this is that you can simply do a 'filtered' or > 'grouped' setting without having to track when filtering is on/off. > > The above interface leaves open a few questions: > > - How is nesting handled? Does \keys_set:nn within > \keys_set_grouped:nnn respect groups? Does > \keys_set_grouped:nnn within \keys_set_grouped:nnn > work in a union or intersection way? > > - Do unknown keys raise an error, or are they ignored as they > are not in any group? Also - Do unused options need to be collected/available? -- Joseph Wright