| 
									
										
										
										
											2010-01-14 10:10:13 -05:00
										 |  |  | ! Copyright (C) 2009, 2010 Slava Pestov. | 
					
						
							| 
									
										
										
										
											2009-01-26 03:21:28 -05:00
										 |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2009-04-30 21:03:52 -04:00
										 |  |  | USING: kernel sequences fry math.order splitting ;
 | 
					
						
							| 
									
										
										
										
											2009-01-26 03:21:28 -05:00
										 |  |  | IN: strings.tables | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <PRIVATE
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-04-30 21:03:52 -04:00
										 |  |  | : map-last ( seq quot -- seq )
 | 
					
						
							| 
									
										
										
										
											2010-01-14 10:10:13 -05:00
										 |  |  |     [ dup length iota <reversed> ] dip '[ 0 = @ ] 2map ; inline
 | 
					
						
							| 
									
										
										
										
											2009-04-30 21:03:52 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | : max-length ( seq -- n )
 | 
					
						
							|  |  |  |     [ length ] [ max ] map-reduce ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-02-02 05:48:30 -05:00
										 |  |  | : format-row ( seq -- seq )
 | 
					
						
							|  |  |  |     dup max-length
 | 
					
						
							|  |  |  |     '[ _ "" pad-tail ] map ;
 | 
					
						
							| 
									
										
										
										
											2009-04-30 21:03:52 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-26 03:21:28 -05:00
										 |  |  | : format-column ( seq ? -- seq )
 | 
					
						
							|  |  |  |     [ | 
					
						
							| 
									
										
										
										
											2009-04-30 21:03:52 -04:00
										 |  |  |         dup max-length
 | 
					
						
							| 
									
										
										
										
											2009-01-30 04:37:01 -05:00
										 |  |  |         '[ _ CHAR: \s pad-tail ] map
 | 
					
						
							| 
									
										
										
										
											2009-01-26 03:21:28 -05:00
										 |  |  |     ] unless ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PRIVATE>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : format-table ( table -- seq )
 | 
					
						
							| 
									
										
										
										
											2010-02-02 05:48:30 -05:00
										 |  |  |     [ [ string-lines ] map format-row flip ] map concat
 | 
					
						
							| 
									
										
										
										
											2009-04-30 21:03:52 -04:00
										 |  |  |     flip [ format-column ] map-last flip [ " " join ] map ;
 |