1 ! Copyright (C) 2013 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
4 USING: colors.private grouping kernel lexer math regexp.classes
11 : hex-only ( str -- str' )
12 [ dup hex-digit? [ drop CHAR: 0 ] unless ] map ;
14 : pad-length ( str -- n )
15 length dup 3 mod [ 3 swap - + ] unless-zero ;
17 : three-groups ( str -- array )
18 dup pad-length [ CHAR: 0 pad-tail ] [ 3 / group ] bi ;
20 : hex-rgb ( array -- array' )
29 : flex-hex ( str -- hex )
30 "#" ?head drop hex-only three-groups hex-rgb "" join ;
32 : flex-hex>rgba ( str -- rgba )
35 SYNTAX: FLEXHEXCOLOR: scan-token flex-hex>rgba suffix! ;