summaryrefslogtreecommitdiff
path: root/css/parser.y
diff options
context:
space:
mode:
authorJames Bursa <james@netsurf-browser.org>2005-05-21 23:30:19 +0000
committerJames Bursa <james@netsurf-browser.org>2005-05-21 23:30:19 +0000
commitff74a126f7a0b37ca81e5bd78d691aea1436884a (patch)
tree394d6d916102b24aee58a2af72ba776dc4bcaea4 /css/parser.y
parent9edb2fb92ca5d02406142edc8443b6d3e54e8ac5 (diff)
downloadnetsurf-ff74a126f7a0b37ca81e5bd78d691aea1436884a.tar.gz
netsurf-ff74a126f7a0b37ca81e5bd78d691aea1436884a.tar.bz2
[project @ 2005-05-21 23:30:19 by bursa]
Improve selector specificity support by adding "working stylesheets" with pre-sorted lists of rules. This also simplifies css_get_style(). The stylesheet origin is now encoded in the specificity. Improve output of css_dump_style(). svn path=/import/netsurf/; revision=1729
Diffstat (limited to 'css/parser.y')
-rw-r--r--css/parser.y40
1 files changed, 20 insertions, 20 deletions
diff --git a/css/parser.y b/css/parser.y
index 32098437a..34aefabf1 100644
--- a/css/parser.y
+++ b/css/parser.y
@@ -118,7 +118,7 @@ simple_selector(A) ::= element_name(B) detail_list(C).
simple_selector(A) ::= element_name(B).
{ if ((A = css_new_selector(CSS_SELECTOR_ELEMENT,
B.text, B.length)))
- A->specificity = 1;
+ A->specificity = CSS_SPECIFICITY_ELEMENT;
else
param->memory_error = true;
}
@@ -152,93 +152,93 @@ detail_list(A) ::= detail(B) detail_list(C).
detail(A) ::= HASH(B).
{ A = css_new_selector(CSS_SELECTOR_ID, B.text+1, B.length-1);
- if (A) A->specificity = 0x10000;
+ if (A) A->specificity = CSS_SPECIFICITY_ID;
else param->memory_error = true; }
detail(A) ::= DOT IDENT(B).
{ A = css_new_selector(CSS_SELECTOR_CLASS, B.text, B.length);
- if (A) A->specificity = 0x100;
+ if (A) A->specificity = CSS_SPECIFICITY_CLASS;
else param->memory_error = true; }
detail(A) ::= LBRAC ws IDENT(B) ws RBRAC.
{ A = css_new_selector(CSS_SELECTOR_ATTRIB, B.text, B.length);
- if (A) A->specificity = 0x100;
+ if (A) A->specificity = CSS_SPECIFICITY_ATTR;
else param->memory_error = true; }
detail(A) ::= LBRAC ws IDENT(B) ws EQUALS ws IDENT(C) ws RBRAC.
{ A = css_new_selector(CSS_SELECTOR_ATTRIB_EQ, B.text, B.length);
if (A) { A->data2 = C.text; A->data2_length = C.length;
- A->specificity = 0x100; }
+ A->specificity = CSS_SPECIFICITY_ATTR; }
else param->memory_error = true; }
detail(A) ::= LBRAC ws IDENT(B) ws EQUALS ws STRING(C) ws RBRAC.
{ A = css_new_selector(CSS_SELECTOR_ATTRIB_EQ, B.text, B.length);
if (A) { A->data2 = C.text + 1; A->data2_length = C.length - 2;
- A->specificity = 0x100; }
+ A->specificity = CSS_SPECIFICITY_ATTR; }
else param->memory_error = true; }
detail(A) ::= LBRAC ws IDENT(B) ws INCLUDES ws IDENT(C) ws RBRAC.
{ A = css_new_selector(CSS_SELECTOR_ATTRIB_INC, B.text, B.length);
if (A) { A->data2 = C.text; A->data2_length = C.length;
- A->specificity = 0x100; }
+ A->specificity = CSS_SPECIFICITY_ATTR; }
else param->memory_error = true; }
detail(A) ::= LBRAC ws IDENT(B) ws INCLUDES ws STRING(C) ws RBRAC.
{ A = css_new_selector(CSS_SELECTOR_ATTRIB_INC, B.text, B.length);
if (A) { A->data2 = C.text + 1; A->data2_length = C.length - 2;
- A->specificity = 0x100; }
+ A->specificity = CSS_SPECIFICITY_ATTR; }
else param->memory_error = true; }
detail(A) ::= LBRAC ws IDENT(B) ws DASHMATCH ws IDENT(C) ws RBRAC.
{ A = css_new_selector(CSS_SELECTOR_ATTRIB_DM, B.text, B.length);
if (A) { A->data2 = C.text; A->data2_length = C.length;
- A->specificity = 0x100; }
+ A->specificity = CSS_SPECIFICITY_ATTR; }
else param->memory_error = true; }
detail(A) ::= LBRAC ws IDENT(B) ws DASHMATCH ws STRING(C) ws RBRAC.
{ A = css_new_selector(CSS_SELECTOR_ATTRIB_DM, B.text, B.length);
if (A) { A->data2 = C.text + 1; A->data2_length = C.length - 2;
- A->specificity = 0x100; }
+ A->specificity = CSS_SPECIFICITY_ATTR; }
else param->memory_error = true; }
detail(A) ::= LBRAC ws IDENT(B) ws PREFIX ws IDENT(C) ws 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; }
+ A->specificity = CSS_SPECIFICITY_ATTR; }
else param->memory_error = true; }
detail(A) ::= LBRAC ws IDENT(B) ws PREFIX ws STRING(C) ws 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; }
+ A->specificity = CSS_SPECIFICITY_ATTR; }
else param->memory_error = true; }
detail(A) ::= LBRAC ws IDENT(B) ws SUFFIX ws IDENT(C) ws 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; }
+ A->specificity = CSS_SPECIFICITY_ATTR; }
else param->memory_error = true; }
detail(A) ::= LBRAC ws IDENT(B) ws SUFFIX ws STRING(C) ws 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; }
+ A->specificity = CSS_SPECIFICITY_ATTR; }
else param->memory_error = true; }
detail(A) ::= LBRAC ws IDENT(B) ws SUBSTR ws IDENT(C) ws 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; }
+ A->specificity = CSS_SPECIFICITY_ATTR; }
else param->memory_error = true; }
detail(A) ::= LBRAC ws IDENT(B) ws SUBSTR ws STRING(C) ws 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; }
+ A->specificity = CSS_SPECIFICITY_ATTR; }
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);
- if (A) A->specificity = 0x100;
+ if (A) A->specificity = CSS_SPECIFICITY_ATTR;
else param->memory_error = true;
} else {
A = css_new_selector(CSS_SELECTOR_PSEUDO, B.text, B.length);
- if (A) A->specificity = 0x100;
+ if (A) A->specificity = CSS_SPECIFICITY_ATTR;
else param->memory_error = true;
} }
detail(A) ::= COLON FUNCTION(B) ws IDENT ws RPAREN.
{ A = css_new_selector(CSS_SELECTOR_PSEUDO, B.text, B.length);
- if (A) A->specificity = 0x100;
+ if (A) A->specificity = CSS_SPECIFICITY_ATTR;
else param->memory_error = true; }
detail(A) ::= COLON FUNCTION(B) ws RPAREN.
{ A = css_new_selector(CSS_SELECTOR_PSEUDO, B.text, B.length);
- if (A) A->specificity = 0x100;
+ if (A) A->specificity = CSS_SPECIFICITY_ATTR;
else param->memory_error = true; }
declaration_list(A) ::= .