On 24 Apr 2006, at 19:39, Geoffrey Garen wrote:
To me it seems wrong that the internal DOM would have to know about the class naming scheme in a particular binding. A better approach might be just to grab the tag name and swizzle it according to the binding's class naming convention. Something like this:
HTMLElement* htmlElt = static_cast<HTMLElement*>(impl); String tagName = htmlElt->tagName(); String className = "DOMHTML" + tagName + "Element";
That wouldn't be exactly right because of capitalization, but it illustrates the general idea.
I thought of that too, but as you say, the Capitalisation is not consistent enough for a generic tagName to Obj-c class name. It would also require the className to be built up for each node. Not a great hit I know, but still slower than getting a constant string from my objcClassName proposal. Also, (AFAIK) some tags do not have an equivalent class in the internal DOM (e.g H1 - H6) and TBODY, THEAD and TFOOT. These would need special casing. Other solutions I have been thinking about are: 1. Have an enum for all the HTML tags and have a method that returns this enum for each element kind. Then have a simple switch statement to map the enum to ClassName. This enum might then have other uses for when the element type needs knowing 'quickly'. 2. Have a HashMap (or NSDictionary) that maps the tagName to the ClassName. Any other suggestions would be welcome Matt