summaryrefslogtreecommitdiff
path: root/test/dump.h
diff options
context:
space:
mode:
Diffstat (limited to 'test/dump.h')
-rw-r--r--test/dump.h73
1 files changed, 64 insertions, 9 deletions
diff --git a/test/dump.h b/test/dump.h
index 602530a..85f65b8 100644
--- a/test/dump.h
+++ b/test/dump.h
@@ -178,6 +178,10 @@ void dump_selector_list(css_selector *list, char **ptr)
memcpy(*ptr, " + ", 3);
*ptr += 3;
break;
+ case CSS_COMBINATOR_GENERIC_SIBLING:
+ memcpy(*ptr, " + ", 3);
+ *ptr += 3;
+ break;
}
dump_selector(list, ptr);
@@ -200,6 +204,9 @@ void dump_selector(css_selector *selector, char **ptr)
void dump_selector_detail(css_selector_detail *detail, char **ptr)
{
+ if (detail->negate)
+ *ptr += sprintf(*ptr, ":not(");
+
switch (detail->type) {
case CSS_SELECTOR_ELEMENT:
if (lwc_string_length(detail->name) == 1 &&
@@ -226,12 +233,18 @@ void dump_selector_detail(css_selector_detail *detail, char **ptr)
**ptr = ':';
*ptr += 1;
dump_string(detail->name, ptr);
- if (detail->value != NULL) {
- **ptr = '(';
- *ptr += 1;
- dump_string(detail->value, ptr);
- **ptr = ')';
- *ptr += 1;
+ if (detail->value_type == CSS_SELECTOR_DETAIL_VALUE_STRING) {
+ if (detail->value.string != NULL) {
+ **ptr = '(';
+ *ptr += 1;
+ dump_string(detail->value.string, ptr);
+ **ptr = ')';
+ *ptr += 1;
+ }
+ } else {
+ *ptr += sprintf(*ptr, "(%dn+%d)",
+ detail->value.nth.a,
+ detail->value.nth.b);
}
break;
case CSS_SELECTOR_ATTRIBUTE:
@@ -248,7 +261,7 @@ void dump_selector_detail(css_selector_detail *detail, char **ptr)
(*ptr)[0] = '=';
(*ptr)[1] = '"';
*ptr += 2;
- dump_string(detail->value, ptr);
+ dump_string(detail->value.string, ptr);
(*ptr)[0] = '"';
(*ptr)[1] = ']';
*ptr += 2;
@@ -261,7 +274,7 @@ void dump_selector_detail(css_selector_detail *detail, char **ptr)
(*ptr)[1] = '=';
(*ptr)[2] = '"';
*ptr += 3;
- dump_string(detail->value, ptr);
+ dump_string(detail->value.string, ptr);
(*ptr)[0] = '"';
(*ptr)[1] = ']';
*ptr += 2;
@@ -274,12 +287,54 @@ void dump_selector_detail(css_selector_detail *detail, char **ptr)
(*ptr)[1] = '=';
(*ptr)[2] = '"';
*ptr += 3;
- dump_string(detail->value, ptr);
+ dump_string(detail->value.string, ptr);
+ (*ptr)[0] = '"';
+ (*ptr)[1] = ']';
+ *ptr += 2;
+ break;
+ case CSS_SELECTOR_ATTRIBUTE_PREFIX:
+ **ptr = '[';
+ *ptr += 1;
+ dump_string(detail->name, ptr);
+ (*ptr)[0] = '^';
+ (*ptr)[1] = '=';
+ (*ptr)[2] = '"';
+ *ptr += 3;
+ dump_string(detail->value.string, ptr);
+ (*ptr)[0] = '"';
+ (*ptr)[1] = ']';
+ *ptr += 2;
+ break;
+ case CSS_SELECTOR_ATTRIBUTE_SUFFIX:
+ **ptr = '[';
+ *ptr += 1;
+ dump_string(detail->name, ptr);
+ (*ptr)[0] = '$';
+ (*ptr)[1] = '=';
+ (*ptr)[2] = '"';
+ *ptr += 3;
+ dump_string(detail->value.string, ptr);
+ (*ptr)[0] = '"';
+ (*ptr)[1] = ']';
+ *ptr += 2;
+ break;
+ case CSS_SELECTOR_ATTRIBUTE_SUBSTRING:
+ **ptr = '[';
+ *ptr += 1;
+ dump_string(detail->name, ptr);
+ (*ptr)[0] = '*';
+ (*ptr)[1] = '=';
+ (*ptr)[2] = '"';
+ *ptr += 3;
+ dump_string(detail->value.string, ptr);
(*ptr)[0] = '"';
(*ptr)[1] = ']';
*ptr += 2;
break;
}
+
+ if (detail->negate)
+ *ptr += sprintf(*ptr, ")");
}
/**