mirror of
https://github.com/Relintai/rcpp_framework.git
synced 2025-05-02 13:47:56 +02:00
Implemented a few helpers for the HTMLParser.
This commit is contained in:
parent
da6d18beef
commit
ff8790f81d
@ -12,7 +12,7 @@ bool HTMLParserAttribute::match_data(const Vector<String> &d) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
bool HTMLParserAttribute::contains_data(const String &d) {
|
bool HTMLParserAttribute::contains_data(const String &d) {
|
||||||
return attribute.find(d) != -1;
|
return data.find(d) != -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
String HTMLParserAttribute::to_string() {
|
String HTMLParserAttribute::to_string() {
|
||||||
@ -38,6 +38,98 @@ HTMLParserAttribute::HTMLParserAttribute() {
|
|||||||
HTMLParserAttribute::~HTMLParserAttribute() {
|
HTMLParserAttribute::~HTMLParserAttribute() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HTMLParserTag *HTMLParserTag::get_first(const String &t) {
|
||||||
|
if (tag == t) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < tags.size(); ++i) {
|
||||||
|
HTMLParserTag *ht = tags[i]->get_first(t);
|
||||||
|
|
||||||
|
if (ht) {
|
||||||
|
return ht;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
HTMLParserTag *HTMLParserTag::get_first(const String &t, const String &attrib, const String &val) {
|
||||||
|
if (tag == t) {
|
||||||
|
if (has_attribute(attrib, val)) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = 0; i < tags.size(); ++i) {
|
||||||
|
HTMLParserTag *ht = tags[i]->get_first(t, attrib, val);
|
||||||
|
|
||||||
|
if (ht) {
|
||||||
|
return ht;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
String HTMLParserTag::get_attribute_value(const String &attrib) {
|
||||||
|
HTMLParserAttribute *a = get_attribute(attrib);
|
||||||
|
|
||||||
|
if (a) {
|
||||||
|
return a->data;
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
HTMLParserAttribute *HTMLParserTag::get_attribute(const String &attrib) {
|
||||||
|
for (int i = 0; i < attributes.size(); ++i) {
|
||||||
|
HTMLParserAttribute *a = attributes[i];
|
||||||
|
|
||||||
|
if (a->match_attrib(attrib)) {
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool HTMLParserTag::has_attribute(const String &attrib) {
|
||||||
|
for (int i = 0; i < attributes.size(); ++i) {
|
||||||
|
HTMLParserAttribute *a = attributes[i];
|
||||||
|
|
||||||
|
if (a->match_attrib(attrib)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
HTMLParserAttribute *HTMLParserTag::get_attribute(const String &attrib, const String &contains_val) {
|
||||||
|
for (int i = 0; i < attributes.size(); ++i) {
|
||||||
|
HTMLParserAttribute *a = attributes[i];
|
||||||
|
|
||||||
|
if (a->match_attrib(attrib) && a->contains_data(contains_val)) {
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool HTMLParserTag::has_attribute(const String &attrib, const String &contains_val) {
|
||||||
|
for (int i = 0; i < attributes.size(); ++i) {
|
||||||
|
HTMLParserAttribute *a = attributes[i];
|
||||||
|
|
||||||
|
if (a->match_attrib(attrib) && a->contains_data(contains_val)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void HTMLParserTag::process() {
|
void HTMLParserTag::process() {
|
||||||
if (type != HTMLParserTag::HTML_PARSER_TAG_TYPE_NONE) {
|
if (type != HTMLParserTag::HTML_PARSER_TAG_TYPE_NONE) {
|
||||||
return;
|
return;
|
||||||
|
@ -42,6 +42,17 @@ public:
|
|||||||
Vector<HTMLParserTag*> tags;
|
Vector<HTMLParserTag*> tags;
|
||||||
Vector<HTMLParserAttribute*> attributes;
|
Vector<HTMLParserAttribute*> attributes;
|
||||||
|
|
||||||
|
HTMLParserTag *get_first(const String &t);
|
||||||
|
HTMLParserTag *get_first(const String &t, const String &attrib, const String &val);
|
||||||
|
|
||||||
|
String get_attribute_value(const String &attrib);
|
||||||
|
|
||||||
|
HTMLParserAttribute *get_attribute(const String &attrib);
|
||||||
|
bool has_attribute(const String &attrib);
|
||||||
|
|
||||||
|
HTMLParserAttribute *get_attribute(const String &attrib, const String &contains_val);
|
||||||
|
bool has_attribute(const String &attrib, const String &contains_val);
|
||||||
|
|
||||||
void process();
|
void process();
|
||||||
void parse_args(const String &args);
|
void parse_args(const String &args);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user