Your IP : 216.73.216.213


Current Path : /proc/242857/root/opt/alt/python33/lib64/python3.3/Doc/tools/__pycache__/
Upload File :
Current File : //proc/242857/root/opt/alt/python33/lib64/python3.3/Doc/tools/__pycache__/roman.cpython-33.pyo

�
��f~
c@s�dZdZdZdZdZddlZGdd�de�ZGd	d
�d
e�ZGdd�de�Z	Gd
d�de�Z
d;Zd)d*�Zej
d+ej�Zd,d-�ZdS(<u"Convert to and from Roman numeralsu&Mark Pilgrim (f8dy@diveintopython.org)u1.4u
8 August 2001ugCopyright (c) 2001 Mark Pilgrim

This program is part of "Dive Into Python", a free Python tutorial for
experienced programmers.  Visit http://diveintopython.org/ for the
latest version.

This program is free software; you can redistribute it and/or modify
it under the terms of the Python 2.1.1 license, available at
http://www.python.org/2.1.1/license.html
iNcBs|EeZdZdS(u
RomanErrorN(u__name__u
__module__u__qualname__(u
__locals__((u4/opt/alt/python33/lib64/python3.3/Doc/tools/roman.pyu
RomanErrorsu
RomanErrorcBs|EeZdZdS(uOutOfRangeErrorN(u__name__u
__module__u__qualname__(u
__locals__((u4/opt/alt/python33/lib64/python3.3/Doc/tools/roman.pyuOutOfRangeErrorsuOutOfRangeErrorcBs|EeZdZdS(uNotIntegerErrorN(u__name__u
__module__u__qualname__(u
__locals__((u4/opt/alt/python33/lib64/python3.3/Doc/tools/roman.pyuNotIntegerErrorsuNotIntegerErrorcBs|EeZdZdS(uInvalidRomanNumeralErrorN(u__name__u
__module__u__qualname__(u
__locals__((u4/opt/alt/python33/lib64/python3.3/Doc/tools/roman.pyuInvalidRomanNumeralErrorsuInvalidRomanNumeralErroruMi�uCMi�uDi�uCDi�uCiduXCiZuLi2uXLi(uXi
uIXi	uViuIViuIicCs�d|kodkns+td��nt|�|krLtd��nd}x;tD]3\}}x$||kr�||7}||8}qhWqYW|S(u convert integer to Roman numeralii�u%number out of range (must be 1..4999)udecimals can not be convertedu(uOutOfRangeErroruintuNotIntegerErroruromanNumeralMap(unuresultunumeraluinteger((u4/opt/alt/python33/lib64/python3.3/Doc/tools/roman.pyutoRoman(s
utoRomanu8
    ^                   # beginning of string
    M{0,4}              # thousands - 0 to 4 M's
    (CM|CD|D?C{0,3})    # hundreds - 900 (CM), 400 (CD), 0-300 (0 to 3 C's),
                        #            or 500-800 (D, followed by 0 to 3 C's)
    (XC|XL|L?X{0,3})    # tens - 90 (XC), 40 (XL), 0-30 (0 to 3 X's),
                        #        or 50-80 (L, followed by 0 to 3 X's)
    (IX|IV|V?I{0,3})    # ones - 9 (IX), 4 (IV), 0-3 (0 to 3 I's),
                        #        or 5-8 (V, followed by 0 to 3 I's)
    $                   # end of string
    cCs�|std��ntj|�s7td|��nd}d}xUtD]M\}}x>|||t|��|kr�||7}|t|�7}qYWqJW|S(u convert Roman numeral to integeruInput can not be blankuInvalid Roman numeral: %si(uInvalidRomanNumeralErroruromanNumeralPatternusearchuromanNumeralMapulen(usuresultuindexunumeraluinteger((u4/opt/alt/python33/lib64/python3.3/Doc/tools/roman.pyu	fromRomanCs#
u	fromRoman(uMi�(uCMi�(uDi�(uCDi�(uCid(uXCiZ(uLi2(uXLi((uXi
(uIXi	(uVi(uIVi(uIi(
(uMi�(uCMi�(uDi�(uCDi�(uCid(uXCiZ(uLi2(uXLi((uXi
(uIXi	(uVi(uIVi(uIi(u__doc__u
__author__u__version__u__date__u
__copyright__ureu	Exceptionu
RomanErroruOutOfRangeErroruNotIntegerErroruInvalidRomanNumeralErroruromanNumeralMaputoRomanucompileuVERBOSEuromanNumeralPatternu	fromRoman(((u4/opt/alt/python33/lib64/python3.3/Doc/tools/roman.pyu<module>s4