[Openmcl-devel] Building tables with format

Hamilton Link hamlink at comcast.net
Wed Aug 18 03:56:04 UTC 2004


Wow, good question! I love format. Mind you I never write a format 
control string without CLTL2 handy...

After much searching, and deciding there was no straightforward way of 
doing as you yourself discovered, I revisited the pretty printing 
chapter of CLTL2. I think ~/.../ may do what you need. Look in section 
27.4 of CLTL2, and check this out:

? (defun chop (s arg &optional colonp atsignp &rest parameters)
   (print s)
   (print arg)
   (print colonp)
   (print atsignp)
   (print parameters)
   (let ((full-result (format nil "~a" arg)))
     (format s "~a" (subseq full-result 0 (min 10 (length 
full-result))))))
CHOP
? (format nil "~1,2,3:@/CHOP/" "This string is far, far too long!")
;; this was all my debugging output
#<STRING-OUTPUT-STREAM #x8155244E>
"This string is far, far too long!"
T
T
(1 2 3)
;; this was what was printed by the format command, using CHOP
"This strin"
?

And of course you could make chop take minlength, maxlength, and 
padchar as parameters and DWYM.

h

On Aug 17, 2004, at 10:06 AM, Camille Troillard wrote:

> Hello,
>
> I fear my question is a little bit off topic.
>
> I would like to output a table with fixed-width cells.  This means I 
> need to truncate string arguments in order to keep the cell width 
> constant.  FORMAT offers a way to add a padding, but there is not way 
> to truncate a string argument (I would have used an option to the ~A 
> or ~S directives).
>
> Is there any way to extend OpenMCL's FORMAT mechanism in order to do 
> just that?
>
>
> Thanks for your help,
> Camille
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel
>




More information about the Openmcl-devel mailing list