about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--src/css/cssvalues.nim8
-rw-r--r--src/html/dom.nim2
-rw-r--r--test/layout/color-functions.color.expected1
-rw-r--r--test/layout/color-functions.html4
4 files changed, 10 insertions, 5 deletions
diff --git a/src/css/cssvalues.nim b/src/css/cssvalues.nim
index 01d9bbd7..933b6c87 100644
--- a/src/css/cssvalues.nim
+++ b/src/css/cssvalues.nim
@@ -958,7 +958,7 @@ func getToken(cvals: openArray[CSSComponentValue]; i: int): Opt[CSSToken] =
       return ok(CSSToken(cval))
   return err()
 
-func parseARGB(value: openArray[CSSComponentValue]): Opt[CSSColor] =
+proc parseARGB(value: openArray[CSSComponentValue]): Opt[CSSColor] =
   var commaMode = false
   var i = value.skipBlanks(0)
   template check_err(slash: bool) =
@@ -995,7 +995,7 @@ func parseARGB(value: openArray[CSSComponentValue]): Opt[CSSColor] =
     clamp(CSSToken(value[i]).nvalue, 0, 1)
   else:
     1
-  if value.skipBlanks(i) < value.len:
+  if value.skipBlanks(i + 1) < value.len:
     return err()
   return ok(rgba(int(r), int(g), int(b), int(a * 255)).cssColor())
 
@@ -1038,7 +1038,7 @@ func parseANSI(value: openArray[CSSComponentValue]): Opt[CSSColor] =
         return ok(ANSIColor(i).cssColor())
   return err()
 
-func cssColor*(val: CSSComponentValue): Opt[CSSColor] =
+proc parseColor*(val: CSSComponentValue): Opt[CSSColor] =
   if val of CSSToken:
     let tok = CSSToken(val)
     case tok.t
@@ -1375,7 +1375,7 @@ proc parseValue(cvals: openArray[CSSComponentValue]; t: CSSPropertyType;
   of cvtListStyleType:
     set_bit listStyleType, ?parseIdent[CSSListStyleType](cval)
   of cvtFontStyle: set_bit fontStyle, ?parseIdent[CSSFontStyle](cval)
-  of cvtColor: set_word color, ?cssColor(cval)
+  of cvtColor: set_word color, ?parseColor(cval)
   of cvtLength:
     case t
     of cptMinWidth, cptMinHeight:
diff --git a/src/html/dom.nim b/src/html/dom.nim
index 167d4b74..494f2fbb 100644
--- a/src/html/dom.nim
+++ b/src/html/dom.nim
@@ -2831,7 +2831,7 @@ proc parseColor(element: Element; s: string): ARGBColor =
   let ec = rgba(255, 255, 255, 255)
   if cval.isNone:
     return ec
-  let color0 = cssColor(cval.get)
+  let color0 = parseColor(cval.get)
   if color0.isNone:
     return ec
   let color = color0.get
diff --git a/test/layout/color-functions.color.expected b/test/layout/color-functions.color.expected
new file mode 100644
index 00000000..b507512a
--- /dev/null
+++ b/test/layout/color-functions.color.expected
@@ -0,0 +1 @@
+test
diff --git a/test/layout/color-functions.html b/test/layout/color-functions.html
new file mode 100644
index 00000000..6947300e
--- /dev/null
+++ b/test/layout/color-functions.html
@@ -0,0 +1,4 @@
+<!DOCTYPE html>
+<div style="color: rgba(100, 200, 30, 1)">
+test
+</div>