]> gitweb.factorcode.org Git - factor.git/blob - basis/colors/constants/constants.factor
Factor theme colors are now referenced by name.
[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 io.encodings.utf8
4 io.files lexer parser colors sequences splitting
5 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"
23     "resource:basis/colors/constants/factor-colors.txt"
24     [ utf8 file-lines parse-rgb.txt ] bi@ assoc-union ;
25
26 PRIVATE>
27
28 : named-colors ( -- keys ) rgb.txt keys ;
29
30 ERROR: no-such-color name ;
31
32 : named-color ( name -- color )
33     dup rgb.txt at [ ] [ no-such-color ] ?if ;
34
35 SYNTAX: COLOR: scan named-color parsed ;