]> gitweb.factorcode.org Git - factor.git/blob - basis/colors/constants/constants.factor
Merge branch 'master' of git://factorcode.org/git/factor
[factor.git] / basis / colors / constants / constants.factor
1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel assocs math math.parser memoize
4 io.encodings.ascii io.files lexer parser
5 colors sequences splitting combinators.smart ascii ;
6 IN: colors.constants
7
8 <PRIVATE
9
10 : parse-color ( line -- name color )
11     [
12         [ [ string>number 255 /f ] tri@ 1.0 <rgba> ] dip
13         [ blank? ] trim-head { { CHAR: \s CHAR: - } } substitute swap
14     ] input<sequence ;
15
16 : parse-rgb.txt ( lines -- assoc )
17     [ "!" head? not ] filter
18     [ 11 cut [ " \t" split harvest ] dip suffix ] map
19     [ parse-color ] H{ } map>assoc ;
20
21 MEMO: rgb.txt ( -- assoc )
22     "resource:basis/colors/constants/rgb.txt" ascii file-lines parse-rgb.txt ;
23
24 PRIVATE>
25
26 ERROR: no-such-color name ;
27
28 : named-color ( name -- rgb )
29     dup rgb.txt at [ ] [ no-such-color ] ?if ;
30
31 : COLOR: scan named-color parsed ; parsing