]> gitweb.factorcode.org Git - factor-unmaintained.git/blob - triggers/triggers.factor
images.processing.rotation: moving to extra/
[factor-unmaintained.git] / triggers / triggers.factor
1 ! Copyright (C) 2008 Alex Chapman
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: assocs digraphs kernel namespaces sequences ;
4 IN: triggers
5
6 : triggers ( -- triggers )
7     \ triggers global [ drop H{ } clone ] cache ;
8
9 : trigger-graph ( trigger -- graph )
10     triggers [ drop <digraph> ] cache ;
11
12 : reset-trigger ( trigger -- )
13     <digraph> swap triggers set-at ;
14
15 : add-trigger ( key quot trigger -- )
16     ! trigger should be a symbol. Note that symbols with the same name but
17     ! different vocab are not equal
18     trigger-graph add-vertex ; 
19
20 : before ( key1 key2 trigger -- )
21     trigger-graph add-edge ;
22
23 : after ( key1 key2 trigger -- )
24     swapd before ;
25
26 : call-trigger ( trigger -- )
27     trigger-graph topological-sorted-values [ call ] each ;
28