summary refs log tree commit diff stats
path: root/lib/pure
diff options
context:
space:
mode:
authorJjp137 <Jjp137@users.noreply.github.com>2019-10-28 05:11:11 -0700
committerAndreas Rumpf <rumpf_a@web.de>2019-10-28 13:11:11 +0100
commitee119f79847af373a0ef403ef87efce3fb2f3ea4 (patch)
tree3a6c537764e516eb859dcc2e4f5269caf9c52dbc /lib/pure
parent580462c886209a0a5b1c1059fcc5b905b6bf1814 (diff)
downloadNim-ee119f79847af373a0ef403ef87efce3fb2f3ea4.tar.gz
colors: fix 'mix' template and make most examples runnable (#12532) [backport]
* colors: fix the 'mix' template
* colors: make most examples runnable
Diffstat (limited to 'lib/pure')
-rw-r--r--lib/pure/colors.nim122
1 files changed, 61 insertions, 61 deletions
diff --git a/lib/pure/colors.nim b/lib/pure/colors.nim
index 5293a6142..1332b0738 100644
--- a/lib/pure/colors.nim
+++ b/lib/pure/colors.nim
@@ -52,12 +52,12 @@ proc `+`*(a, b: Color): Color =
   ## This uses saturated artithmetic, so that each color
   ## component cannot overflow (255 is used as a maximum).
   ##
-  ## .. code-block::
-  ##   var
-  ##     a = Color(0xaa_00_ff)
-  ##     b = Color(0x11_cc_cc)
-  ##   assert a + b == Color(0xbb_cc_ff)
-  ##
+  runnableExamples:
+    var
+      a = Color(0xaa_00_ff)
+      b = Color(0x11_cc_cc)
+    assert a + b == Color(0xbb_cc_ff)
+
   colorOp(satPlus)
 
 proc `-`*(a, b: Color): Color =
@@ -66,24 +66,26 @@ proc `-`*(a, b: Color): Color =
   ## This uses saturated artithmetic, so that each color
   ## component cannot underflow (0 is used as a minimum).
   ##
-  ## .. code-block::
-  ##   var
-  ##     a = Color(0xff_33_ff)
-  ##     b = Color(0x11_ff_cc)
-  ##   assert a - b == Color(0xee_00_33)
-  ##
+  runnableExamples:
+    var
+      a = Color(0xff_33_ff)
+      b = Color(0x11_ff_cc)
+    assert a - b == Color(0xee_00_33)
+
   colorOp(satMinus)
 
 proc extractRGB*(a: Color): tuple[r, g, b: range[0..255]] =
   ## Extracts the red/green/blue components of the color `a`.
   ##
-  ## .. code-block::
-  ##   var
-  ##     a = Color(0xff_00_ff)
-  ##     b = Color(0x00_ff_cc)
-  ##   echo extractRGB(a) # => (r: 255, g: 0, b: 255)
-  ##   echo extractRGB(b) # => (r: 0, g: 255, b: 204)
-  ##
+  runnableExamples:
+    var
+      a = Color(0xff_00_ff)
+      b = Color(0x00_ff_cc)
+    type
+      col = range[0..255]
+    assert extractRGB(a) == (r: 255.col, g: 0.col, b: 255.col)
+    assert extractRGB(b) == (r: 0.col, g: 255.col, b: 204.col)
+
   result.r = a.int shr 16 and 0xff
   result.g = a.int shr 8 and 0xff
   result.b = a.int and 0xff
@@ -92,13 +94,13 @@ proc intensity*(a: Color, f: float): Color =
   ## Returns `a` with intensity `f`. `f` should be a float from 0.0 (completely
   ## dark) to 1.0 (full color intensity).
   ##
-  ## .. code-block::
-  ##   var
-  ##     a = Color(0xff_00_ff)
-  ##     b = Color(0x00_42_cc)
-  ##   assert a.intensity(0.5) == Color(0x80_00_80)
-  ##   assert b.intensity(0.5) == Color(0x00_21_66)
-  ##
+  runnableExamples:
+    var
+      a = Color(0xff_00_ff)
+      b = Color(0x00_42_cc)
+    assert a.intensity(0.5) == Color(0x80_00_80)
+    assert b.intensity(0.5) == Color(0x00_21_66)
+
   var r = toInt(toFloat(a.int shr 16 and 0xff) * f)
   var g = toInt(toFloat(a.int shr 8 and 0xff) * f)
   var b = toInt(toFloat(a.int and 0xff) * f)
@@ -114,16 +116,16 @@ template mix*(a, b: Color, fn: untyped): untyped =
   ## If `fn`'s result is not in the `range[0..255]`,
   ## it will be saturated to be so.
   ##
-  ## .. code-block::
-  ##   var
-  ##     a = Color(0x0a2814)
-  ##     b = Color(0x050a03)
-  ##
-  ##   proc myMix(x, y: int): int =
-  ##     2 * x - 3 * y
-  ##
-  ##   assert mix(a, b, myMix) == Color(0x05_32_1f)
-  ##
+  runnableExamples:
+    var
+      a = Color(0x0a2814)
+      b = Color(0x050a03)
+
+    proc myMix(x, y: int): int =
+      2 * x - 3 * y
+
+    assert mix(a, b, myMix) == Color(0x05_32_1f)
+
   template `><` (x: untyped): untyped =
     # keep it in the range 0..255
     block:
@@ -132,7 +134,6 @@ template mix*(a, b: Color, fn: untyped): untyped =
         y = if y < 0: 0 else: 255
       y
 
-  var ar, ag, ab, br, bg, bb: int
   extract(a, ar, ag, ab)
   extract(b, br, bg, bb)
   rawRGB(><fn(ar, br), ><fn(ag, bg), ><fn(ab, bb))
@@ -425,9 +426,8 @@ const
 proc `$`*(c: Color): string =
   ## Converts a color into its textual representation.
   ##
-  ## .. code-block::
-  ##   assert $colFuchsia == "#FF00FF"
-  ##
+  runnableExamples:
+    assert $colFuchsia == "#FF00FF"
   result = '#' & toHex(int(c), 6)
 
 proc colorNameCmp(x: tuple[name: string, col: Color], y: string): int =
@@ -439,15 +439,15 @@ proc parseColor*(name: string): Color =
   ## If no valid color could be parsed ``ValueError`` is raised.
   ## Case insensitive.
   ##
-  ## .. code-block::
-  ##   var
-  ##     a = "silver"
-  ##     b = "#0179fc"
-  ##     c = "#zzmmtt"
-  ##   assert parseColor(a) == Color(0xc0_c0_c0)
-  ##   assert parseColor(b) == Color(0x01_79_fc)
-  ##   doAssertRaises(ValueError): discard parseColor(c)
-  ##
+  runnableExamples:
+    var
+      a = "silver"
+      b = "#0179fc"
+      c = "#zzmmtt"
+    assert parseColor(a) == Color(0xc0_c0_c0)
+    assert parseColor(b) == Color(0x01_79_fc)
+    doAssertRaises(ValueError): discard parseColor(c)
+
   if name[0] == '#':
     result = Color(parseHexInt(name))
   else:
@@ -459,15 +459,15 @@ proc isColor*(name: string): bool =
   ## Returns true if `name` is a known color name or a hexadecimal color
   ## prefixed with ``#``. Case insensitive.
   ##
-  ## .. code-block::
-  ##   var
-  ##     a = "silver"
-  ##     b = "#0179fc"
-  ##     c = "#zzmmtt"
-  ##   assert a.isColor
-  ##   assert b.isColor
-  ##   assert not c.isColor
-  ##
+  runnableExamples:
+    var
+      a = "silver"
+      b = "#0179fc"
+      c = "#zzmmtt"
+    assert a.isColor
+    assert b.isColor
+    assert not c.isColor
+
   if name[0] == '#':
     for i in 1 .. name.len-1:
       if name[i] notin {'0'..'9', 'a'..'f', 'A'..'F'}: return false
@@ -478,7 +478,7 @@ proc isColor*(name: string): bool =
 proc rgb*(r, g, b: range[0..255]): Color =
   ## Constructs a color from RGB values.
   ##
-  ## .. code-block::
-  ##   assert rgb(0, 255, 128) == Color(0x00_ff_80)
-  ##
+  runnableExamples:
+    assert rgb(0, 255, 128) == Color(0x00_ff_80)
+
   result = rawRGB(r, g, b)