Skip to content

Commit

Permalink
dates: Add additional pattern for week day
Browse files Browse the repository at this point in the history
Added test cases and additional pattern for Weekday format
  • Loading branch information
sachinpali146 committed Feb 14, 2016
1 parent b7881ad commit 8aacd89
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 3 deletions.
11 changes: 8 additions & 3 deletions babel/dates.py
Original file line number Diff line number Diff line change
Expand Up @@ -263,12 +263,14 @@ def get_day_names(width='wide', context='format', locale=LC_TIME):
>>> get_day_names('wide', locale='en_US')[1]
u'Tuesday'
>>> get_day_names('short', locale='en_US')[1]
u'Tu'
>>> get_day_names('abbreviated', locale='es')[1]
u'mar.'
>>> get_day_names('narrow', context='stand-alone', locale='de_DE')[1]
u'D'
:param width: the width to use, one of "wide", "abbreviated", or "narrow"
:param width: the width to use, one of "wide", "abbreviated", "short" or "narrow"
:param context: the context, either "format" or "stand-alone"
:param locale: the `Locale` object, or a locale string
"""
Expand Down Expand Up @@ -1274,8 +1276,11 @@ def format_weekday(self, char, num):
return self.format(value % 7 + 1, num)
num = 3
weekday = self.value.weekday()
width = {3: 'abbreviated', 4: 'wide', 5: 'narrow'}[num]
context = {3: 'format', 4: 'format', 5: 'stand-alone'}[num]
width = {3: 'abbreviated', 4: 'wide', 5: 'narrow', 6: 'short'}[num]
if char == 'c':
context = 'stand-alone'
else:
context = 'format'
return get_day_names(width, context, self.locale)[weekday]

def format_day_of_year(self, num):
Expand Down
23 changes: 23 additions & 0 deletions tests/test_dates.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,28 @@ def test_local_day_of_week_standalone(self):
fmt = dates.DateTimeFormat(d, locale='bn_BD')
self.assertEqual('4', fmt['c']) # friday is first day of week

def test_pattern_day_of_week(self):
dt = datetime(2016,2,6)
fmt = dates.DateTimeFormat(dt, locale='en_US')
self.assertEqual('7', fmt['c'])
self.assertEqual('Sat', fmt['ccc'])
self.assertEqual('Saturday', fmt['cccc'])
self.assertEqual('S', fmt['ccccc'])
self.assertEqual('Sa', fmt['cccccc'])
self.assertEqual('7', fmt['e'])
self.assertEqual('07', fmt['ee'])
self.assertEqual('Sat', fmt['eee'])
self.assertEqual('Saturday', fmt['eeee'])
self.assertEqual('S', fmt['eeeee'])
self.assertEqual('Sa', fmt['eeeeee'])
self.assertEqual('Sat', fmt['E'])
self.assertEqual('Sat', fmt['EE'])
self.assertEqual('Sat', fmt['EEE'])
self.assertEqual('Saturday', fmt['EEEE'])
self.assertEqual('S', fmt['EEEEE'])
self.assertEqual('Sa', fmt['EEEEEE'])


def test_fractional_seconds(self):
t = time(15, 30, 12, 34567)
fmt = dates.DateTimeFormat(t, locale='en_US')
Expand Down Expand Up @@ -479,6 +501,7 @@ def test_get_period_names():

def test_get_day_names():
assert dates.get_day_names('wide', locale='en_US')[1] == u'Tuesday'
assert dates.get_day_names('short', locale='en_US')[1] == u'Tu'
assert dates.get_day_names('abbreviated', locale='es')[1] == u'mar.'
de = dates.get_day_names('narrow', context='stand-alone', locale='de_DE')
assert de[1] == u'D'
Expand Down

0 comments on commit 8aacd89

Please sign in to comment.