#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;
}