# -*- coding: utf-8 -*-
r"""
>>> floatformat(7.7)
u'7.7'
>>> floatformat(7.0)
u'7'
>>> floatformat(0.7)
u'0.7'
>>> floatformat(0.07)
u'0.1'
>>> floatformat(0.007)
u'0.0'
>>> floatformat(0.0)
u'0'
>>> floatformat(7.7,3)
u'7.700'
>>> floatformat(6.000000,3)
u'6.000'
>>> floatformat(6.200000, 3)
u'6.200'
>>> floatformat(6.200000, -3)
u'6.200'
>>> floatformat(13.1031,-3)
u'13.103'
>>> floatformat(11.1197, -2)
u'11.12'
>>> floatformat(11.0000, -2)
u'11'
>>> floatformat(11.000001, -2)
u'11.00'
>>> floatformat(8.2798, 3)
u'8.280'
>>> floatformat(u'foo')
u''
>>> floatformat(13.1031, u'bar')
u'13.1031'
>>> floatformat(u'foo', u'bar')
u''
>>> floatformat(None)
u''
>>> addslashes(u'"double quotes" and \'single quotes\'')
u'\\"double quotes\\" and \\\'single quotes\\\''
>>> addslashes(ur'\ : backslashes, too')
u'\\\\ : backslashes, too'
>>> capfirst(u'hello world')
u'Hello world'
>>> escapejs(u'"double quotes" and \'single quotes\'')
u'\\"double quotes\\" and \\\'single quotes\\\''
>>> escapejs(ur'\ : backslashes, too')
u'\\\\ : backslashes, too'
>>> escapejs(u'and lots of whitespace: \r\n\t\v\f\b')
u'and lots of whitespace: \\r\\n\\t\\v\\f\\b'
>>> escapejs(ur'')
u' disallowed
tags', 'script img')
u'some html with alert("You smell") disallowed tags'
>>> striptags(u'some html with disallowed
tags')
u'some html with alert("You smell") disallowed tags'
>>> dictsort([{'age': 23, 'name': 'Barbara-Ann'},
... {'age': 63, 'name': 'Ra Ra Rasputin'},
... {'name': 'Jonny B Goode', 'age': 18}], 'age')
[{'age': 18, 'name': 'Jonny B Goode'}, {'age': 23, 'name': 'Barbara-Ann'}, {'age': 63, 'name': 'Ra Ra Rasputin'}]
>>> dictsortreversed([{'age': 23, 'name': 'Barbara-Ann'},
... {'age': 63, 'name': 'Ra Ra Rasputin'},
... {'name': 'Jonny B Goode', 'age': 18}], 'age')
[{'age': 63, 'name': 'Ra Ra Rasputin'}, {'age': 23, 'name': 'Barbara-Ann'}, {'age': 18, 'name': 'Jonny B Goode'}]
>>> first([0,1,2])
0
>>> first(u'')
u''
>>> first(u'test')
u't'
>>> join([0,1,2], u'glue')
u'0glue1glue2'
>>> length(u'1234')
4
>>> length([1,2,3,4])
4
>>> length_is([], 0)
True
>>> length_is([], 1)
False
>>> length_is('a', 1)
True
>>> length_is(u'a', 10)
False
>>> slice_(u'abcdefg', u'0')
u''
>>> slice_(u'abcdefg', u'1')
u'a'
>>> slice_(u'abcdefg', u'-1')
u'abcdef'
>>> slice_(u'abcdefg', u'1:2')
u'b'
>>> slice_(u'abcdefg', u'1:3')
u'bc'
>>> slice_(u'abcdefg', u'0::2')
u'aceg'
>>> unordered_list([u'item 1', u'item 2'])
u'\t
item 1\n\titem 2'
>>> unordered_list([u'item 1', [u'item 1.1']])
u'\titem 1\n\t\n\t'
>>> unordered_list([u'item 1', [u'item 1.1', u'item1.2'], u'item 2'])
u'\titem 1\n\t\n\t\t- item 1.1
\n\t\t- item1.2
\n\t
\n\t\n\titem 2'
>>> unordered_list([u'item 1', [u'item 1.1', [u'item 1.1.1', [u'item 1.1.1.1']]]])
u'\titem 1\n\t\n\t\t- item 1.1\n\t\t
\n\t\t\t- item 1.1.1\n\t\t\t
\n\t\t\t\t- item 1.1.1.1
\n\t\t\t
\n\t\t\t \n\t\t
\n\t\t \n\t
\n\t'
>>> unordered_list(['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']])
u'\tStates\n\t\n\t\t- Kansas\n\t\t
\n\t\t\t- Lawrence
\n\t\t\t- Topeka
\n\t\t
\n\t\t \n\t\t- Illinois
\n\t
\n\t'
# Old format for unordered lists should still work
>>> unordered_list([u'item 1', []])
u'\titem 1'
>>> unordered_list([u'item 1', [[u'item 1.1', []]]])
u'\titem 1\n\t\n\t'
>>> unordered_list([u'item 1', [[u'item 1.1', []], [u'item 1.2', []]]])
u'\titem 1\n\t\n\t\t- item 1.1
\n\t\t- item 1.2
\n\t
\n\t'
>>> unordered_list(['States', [['Kansas', [['Lawrence', []], ['Topeka', []]]], ['Illinois', []]]])
u'\tStates\n\t\n\t\t- Kansas\n\t\t
\n\t\t\t- Lawrence
\n\t\t\t- Topeka
\n\t\t
\n\t\t \n\t\t- Illinois
\n\t
\n\t'
>>> add(u'1', u'2')
3
>>> get_digit(123, 1)
3
>>> get_digit(123, 2)
2
>>> get_digit(123, 3)
1
>>> get_digit(123, 4)
0
>>> get_digit(123, 0)
123
>>> get_digit(u'xyz', 0)
u'xyz'
# real testing of date() is in dateformat.py
>>> date(datetime.datetime(2005, 12, 29), u"d F Y")
u'29 December 2005'
>>> date(datetime.datetime(2005, 12, 29), ur'jS o\f F')
u'29th of December'
# real testing of time() is done in dateformat.py
>>> time(datetime.time(13), u"h")
u'01'
>>> time(datetime.time(0), u"h")
u'12'
# real testing is done in timesince.py, where we can provide our own 'now'
>>> timesince(datetime.datetime.now() - datetime.timedelta(1))
u'1 day'
>>> default(u"val", u"default")
u'val'
>>> default(None, u"default")
u'default'
>>> default(u'', u"default")
u'default'
>>> default_if_none(u"val", u"default")
u'val'
>>> default_if_none(None, u"default")
u'default'
>>> default_if_none(u'', u"default")
u''
>>> divisibleby(4, 2)
True
>>> divisibleby(4, 3)
False
>>> yesno(True)
u'yes'
>>> yesno(False)
u'no'
>>> yesno(None)
u'maybe'
>>> yesno(True, u'certainly,get out of town,perhaps')
u'certainly'
>>> yesno(False, u'certainly,get out of town,perhaps')
u'get out of town'
>>> yesno(None, u'certainly,get out of town,perhaps')
u'perhaps'
>>> yesno(None, u'certainly,get out of town')
u'get out of town'
>>> filesizeformat(1023)
u'1023 bytes'
>>> filesizeformat(1024)
u'1.0 KB'
>>> filesizeformat(10*1024)
u'10.0 KB'
>>> filesizeformat(1024*1024-1)
u'1024.0 KB'
>>> filesizeformat(1024*1024)
u'1.0 MB'
>>> filesizeformat(1024*1024*50)
u'50.0 MB'
>>> filesizeformat(1024*1024*1024-1)
u'1024.0 MB'
>>> filesizeformat(1024*1024*1024)
u'1.0 GB'
>>> pluralize(1)
u''
>>> pluralize(0)
u's'
>>> pluralize(2)
u's'
>>> pluralize([1])
u''
>>> pluralize([])
u's'
>>> pluralize([1,2,3])
u's'
>>> pluralize(1,u'es')
u''
>>> pluralize(0,u'es')
u'es'
>>> pluralize(2,u'es')
u'es'
>>> pluralize(1,u'y,ies')
u'y'
>>> pluralize(0,u'y,ies')
u'ies'
>>> pluralize(2,u'y,ies')
u'ies'
>>> pluralize(0,u'y,ies,error')
u''
>>> phone2numeric(u'0800 flowers')
u'0800 3569377'
# Filters shouldn't break if passed non-strings
>>> addslashes(123)
u'123'
>>> linenumbers(123)
u'1. 123'
>>> lower(123)
u'123'
>>> make_list(123)
[u'1', u'2', u'3']
>>> slugify(123)
u'123'
>>> title(123)
u'123'
>>> truncatewords(123, 2)
u'123'
>>> upper(123)
u'123'
>>> urlencode(123)
u'123'
>>> urlize(123)
u'123'
>>> urlizetrunc(123, 1)
u'123'
>>> wordcount(123)
1
>>> wordwrap(123, 2)
u'123'
>>> ljust('123', 4)
u'123 '
>>> rjust('123', 4)
u' 123'
>>> center('123', 5)
u' 123 '
>>> center('123', 6)
u' 123 '
>>> cut(123, '2')
u'13'
>>> escape(123)
u'123'
>>> linebreaks(123)
u'123
'
>>> linebreaksbr(123)
u'123'
>>> removetags(123, 'a')
u'123'
>>> striptags(123)
u'123'
"""
from django.template.defaultfilters import *
import datetime
if __name__ == '__main__':
import doctest
doctest.testmod()