]> gitweb.factorcode.org Git - factor.git/blob - basis/models/product/product.factor
core, basis, extra: Remove DOS line endings from files.
[factor.git] / basis / models / product / product.factor
1 ! Copyright (C) 2008 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors kernel models sequences ;
4 IN: models.product
5
6 TUPLE: product < model ;
7
8 : new-product ( models class -- product )
9     f swap new-model
10         swap clone >>dependencies ; inline
11
12 : <product> ( models -- product )
13     product new-product ;
14
15 : product-value ( model quot -- seq )
16     [ dependencies>> ] dip map ; inline
17
18 : set-product-value ( seq model quot -- )
19     [ dependencies>> ] dip 2each ; inline
20
21 M: product model-changed
22     nip
23     dup [ value>> ] product-value >>value
24     notify-connections ;
25
26 M: product model-activated dup model-changed ;
27
28 M: product update-model
29     [ value>> ] keep [ set-model ] set-product-value ;
30
31 M: product range-value
32     [ range-value ] product-value ;
33
34 M: product range-page-value
35     [ range-page-value ] product-value ;
36
37 M: product range-min-value
38     [ range-min-value ] product-value ;
39
40 M: product range-max-value
41     [ range-max-value ] product-value ;
42
43 M: product range-max-value*
44     [ range-max-value* ] product-value ;
45
46 M: product set-range-value
47     [ clamp-value ] keep
48     [ set-range-value ] set-product-value ;
49
50 M: product set-range-page-value
51     [ set-range-page-value ] set-product-value ;
52
53 M: product set-range-min-value
54     [ set-range-min-value ] set-product-value ;
55
56 M: product set-range-max-value
57     [ set-range-max-value ] set-product-value ;