* = * Good idea, Ambrose. I presume the asterisk is a * = * place-holder and will appear in the case of attributes * = * that are neither look-up nor inverse keys? * = * =Yes. The aim is to make the output easier to read. I * =suppose an "-" character or a blank space could be used * =instead. I will think about it. * * I'd ask you to come up with a somewhat consistent format. A blank by * itself doesn't sound like a good idea from the SW engineering point of * view. * * How about having the brackets anyway, but no tag inside, or a hyphen, or * an asterisk. I think it would be easier to parse in the end, if we can * expect a constant number of (non-blank :-) fields.
This appears to be the consensus so far. It would make writing tools easier if the number of fields was constant.
I'm not convinced that having a fixed three fields (maybe one empty) rather than a list of space separated fields makes tools easier to write. It might be better to have an extensible syntax so we could use it with the proposed time stamp field that users might see but won't be able to change. A [auto] or [fixed] flag could then be useful. How about... -t generates a template that lists each of the attributes together with a list of its flags. Flags are enclosed in square brackets and separated within the list by white space. Tools builder should be aware that new flags may be defined in the future. Existing flags are... [mandatory] - An object MUST NOT contain zero instances of this attrib. [optional] - An object MAY contain zero instances of this attrib. [single] - An object MUST NOT contain more than one instance of this attrib. [multiple] - An object MAY contain more than one instance of this attrib. [look-up key] - Attrib is indexed. [inverse key] - Attrib is in the 'reverse' index. (use -i) Further, if tool builders want this type of facility it might be useful to include the other flags that are defined in the 'config file'. [unique-key] - Attrib is (part of) the unique key. [reference] - Value of attrib is a reference to another object. Though I think initial intention was to provide more documentation for users rather than tools ;-) Chris.