Управление форматом для сокращения длинных строк

#format #common-lisp

#форматирование #common-lisp

Вопрос:

Есть ли способ создать format-control, который оставит строки определенной небольшой длины такими, какие они есть, и сократит более длинные строки как:

 (defparameter *control*) ;; put proper value here
(defparameter *str* "Lorem ipsum dolor")
(format nil "~@?" *control* *str*) ;; -> "Lorem ipsum dolor"
(defparameter *str* "Lorem ipsum dolor sit amet, consectetur adipiscing elit")
(format nil "~@?" *control* *str*) ;; -> "Lorem ipsum...g elit"
  

Комментарии:

1. Вы должны изучить ~/name/ директиву. Это позволяет вызывать произвольную функцию name в элементе управления форматом.

2. Однако на этом этапе вызов format не требуется

3. Только если вы хотите встроить это в большее форматирование.

4. Существует библиотека (str:shorten <length> <string>) , которая при необходимости обрезает конец и добавляет многоточие.