Example #1
0
File: arrow.py Project: vltr/arrow
    def humanize(self, other=None, locale='en'):

        if other is None:
            utc = datetime.utcnow().replace(tzinfo=dateutil_tz.tzutc())
            dt = utc.astimezone(self._datetime.tzinfo)

        elif isinstance(other, Arrow):
            dt = other._datetime

        elif isinstance(other, datetime):
            if other.tzinfo is None:
                dt = other.replace(tzinfo=self._datetime.tzinfo)
            else:
                dt = other.astimezone(self._datetime.tzinfo)

        else:
            raise TypeError()

        act_locale = locales.get_locale_by_name(locale)

        delta = int(get_total_seconds(self._datetime - dt))
        past = delta < 0
        delta = abs(delta)

        if delta < 10:
            return act_locale.format_humanize(0, 'now', past)

        if delta < 45:
            return act_locale.format_humanize(0, 'seconds', past)

        elif delta < 90:
            return act_locale.format_humanize(0, 'minute', past)
        elif delta < 2700:
            minutes = int(max(delta / 60, 2))
            return act_locale.format_humanize(minutes, 'minutes', past)

        elif delta < 5400:
            return act_locale.format_humanize(0, 'hour', past)
        elif delta < 79200:
            hours = int(max(delta / 3600, 2))
            return act_locale.format_humanize(hours, 'hours', past)

        elif delta < 129600:
            return act_locale.format_humanize(0, 'day', past)
        elif delta < 2160000:
            days = int(max(delta / 86400, 2))
            return act_locale.format_humanize(days, 'days', past)

        elif delta < 3888000:
            return act_locale.format_humanize(0, 'month', past)
        elif delta < 29808000:
            months = max(abs(dt.month - self._datetime.month), 2)
            return act_locale.format_humanize(months, 'months', past)

        elif delta < 47260800:
            return act_locale.format_humanize(0, 'year', past)
        else:
            years = int(max(delta / 31536000, 2))
            return act_locale.format_humanize(years, 'years', past)
Example #2
0
    def humanize(self, other=None, locale='en'):

        if other is None:
            utc = datetime.utcnow().replace(tzinfo=dateutil_tz.tzutc())
            dt = utc.astimezone(self._datetime.tzinfo)

        elif isinstance(other, Arrow):
            dt = other._datetime

        elif isinstance(other, datetime):
            if other.tzinfo is None:
                dt = other.replace(tzinfo=self._datetime.tzinfo)
            else:
                dt = other.astimezone(self._datetime.tzinfo)

        else:
            raise TypeError()

        act_locale = locales.get_locale_by_name(locale)

        delta = int(get_total_seconds(self._datetime - dt))
        past = delta < 0
        delta = abs(delta)

        if delta < 10:
            return act_locale.format_humanize(0, 'now', past)

        if delta < 45:
            return act_locale.format_humanize(0, 'seconds', past)

        elif delta < 90:
            return act_locale.format_humanize(0, 'minute', past)
        elif delta < 2700:
            minutes = int(max(delta / 60, 2))
            return act_locale.format_humanize(minutes, 'minutes', past)

        elif delta < 5400:
            return act_locale.format_humanize(0, 'hour', past)
        elif delta < 79200:
            hours = int(max(delta / 3600, 2))
            return act_locale.format_humanize(hours, 'hours', past)

        elif delta < 129600:
            return act_locale.format_humanize(0, 'day', past)
        elif delta < 2160000:
            days = int(max(delta / 86400, 2))
            return act_locale.format_humanize(days, 'days', past)

        elif delta < 3888000:
            return act_locale.format_humanize(0, 'month', past)
        elif delta < 29808000:
            months = max(abs(dt.month - self._datetime.month), 2)
            return act_locale.format_humanize(months, 'months', past)

        elif delta < 47260800:
            return act_locale.format_humanize(0, 'year', past)
        else:
            years = int(max(delta / 31536000, 2))
            return act_locale.format_humanize(years, 'years', past)
Example #3
0
    def test_plurals(self):

        plurals = ["матрешка", "матрешки", "матрешек"]
        cases = {
            0: plurals[2],
            1: plurals[0],
            2: plurals[1],
            4: plurals[1],
            5: plurals[2],
            21: plurals[0],
            22: plurals[1],
            25: plurals[2],
        }

        rus = locales.get_locale_by_name("ru")

        for num, exp_pl in cases.items():
            assertEqual(rus._chose_plural(num, plurals), exp_pl)
Example #4
0
    def test_plurals(self):

        plurals = ['матрешка', 'матрешки', 'матрешек']
        cases = {
            0: plurals[2],
            1: plurals[0],
            2: plurals[1],
            4: plurals[1],
            5: plurals[2],
            21: plurals[0],
            22: plurals[1],
            25: plurals[2],
        }

        rus = locales.get_locale_by_name('ru')

        for num, exp_pl in cases.items():
            assertEqual(rus._chose_plural(num, plurals), exp_pl)