#include "HTMLAttribute.h" StringMapCI HTMLAttribute::m_attributes; //attribute lookup HTMLAttribute HTMLAttribute::attribute_id("id"); HTMLAttribute HTMLAttribute::attribute_class("class"); HTMLAttribute HTMLAttribute::attribute_style("style"); HTMLAttribute HTMLAttribute::attribute_alt("alt"); HTMLAttribute HTMLAttribute::attribute_href("href"); HTMLAttribute HTMLAttribute::attribute_src("src"); HTMLAttribute HTMLAttribute::attribute_onclick("onclick"); HTMLAttribute HTMLAttribute::attribute_name("name"); HTMLAttribute HTMLAttribute::attribute_content("content"); HTMLAttribute::HTMLAttribute(const char *_text): m_text(_text) { m_attributes.insert(make_pair(m_text, this)); } HTMLAttribute *HTMLAttribute::getattribute(const char *attributeStart) { const char *attributeEnd; char c; HTMLAttribute *thisAttribute = 0; //normal tagname resolution attributeEnd = attributeStart; while ((c = *attributeEnd) && isAlphaNumeric(c)) attributeEnd++; //nearest space or > or / (
) or EOF if (c) thisAttribute = attribute(attributeStart, attributeEnd); return thisAttribute; } HTMLAttribute *HTMLAttribute::attribute(const char *text) { StringMapCI::const_iterator i; i = m_attributes.find(text); return (i == m_attributes.end() ? 0 : i->second); } HTMLAttribute *HTMLAttribute::attribute(const char *textstart, const char *textfinish) { char *endc = (char*) textfinish; char c = *endc; *endc = 0; HTMLAttribute *t = attribute(textstart); *endc = c; return t; }