29 lines
		
	
	
		
			775 B
		
	
	
	
		
			Factor
		
	
	
		
		
			
		
	
	
			29 lines
		
	
	
		
			775 B
		
	
	
	
		
			Factor
		
	
	
|  | ! Copyright (C) 2008 Alex Chapman | ||
|  | ! See http://factorcode.org/license.txt for BSD license. | ||
|  | USING: assocs digraphs kernel namespaces sequences ;
 | ||
|  | IN: triggers | ||
|  | 
 | ||
|  | : triggers ( -- triggers )
 | ||
|  |     \ triggers global [ drop H{ } clone ] cache ;
 | ||
|  | 
 | ||
|  | : trigger-graph ( trigger -- graph )
 | ||
|  |     triggers [ drop <digraph> ] cache ;
 | ||
|  | 
 | ||
|  | : reset-trigger ( trigger -- )
 | ||
|  |     <digraph> swap triggers set-at ;
 | ||
|  | 
 | ||
|  | : add-trigger ( key quot trigger -- )
 | ||
|  |     #! trigger should be a symbol. Note that symbols with the same name but | ||
|  |     #! different vocab are not equal | ||
|  |     trigger-graph add-vertex ;  | ||
|  | 
 | ||
|  | : before ( key1 key2 trigger -- )
 | ||
|  |     trigger-graph add-edge ;
 | ||
|  | 
 | ||
|  | : after ( key1 key2 trigger -- )
 | ||
|  |     swapd before ;
 | ||
|  | 
 | ||
|  | : call-trigger ( trigger -- )
 | ||
|  |     trigger-graph topological-sorted-values [ call ] each ;
 | ||
|  | 
 |