From 9fa9b9d104c730ef6d84b19245b61ebc9554b432 Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Mon, 31 Jan 2011 00:18:15 +0000 Subject: CSS3 Selectors svn path=/trunk/libcss/; revision=11557 --- test/dump.h | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 64 insertions(+), 9 deletions(-) (limited to 'test/dump.h') 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, ")"); } /** -- cgit v1.2.3