- From: Ian Hickson <ian@hixie.ch>
- Date: Mon, 13 Jul 2009 04:01:49 +0000 (UTC)
On Mon, 15 Jun 2009, Kristof Zelechovski wrote: > > I would consider it a big advantage to the posterity if the descriptions and > the algorithms were better formulated and ready to be understood in plain > text. For example, regarding 2.8.3 DOMTokenList, (see appendix). > > LEGEND > Code samples are in braces; my comments are in brackets, and so are > important [*changes*], [-deletions-] and [+insertions+]. I understand this > effect cannot be automatically provided by the HTML view. > > SUMMARY > Generic changes: > Find "index"; Replace "position"; > Find "token argument"; Replace "given token"; > [this is not strictly necessary, any uniformity would do] > Insert "the" where appropriate. > Specific changes: see below. > > Cheers, > Chris > > Appendix: > > * { tokenCount = tokenList . length } > --- Returns the number of tokens in the string. > > { [*token*] = tokenList . item([*position*]) } > { [+token =+] tokenList[[*position*]] } > --- Returns the token [*at the position given*]. The tokens are sorted > alphabetically. > [I would not say that a token has an index; an index is not a property of > the token.] > > Returns null if [*the position*] is out of range. > > { hasToken = tokenList . has(token) } > Returns true if the token is present; false otherwise. > [ > It may be slightly misleading to speak of tokens _in parameters_. The > present description means that the corresponding LISP binding would be > { (let ((has-token (ask token-list 'has 'token)))) } > Rather than > { (let ((has-token (ask token-list 'has "token")))) } > Of course, I may be entirely wrong here in that the first snippet is what is > intended. > ] > > Throws an { INVALID_CHARACTER_ERR } exception if [+the+] token contains any > spaces. > [In which case it is not a token at all, so this remark makes no sense.] > > { tokenlist . add(token) } > [*Inserts*] [+the+] token [+into the list+], unless it is already present. > [Inserts because the list implementation is sorted.] > > Throws an { INVALID_CHARACTER_ERR } exception if [+the+] token contains any > spaces. [?] > > { tokenList . remove(token) } > Removes [+the+] token if it is present. > > Throws an { INVALID_CHARACTER_ERR } exception if [+the+] token contains any > spaces. [?] > > { hasToken = tokenList . toggle(token) } > Adds [+the+] token if it is not present, or removes it if it is. > [Returns what?] > > Throws an { INVALID_CHARACTER_ERR } exception if token contains any spaces. > [?] > > The { length } attribute must return the number of unique tokens that result > from splitting the underlying string on spaces. This is the length. [Why > this Biblical tone?] > > The [*positions of the supported enumerated tokens within the list*] are the > numbers in the range [+from+] zero to length[*−*]1, unless the length > is zero, in which case there are no supported [*enumerated*] properties. > > The { item([*position*]) } method must split the underlying string on > spaces, sort the resulting list of tokens by Unicode code point, remove > exact duplicates, and then return the [-indexth-] item in this list [+at the > given position+]. If [*the position*] is equal to the number of tokens or > greater, then the method must return null. > > The { has(token) } method must run the following algorithm: > > 1. If the [+given+] token [-argument-] contains any space characters, then > raise an { INVALID_CHARACTER_ERR } exception and stop the algorithm. > 2. Otherwise, split the underlying string on spaces to get the list of > tokens in the object's underlying string. > 3. If the [+given+] token [-indicated by token-] is one of the tokens in > the object's underlying string then return true and stop this algorithm. > 4. Otherwise, return false. > > The { add(token) } method must run the following algorithm: > > 1. If the [+given+] token [-argument-] contains any space characters, then > raise an { INVALID_CHARACTER_ERR } exception and stop the algorithm. > 2. Otherwise, split the underlying string on spaces to get the list of > tokens in the object's underlying string. > 3. If the given token is already one of the tokens in the { DOMTokenList } > object's underlying string then stop the algorithm. > 4. Otherwise, if the { DOMTokenList } object's underlying string is not the > empty string and the last character of that string is not a space character, > then append a U+0020 SPACE character to the end of that string. > 5. Append the [*characters*] of [+the+] token to the end of the { > DOMTokenList } object's underlying string. > > The { remove(token) } method must run the following algorithm: > > 1. If the [+given+] token [-argument-] contains any space characters, then > raise an { INVALID_CHARACTER_ERR } exception and stop the algorithm. > 2. Otherwise, remove the given token from the underlying string. > [ > You leave two consecutive spaces here. > Why do you insist on not allowing an initial space above? ] > > The { toggle(token)} method must run the following algorithm: > > [This algorithm is redundant because it is a secondary method that can be > implemented in terms of {has}, {add} and {remove}. ] > > Objects implementing the DOMTokenList interface must stringify to the > object's underlying string representation. I'm afraid I couldn't work out what was being proposed in the e-mail above. What is the problem that the above is trying to solve? -- Ian Hickson U+1047E )\._.,--....,'``. fL http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,. Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
Received on Sunday, 12 July 2009 21:01:49 UTC