| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | USING: help.syntax help.markup kernel prettyprint sequences strings ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | IN: formatting | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HELP: printf | 
					
						
							|  |  |  | { $values { "format-string" string } } | 
					
						
							| 
									
										
										
										
											2012-09-24 12:48:28 -04:00
										 |  |  | { $description | 
					
						
							|  |  |  |     "Writes the arguments (specified on the stack) formatted according to the format string."  | 
					
						
							| 
									
										
										
										
											2009-01-27 16:38:01 -05:00
										 |  |  |     $nl | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  |     "Several format specifications exist for handling arguments of different types, and " | 
					
						
							|  |  |  |     "specifying attributes for the result string, including such things as maximum width, " | 
					
						
							| 
									
										
										
										
											2012-09-24 12:48:28 -04:00
										 |  |  |     "padding, and decimals." | 
					
						
							|  |  |  |     $nl | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  |     { $table | 
					
						
							| 
									
										
										
										
											2012-09-24 12:48:28 -04:00
										 |  |  |         { { $snippet "%%" }          "Single %"                   "" } | 
					
						
							|  |  |  |         { { $snippet "%P.Ds" }       "String format"              "string" } | 
					
						
							|  |  |  |         { { $snippet "%P.DS" }       "String format uppercase"    "string" } | 
					
						
							|  |  |  |         { { $snippet "%c" }          "Character format"           "char" }  | 
					
						
							|  |  |  |         { { $snippet "%C" }          "Character format uppercase" "char" }  | 
					
						
							|  |  |  |         { { $snippet "%+Pd" }        "Integer format"             "fixnum" } | 
					
						
							|  |  |  |         { { $snippet "%+P.De" }      "Scientific notation"        "fixnum, float" } | 
					
						
							|  |  |  |         { { $snippet "%+P.DE" }      "Scientific notation"        "fixnum, float" } | 
					
						
							|  |  |  |         { { $snippet "%+P.Df" }      "Fixed format"               "fixnum, float" } | 
					
						
							|  |  |  |         { { $snippet "%+Px" }        "Hexadecimal"                "hex" } | 
					
						
							|  |  |  |         { { $snippet "%+PX" }        "Hexadecimal uppercase"      "hex" } | 
					
						
							|  |  |  |         { { $snippet "%[%?, %]" }    "Sequence format"            "sequence" } | 
					
						
							|  |  |  |         { { $snippet "%[%?: %? %]" } "Assocs format"              "assocs" } | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-01-27 16:38:01 -05:00
										 |  |  |     $nl | 
					
						
							| 
									
										
										
										
											2012-09-24 12:48:28 -04:00
										 |  |  |     "A plus sign (" { $snippet "+" } ") is used to optionally specify that the number should be " | 
					
						
							|  |  |  |     "formatted with a " { $snippet "+" } " preceeding it if positive." | 
					
						
							| 
									
										
										
										
											2009-01-27 16:38:01 -05:00
										 |  |  |     $nl | 
					
						
							| 
									
										
										
										
											2012-09-24 12:48:28 -04:00
										 |  |  |     "Padding (" { $snippet "P" } ") is used to optionally specify the minimum width of the result " | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  |     "string, the padding character, and the alignment.  By default, the padding " | 
					
						
							|  |  |  |     "character defaults to a space and the alignment defaults to right-aligned. " | 
					
						
							| 
									
										
										
										
											2012-09-24 12:48:28 -04:00
										 |  |  |     "For example:" | 
					
						
							|  |  |  |     $nl | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  |     { $list | 
					
						
							| 
									
										
										
										
											2012-09-24 12:48:28 -04:00
										 |  |  |         { { $snippet "%5s" } " formats a string padding with spaces up to 5 characters wide." } | 
					
						
							|  |  |  |         { { $snippet "%03d" } " formats an integer padding with zeros up to 3 characters wide." } | 
					
						
							|  |  |  |         { { $snippet "%'#5f" } " formats a float padding with " { $snippet "#" } " up to 3 characters wide." } | 
					
						
							|  |  |  |         { { $snippet "%-10d" } " formats an integer to 10 characters wide and left-aligns." } | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2009-01-27 16:38:01 -05:00
										 |  |  |     $nl | 
					
						
							| 
									
										
										
										
											2012-09-24 12:48:28 -04:00
										 |  |  |     "Digits (" { $snippet "D" } ") is used to optionally specify the maximum digits in the result " | 
					
						
							|  |  |  |     "string. For example:" | 
					
						
							|  |  |  |     $nl | 
					
						
							|  |  |  |     { $list | 
					
						
							|  |  |  |         { { $snippet "%.3s" } " formats a string to truncate at 3 characters (from the left)." } | 
					
						
							|  |  |  |         { { $snippet "%.10f" } " formats a float to pad-tail with zeros up to 10 digits beyond the decimal point." } | 
					
						
							|  |  |  |         { { $snippet "%.5E" } " formats a float into scientific notation with zeros up to 5 digits beyond the decimal point, but before the exponent." } | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2012-09-24 12:48:28 -04:00
										 |  |  | { $examples | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  |     { $example | 
					
						
							| 
									
										
										
										
											2008-12-15 18:08:46 -05:00
										 |  |  |         "USING: formatting ;" | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  |         "123 \"%05d\" printf" | 
					
						
							|  |  |  |         "00123" } | 
					
						
							|  |  |  |     { $example | 
					
						
							| 
									
										
										
										
											2008-12-15 18:08:46 -05:00
										 |  |  |         "USING: formatting ;" | 
					
						
							| 
									
										
										
										
											2011-11-23 21:49:33 -05:00
										 |  |  |         "0xff \"%04X\" printf" | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  |         "00FF" } | 
					
						
							|  |  |  |     { $example | 
					
						
							| 
									
										
										
										
											2008-12-15 18:08:46 -05:00
										 |  |  |         "USING: formatting ;" | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  |         "1.23456789 \"%.3f\" printf" | 
					
						
							|  |  |  |         "1.235" } | 
					
						
							|  |  |  |     { $example | 
					
						
							| 
									
										
										
										
											2008-12-15 18:08:46 -05:00
										 |  |  |         "USING: formatting ;" | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  |         "12 \"%'#4d\" printf" | 
					
						
							|  |  |  |         "##12" } | 
					
						
							|  |  |  |     { $example | 
					
						
							| 
									
										
										
										
											2008-12-15 18:08:46 -05:00
										 |  |  |         "USING: formatting ;" | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  |         "1234 \"%+d\" printf" | 
					
						
							|  |  |  |         "+1234" } | 
					
						
							| 
									
										
										
										
											2009-01-30 17:17:12 -05:00
										 |  |  |     { $example | 
					
						
							|  |  |  |         "USING: formatting ;" | 
					
						
							|  |  |  |         "{ 1 2 3 } \"%[%d, %]\" printf" | 
					
						
							|  |  |  |         "{ 1, 2, 3 }" } | 
					
						
							|  |  |  |     { $example | 
					
						
							|  |  |  |         "USING: formatting ;" | 
					
						
							|  |  |  |         "H{ { 1 2 } { 3 4 } } \"%[%d: %d %]\" printf" | 
					
						
							|  |  |  |         "{ 1:2, 3:4 }" } | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  | } ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HELP: sprintf | 
					
						
							|  |  |  | { $values { "format-string" string } { "result" string } } | 
					
						
							|  |  |  | { $description "Returns the arguments (specified on the stack) formatted according to the format string as a result string." }  | 
					
						
							|  |  |  | { $see-also printf } ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HELP: strftime | 
					
						
							|  |  |  | { $values { "format-string" string } } | 
					
						
							| 
									
										
										
										
											2012-09-24 12:48:28 -04:00
										 |  |  | { $description | 
					
						
							|  |  |  |     "Writes the timestamp (specified on the stack) formatted according to the format string." | 
					
						
							|  |  |  |     $nl | 
					
						
							|  |  |  |     "Different attributes of the timestamp can be retrieved using format specifications." | 
					
						
							| 
									
										
										
										
											2009-01-27 16:38:01 -05:00
										 |  |  |     $nl | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  |     { $table | 
					
						
							| 
									
										
										
										
											2012-09-24 12:48:28 -04:00
										 |  |  |         { { $snippet "%a" }    "Abbreviated weekday name." } | 
					
						
							|  |  |  |         { { $snippet "%A" }    "Full weekday name." } | 
					
						
							|  |  |  |         { { $snippet "%b" }    "Abbreviated month name." } | 
					
						
							|  |  |  |         { { $snippet "%B" }    "Full month name." } | 
					
						
							|  |  |  |         { { $snippet "%c" }    "Date and time representation." } | 
					
						
							|  |  |  |         { { $snippet "%d" }    "Day of the month as a decimal number [01,31]." } | 
					
						
							|  |  |  |         { { $snippet "%H" }    "Hour (24-hour clock) as a decimal number [00,23]." } | 
					
						
							|  |  |  |         { { $snippet "%I" }    "Hour (12-hour clock) as a decimal number [01,12]." } | 
					
						
							|  |  |  |         { { $snippet "%j" }    "Day of the year as a decimal number [001,366]." } | 
					
						
							|  |  |  |         { { $snippet "%m" }    "Month as a decimal number [01,12]." } | 
					
						
							|  |  |  |         { { $snippet "%M" }    "Minute as a decimal number [00,59]." } | 
					
						
							|  |  |  |         { { $snippet "%p" }    "Either AM or PM." } | 
					
						
							|  |  |  |         { { $snippet "%S" }    "Second as a decimal number [00,59]." } | 
					
						
							|  |  |  |         { { $snippet "%U" }    "Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]." } | 
					
						
							|  |  |  |         { { $snippet "%w" }    "Weekday as a decimal number [0(Sunday),6]." } | 
					
						
							|  |  |  |         { { $snippet "%W" }    "Week number of the year (Monday as the first day of the week) as a decimal number [00,53]." } | 
					
						
							|  |  |  |         { { $snippet "%x" }    "Date representation." } | 
					
						
							|  |  |  |         { { $snippet "%X" }    "Time representation." } | 
					
						
							|  |  |  |         { { $snippet "%y" }    "Year without century as a decimal number [00,99]." } | 
					
						
							|  |  |  |         { { $snippet "%Y" }    "Year with century as a decimal number." } | 
					
						
							|  |  |  |         { { $snippet "%Z" }    "Time zone name (no characters if no time zone exists)." } | 
					
						
							|  |  |  |         { { $snippet "%%" }    "A literal '%' character." } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | { $examples | 
					
						
							| 
									
										
										
										
											2008-12-15 22:44:48 -05:00
										 |  |  |     { $unchecked-example | 
					
						
							|  |  |  |         "USING: calendar formatting io ;" | 
					
						
							|  |  |  |         "now \"%c\" strftime print" | 
					
						
							| 
									
										
										
										
											2008-12-15 18:08:46 -05:00
										 |  |  |         "Mon Dec 15 14:40:43 2008" } | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  | } ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ARTICLE: "formatting" "Formatted printing" | 
					
						
							| 
									
										
										
										
											2009-01-27 16:38:01 -05:00
										 |  |  | "The " { $vocab-link "formatting" } " vocabulary is used for formatted printing." | 
					
						
							| 
									
										
										
										
											2009-10-01 15:56:36 -04:00
										 |  |  | { $subsections | 
					
						
							|  |  |  |     printf | 
					
						
							|  |  |  |     sprintf | 
					
						
							|  |  |  |     strftime | 
					
						
							|  |  |  | } ;
 | 
					
						
							| 
									
										
										
										
											2008-12-15 17:43:01 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | ABOUT: "formatting" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 |