| ! --------------------------------------------------------------------------- | |
| ! printf("string", values...) ! print formatted | |
| ! | |
| ! printf("The %o jumped over the %s %n times.", objectCow, "moon", 5) | |
| ! printf("The user entered the '%c' key.", ch) | |
| ! printf("%#Please pass the %o,%# said the %o.", objectSalt, objectElf) !double quotes | |
| ! printf("Note the <b>warning</b>!") ! bold (or italics or underline) | |
| ! | |
| ! regular text printchar text in primary string | |
| ! %c character printchar character | |
| ! %d decimal number print number decimal integer | |
| ! %h hexadecimal number print hex word in hex | |
| ! %o object print object.name object name | |
| ! %s string print string dictionary entry | |
| ! html: | |
| ! %# double-quote printchar '"' double-quote (open) | |
| ! %% '%' printchar percent character | |
| ! %; no newline at end no newline override default newline | |
| ! %n newline print newline overt newline at position | |
| ! <b> font bold Font() set bold font | |
| ! </b> font bold off Font() set bold font off | |
| ! <i> font italics Font() set italics font | |
| ! </i> font italics off Font() set italics font off | |
| ! <u> font underline Font() set underline font | |
| ! </u> font underline off Font() set underline font off | |
| ! | |
| ! Notes: a newline is printed at the end of the line, unless "%:" is in the line. | |
| ! Values %c %d %h %o %s should be matched by a value in the matching position. | |
| ! 0 to 9 %-values (with matching operands) are handled. | |
| ! More than 9 %-values will result in default values of zero. | |
| ! Items %# %% %; %n <b> <i> <u> </b> </i> </u> do not match operands. | |
| array printf_array[10] ! work array | |
| !---------------------------------------------------------------------------- | |
| routine printf(str, v1, v2, v3, v4, v5, v6, v7, v8, v9) | |
| { local c, i, k, lens, n, nl | |
| ! put the operands in the work array: | |
| printf_array[1] = v1 | |
| printf_array[2] = v2 | |
| printf_array[3] = v3 | |
| printf_array[4] = v4 | |
| printf_array[5] = v5 | |
| printf_array[6] = v6 | |
| printf_array[7] = v7 | |
| printf_array[8] = v8 | |
| printf_array[9] = v9 | |
| k=1 ! point to the first operand | |
| lens = string(_temp_string, str, 255) ! convert base text to a work string | |
| for (i=0 ; i<lens; ) ! for each character of the primary string | |
| { c = _temp_string[i++] ! get the next character | |
| if c='%' ! if current byte is '%' | |
| { c = _temp_string[i++] ! get the following character (format code) | |
| select c ! per format character: | |
| case '%': printchar '%' ! print a literal '%' | |
| case '#': printchar '"' ! print a double-quote | |
| case 'd': print number printf_array[k++]; ! print a decimal number | |
| case 'h': print hex printf_array[k++]; ! print a hexadecimal number | |
| case 'n': print newline ! print a line break | |
| case 'o': print printf_array[k++].name; ! print an object name | |
| case ';': nl=true ! set no-newline flag | |
| case 'c' | |
| { n=printf_array[k++] ! print a character | |
| if n>=32 and n<=126: printchar(n) | |
| else: print number n; | |
| } | |
| case 's' | |
| { print printf_array[k++]; ! print the inner-string | |
| } | |
| case else ' %-escape char not recognized | |
| { printchar '%' ! so just print '%' and char | |
| printchar c | |
| } | |
| ! end select | |
| if k>10: "\n<ERROR: printf() too many operands (max is 9)" | |
| } | |
| elseif c='<' ! if current byte is '<' ! check for HTML | |
| { if _temp_string[i]='b' and _temp_string[i+1]='>' | |
| { Font(BOLD_ON) | |
| i=i+2 | |
| } | |
| elseif _temp_string[i]='i' and _temp_string[i+1]='>' | |
| { Font(ITALIC_ON) | |
| i=i+2 | |
| } | |
| elseif _temp_string[i]='u' and _temp_string[i+1]='>' | |
| { Font(UNDERLINE_ON) | |
| i=i+2 | |
| } | |
| elseif _temp_string[i]='/' and _temp_string[i+1]='b' and _temp_string[i+2]='>' | |
| { Font(BOLD_OFF) | |
| i=i+3 | |
| } | |
| elseif _temp_string[i]='/' and _temp_string[i+1]='i' and _temp_string[i+2]='>' | |
| { Font(ITALIC_OFF) | |
| i=i+3 | |
| } | |
| elseif _temp_string[i]='/' and _temp_string[i+1]='u' and _temp_string[i+2]='>' | |
| { Font(UNDERLINE_OFF) | |
| i=i+3 | |
| } | |
| else ! got a '<', but it wasn't a proper font-html sequence | |
| { printchar c ! so just print the '<' | |
| } | |
| } | |
| else ! if the current byte is neither '%' nor '<' | |
| printchar c ! just print it | |
| } | |
| if nl=false: print newline ! print line break | |
| } | |
Xet Storage Details
- Size:
- 4.21 kB
- Xet hash:
- 8bcc258d5d87394c2da988f20594d7ac33f3fadc78b7e51bf5740c462aae8bf1
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.