On Fri, 27 Jul 2007 13:07:26 +0200, Simon Pieters <[EMAIL PROTECTED]>
wrote:
On Thu, 05 Jul 2007 23:43:55 +0200, Simon Pieters <[EMAIL PROTECTED]>
wrote:
Color attributes in HTML have special processing.
Some tests/demos:
http://simon.html5.org/test/html/parsing/color-attributes/
https://bugzilla.mozilla.org/attachment.cgi?id=188040 contains further
tests and an algorithm that is supposed to match what IE does. The only
flaw in that algorithm AFAICT is that there is a step missing before the
first step: match the value against the list of supported color
keywords.
For reference, the complete algorithm would be:
1. If the value case-insensitively matches a color keyword, use
that and
abort these steps. [CSS3COLOR]
ASCII-case-insensitively, even.
"transparent" is also to be treated as a keyword, meaning transparent.
(It seems that IE treats transparent as black for text color, but that's
a CSS thing.)
2. Trim all but the first 128 chars from the string.
3. If it exists, strip the first leading #.
4. Replace non-valid-hex chars with 0s.
5. Lower-case the string.
ASCII-lower-case.
6. Make string length a multiple of 3 and a minimum of 3 by
appending 0s.
7. Split the string into 3 equal segments.
8. Trim all but the right-most 8 chars from each segment.
9. If segment length is 1, left-pad each segment with a 0, else:
10. While segment length is greater than 2 and the first char of each
segment is equal to 0, trim the left-most char from each segment,
then:
11. Trim all but the first 2 chars from each segment.
12. Join the segments and append them to a # char to create the final
string.
Test cases for the algorithm:
http://simon.html5.org/test/html/parsing/color-attributes/the-algorithm/
--
Simon Pieters