[whatwg] Sample DOMTokenString Implementation
Lachlan Hunt
lachlan.hunt at lachy.id.au
Tue Sep 6 06:11:22 PDT 2005
Hi,
I implemented a sample DOMTokenString() interface tonight [1].
Since String() is immutable in JS, I couldn't implement it as suggested
in the current draft. So, instead, I've implemented it like this:
interface DOMTokenString : DOMString {
bool has(in DOMString token);
DOMTokenString add(in DOMString token);
DOMTokenString remove(in DOMString token);
}
The constructor accepts a single string as a parameter
new DOMTokenString(string);
The string is split into tokens and stored in an private array within
the object:
var tokens = string.split(/\s/);
That splits it on any whitespace characters. The tokens are then
rejoined into a string using a single space as the separator. This is
similar to the way class works in HTML (at least, in Gecko).
i.e. class="foo bar" is equivalent to class=" foo bar ", and in Gecko,
.className returns each separated by a single space.
e.g.
var s = new DOMTokenString(" foo bar "); // returns "foo bar"
bool has();
* This searches the array for the first index of the specified token
and returns true if found, false otherwise.
e.g.
s.has("bar"); // returns true;
s.has ("foo bar") // returns false;
DOMTokenString add();
* This function returns a new DOMTokenString() created from the
concatenation of the the current string(), a separator and the new
token.
* It does not matter if the same token is already present, the new
token is just appended to the end.
* If the token parameter is, itself, a space separated list, it is
(because of the way the new string is constructed) equivalent to
adding each token individually.
e.g.
s = s.add("foo"); // returns "foo bar foo"
s = s.add("baz quux") // returns "foo bar foo baz quux"
DOMTokenString remove();
* This filters the tokens array, removing all occurances of matching
tokens. The new token array is then joined and returned.
e.g.
s = s.remove("foo") // returns "bar baz quux"
s = s.remove("bar baz") // returns "bar baz quux" (i.e. no match)
s = s.remove("baz"); // returns "bar quux"
[1] http://lachy.id.au/dev/script/examples/DOM/DOMTokenString.js
--
Lachlan Hunt
http://lachy.id.au/
More information about the whatwg
mailing list