четверг, 22 сентября 2011 г.

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

В некоторых случаях `distance_of_time_in_words` возвращает строку, которая плохо подходит по смыслу в контекст. Например, эта функция выглядит естественно для того, чтобы сообщить, что какой-то объект datetime был изменен или должен быть изменен:

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

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

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

Предлагаемый подход позволяет просто отнаследоваться от класса DistanceCounter и переопределить `format_result_str`, например, так.

class DistanceCounter(dt.DistanceCounter):
def format_result_str(self, in_future, result_str):
suffix = in_future and u'позже' or u'раньше'
return u'%s %s' % (result_str, suffix)


Обратная совместимость полностью сохраняется.


Коммит в https://github.com/satels/pytils Update: Коммит похоже заберет автор pytils к себе в репозиторий

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

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