summaryrefslogtreecommitdiff
path: root/css/parser.y
diff options
context:
space:
mode:
authorJohn Mark Bell <jmb@netsurf-browser.org>2004-07-30 21:53:52 +0000
committerJohn Mark Bell <jmb@netsurf-browser.org>2004-07-30 21:53:52 +0000
commitd601aa71887b45b4fbd1c1c86f5cfe2971100216 (patch)
treeea9e8424f3a146984b11d29071f4aa6cc30ca92e /css/parser.y
parent999ded28b8f0bdd35f99bedeb11ac74a4dca5279 (diff)
downloadnetsurf-d601aa71887b45b4fbd1c1c86f5cfe2971100216.tar.gz
netsurf-d601aa71887b45b4fbd1c1c86f5cfe2971100216.tar.bz2
[project @ 2004-07-30 21:53:52 by jmb]
Implement some CSS3 attribute selectors svn path=/import/netsurf/; revision=1167
Diffstat (limited to 'css/parser.y')
-rw-r--r--css/parser.y42
1 files changed, 42 insertions, 0 deletions
diff --git a/css/parser.y b/css/parser.y
index 1dd567ff1..f043ef823 100644
--- a/css/parser.y
+++ b/css/parser.y
@@ -185,6 +185,36 @@ detail(A) ::= LBRAC IDENT(B) DASHMATCH STRING(C) RBRAC.
if (A) { A->data2 = C.text + 1; A->data2_length = C.length - 2;
A->specificity = 0x100; }
else param->memory_error = true; }
+detail(A) ::= LBRAC IDENT(B) PREFIX IDENT(C) RBRAC.
+ { A = css_new_selector(CSS_SELECTOR_ATTRIB_PRE, B.text, B.length);
+ if (A) { A->data2 = C.text; A->data2_length = C.length;
+ A->specificity = 0x100; }
+ else param->memory_error = true; }
+detail(A) ::= LBRAC IDENT(B) PREFIX STRING(C) RBRAC.
+ { A = css_new_selector(CSS_SELECTOR_ATTRIB_PRE, B.text, B.length);
+ if (A) { A->data2 = C.text + 1; A->data2_length = C.length - 2;
+ A->specificity = 0x100; }
+ else param->memory_error = true; }
+detail(A) ::= LBRAC IDENT(B) SUFFIX IDENT(C) RBRAC.
+ { A = css_new_selector(CSS_SELECTOR_ATTRIB_SUF, B.text, B.length);
+ if (A) { A->data2 = C.text; A->data2_length = C.length;
+ A->specificity = 0x100; }
+ else param->memory_error = true; }
+detail(A) ::= LBRAC IDENT(B) SUFFIX STRING(C) RBRAC.
+ { A = css_new_selector(CSS_SELECTOR_ATTRIB_SUF, B.text, B.length);
+ if (A) { A->data2 = C.text + 1; A->data2_length = C.length - 2;
+ A->specificity = 0x100; }
+ else param->memory_error = true; }
+detail(A) ::= LBRAC IDENT(B) SUBSTR IDENT(C) RBRAC.
+ { A = css_new_selector(CSS_SELECTOR_ATTRIB_SUB, B.text, B.length);
+ if (A) { A->data2 = C.text; A->data2_length = C.length;
+ A->specificity = 0x100; }
+ else param->memory_error = true; }
+detail(A) ::= LBRAC IDENT(B) SUBSTR STRING(C) RBRAC.
+ { A = css_new_selector(CSS_SELECTOR_ATTRIB_SUB, B.text, B.length);
+ if (A) { A->data2 = C.text + 1; A->data2_length = C.length - 2;
+ A->specificity = 0x100; }
+ else param->memory_error = true; }
detail(A) ::= COLON IDENT(B).
{ if (B.length == 4 && strncasecmp(B.text, "link", 4) == 0) {
A = css_new_selector(CSS_SELECTOR_ATTRIB, "href", 4);
@@ -297,6 +327,18 @@ any(A) ::= DASHMATCH.
{ A = css_new_node(param->stylesheet, CSS_NODE_DASHMATCH,
0, 0);
if (!A) param->memory_error = true; }
+any(A) ::= PREFIX.
+ { A = css_new_node(param->stylesheet, CSS_NODE_PREFIX,
+ 0, 0);
+ if (!A) param->memory_error = true; }
+any(A) ::= SUFFIX.
+ { A = css_new_node(param->stylesheet, CSS_NODE_SUFFIX,
+ 0, 0);
+ if (!A) param->memory_error = true; }
+any(A) ::= SUBSTR.
+ { A = css_new_node(param->stylesheet, CSS_NODE_SUBSTR,
+ 0, 0);
+ if (!A) param->memory_error = true; }
any(A) ::= COLON.
{ A = css_new_node(param->stylesheet, CSS_NODE_COLON, 0, 0);
if (!A) param->memory_error = true; }