---+ Package =TWiki::Attrs= Class of attribute sets, designed for parsing and storing attribute values from a TWiki tag e.g. =%TAG{"joe" fred="bad" joe="mad"}%= An attribute set is a hash containing an entry for each parameter. The default parameter (unnamed quoted string) is named _DEFAULT in the hash. Attributes declared later in the string will override those of the same name defined earlier. The one exception to this is the _DEFAULT key, where the _first_ instance is always taken. As well as the default TWiki syntax (parameter values double-quoted) this class also parses single-quoted values, unquoted spaceless values, spaces around the =, and commas as well as spaces separating values. The extended syntax has to be enabled by passing the =$friendly= parameter to =new=. %TOC% ---++ ClassMethod *new* ($string,$friendly)=>\%attrsObjectRef * =$string= - String containing attribute specification * =$friendly= - if true, the parse will be according to the extended syntax pioneered by the original Contrib::Attrs. Otherwise it will be strict as per traditional TWiki syntax. Parse a standard attribute string containing name=value pairs and create a new attributes object. The value may be a word or a quoted string. If there is an error during parsing, the parse will complete but $attrs->{_ERROR} will be set in the new object. $attrs->{_RAW} will always contain the full unprocessed $string. Extended syntax example: my $attrs = new TWiki::Attrs('the="time \\"has come", "the walrus" said to=speak of=\'many \\'things\', 1); In this example: * =the= will be =time "has come= * __default__ will be =the walrus= * =said= will be =on= * =to= will be =speak= * =of= will be =many 'things= Only " and ' are escaped. Traditional syntax is as old TWiki, except that the whole string is parsed (the old parser would only recognise default values in position 1, nowhere else) ---++ ObjectMethod *isEmpty* () -> boolean Return false if attribute set is not empty. ---++ ObjectMethod *remove* ($key) -> $value * =$key= - Attribute to remove Remove an attr value from the map, return old value. After a call to =remove= the attribute is no longer defined. ---++ ObjectMethod *stringify* () -> $string Generate a printed form for the map, using strict attribute syntax, with only the single-quote extension syntax observed (no {} brackets, though).