]> gitweb.factorcode.org Git - factor.git/blob - unmaintained/triggers/triggers.factor
tools.test: Make the flag public. Finish porting tester changes to fuzzer.
[factor.git] / unmaintained / 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