Your IP : 216.73.216.213
��]
� @ s� d Z d Z d Z d Z d Z d d l Z Gd d � d e � Z Gd d
� d
e � Z Gd d � d e � Z Gd
d � d e � Z
d; Z d) d* � Z e j
d+ e j � Z d, d- � Z d S)<z"Convert to and from Roman numeralsz&Mark Pilgrim (f8dy@diveintopython.org)z1.4z
8 August 2001ag Copyright (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
� Nc @ s e Z d Z d S)�
RomanErrorN)�__name__�
__module__�__qualname__� r r �E/opt/alt/python35/lib/python3.5/site-packages/docutils/utils/roman.pyr s r c @ s e Z d Z d S)�OutOfRangeErrorN)r r r r r r r r s r c @ s e Z d Z d S)�NotIntegerErrorN)r r r r r r r r s r c @ s e Z d Z d S)�InvalidRomanNumeralErrorN)r r r r r r r r
s r
�M�� �CM� �D�� �CD� �C�d �XC�Z �L�2 �XL�( �X�
�IX� �V� �IV� �I� c C s� d | k o d k n s( t d � � t | � | k rF t d � � d } x; t D]3 \ } } x$ | | k r� | | 7} | | 8} qb WqS W| S)z convert integer to Roman numeralr i� z%number out of range (must be 1..4999)zdecimals can not be converted� )r �intr �romanNumeralMap)�n�result�numeral�integerr r r �toRoman( s
r, a8
^ # 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
c C s� | s t d � � t j | � s1 t d | � � d } d } xU t D]M \ } } x>