воскресенье, 25 сентября 2011 г.

pytils, расширение возможностей distance_of_time_in_words

В блогах нашел очень полезное решение:
В некоторых случаях `distance_of_time_in_words` возвращает строку, которая плохо подходит по смыслу в контекст.
Например, хотелось бы:
- "Вылет задерживается на 2 часа 13 минут".
- "Вы приземлились в Екатеринбурге, переведите свои часы на 2 часа вперед".
- "Заявка будет выполнена на 2 часа 15 минут позже".

При использовании оригинальной функции мы получим:

- "Вылет задерживается на через 2 часа 13 минут".
- "Вы приземлились в Екатеринбурге, переведите свои часы на через 2 часа".
- "Заявка будет выполнена на через 2 часа 15 минут".
Предлагаемый подход позволяет просто отнаследоваться от класса DistanceCounter и переопределить `format_result_str`, например, так.
  1. class DistanceCounter(dt.DistanceCounter):
  2.     def format_result_str(self, in_future, result_str):
  3.     suffix = in_future and u'позже' or u'раньше'
  4.     return u'%s %s' % (result_str, suffix)
Обратная совместимость полностью сохраняется.

Коммит в https://github.com/satels/pytils
Спасибо автору блога «Опыт работы с Python»!

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

Отправить комментарий