| 
									
										
										
										
											2011-10-11 20:56:28 -04:00
										 |  |  | ! Copyright (C) 2011 Doug Coleman. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							|  |  |  | USING: combinators.short-circuit kernel math math.order | 
					
						
							|  |  |  | sequences ;
 | 
					
						
							|  |  |  | IN: progress-bars | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ERROR: invalid-percent x ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : check-percent ( x -- x )
 | 
					
						
							| 
									
										
										
										
											2015-08-13 19:13:05 -04:00
										 |  |  |     dup 0 1 between? [ invalid-percent ] unless ;
 | 
					
						
							| 
									
										
										
										
											2011-10-11 20:56:28 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ERROR: invalid-length x ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : check-length ( x -- x )
 | 
					
						
							| 
									
										
										
										
											2015-08-13 19:13:05 -04:00
										 |  |  |     dup { [ 0 > ] [ integer? ] } 1&& [ invalid-length ] unless ;
 | 
					
						
							| 
									
										
										
										
											2011-10-11 20:56:28 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : (make-progress-bar) ( percent len completed-ch pending-ch -- string )
 | 
					
						
							|  |  |  |     [ [ * >integer ] keep over - ] 2dip
 | 
					
						
							|  |  |  |     [ <repetition> ] bi-curry@ bi* "" append-as ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : make-progress-bar ( percent length -- string )
 | 
					
						
							|  |  |  |     [ check-percent ] [ check-length ] bi*
 | 
					
						
							|  |  |  |     CHAR: = CHAR: - (make-progress-bar) ;
 |