Introduce src dir.
[librarian.git] / librarian / util.py
diff --git a/librarian/util.py b/librarian/util.py
deleted file mode 100644 (file)
index c302084..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-# Functions to convert between integers and Roman numerals. Doctest examples included.
-# by Paul Winkler 
-# http://code.activestate.com/recipes/81611-roman-numerals/
-# PSFL (GPL compatible)
-from __future__ import print_function, unicode_literals
-
-import os
-
-
-def int_to_roman(input):
-    """
-    Convert an integer to Roman numerals.
-
-    Examples:
-    >>> int_to_roman(0)
-    Traceback (most recent call last):
-    ValueError: Argument must be between 1 and 3999
-
-    >>> int_to_roman(-1)
-    Traceback (most recent call last):
-    ValueError: Argument must be between 1 and 3999
-
-    >>> int_to_roman(1.5)  # doctest: +IGNORE_EXCEPTION_DETAIL
-    Traceback (most recent call last):
-    TypeError: expected integer, got <type 'float'>
-
-    >>> for i in range(1, 21): print(int_to_roman(i))
-    ...
-    I
-    II
-    III
-    IV
-    V
-    VI
-    VII
-    VIII
-    IX
-    X
-    XI
-    XII
-    XIII
-    XIV
-    XV
-    XVI
-    XVII
-    XVIII
-    XIX
-    XX
-    >>> print(int_to_roman(2000))
-    MM
-    >>> print(int_to_roman(1999))
-    MCMXCIX
-    """
-    if type(input) != type(1):
-        raise TypeError("expected integer, got %s" % type(input))
-    if not 0 < input < 4000:
-        raise ValueError("Argument must be between 1 and 3999")
-    ints = (1000, 900,  500, 400, 100,  90, 50,  40, 10,  9,    5,  4,    1)
-    nums = ('M',  'CM', 'D', 'CD','C', 'XC','L','XL','X','IX','V','IV','I')
-    result = ""
-    for i in range(len(ints)):
-        count = int(input / ints[i])
-        result += nums[i] * count
-        input -= ints[i] * count
-    return result
-
-def roman_to_int(input):
-    """
-    Convert a roman numeral to an integer.
-    
-    >>> r = list(range(1, 4000))
-    >>> nums = [int_to_roman(i) for i in r]
-    >>> ints = [roman_to_int(n) for n in nums]
-    >>> print(r == ints)
-    1
-
-    >>> roman_to_int('VVVIV')
-    Traceback (most recent call last):
-     ...
-    ValueError: input is not a valid roman numeral: VVVIV
-    >>> roman_to_int(1)  # doctest: +IGNORE_EXCEPTION_DETAIL
-    Traceback (most recent call last):
-     ...
-    TypeError: expected string, got <type 'int'>
-    >>> roman_to_int('a')
-    Traceback (most recent call last):
-     ...
-    ValueError: input is not a valid roman numeral: A
-    >>> roman_to_int('IL')
-    Traceback (most recent call last):
-     ...
-    ValueError: input is not a valid roman numeral: IL
-    """
-    if type(input) != type(""):
-        raise TypeError("expected string, got %s" % type(input))
-    input = input.upper()
-    nums = ['M', 'D', 'C', 'L', 'X', 'V', 'I']
-    ints = [1000, 500, 100, 50,  10,  5,    1]
-    places = []
-    for c in input:
-        if not c in nums:
-            raise ValueError("input is not a valid roman numeral: %s" % input)
-    for i in range(len(input)):
-        c = input[i]
-        value = ints[nums.index(c)]
-        # If the next place holds a larger number, this value is negative.
-        try:
-            nextvalue = ints[nums.index(input[i +1])]
-            if nextvalue > value:
-                value *= -1
-        except IndexError:
-            # there is no next place.
-            pass
-        places.append(value)
-    sum = 0
-    for n in places: sum += n
-    # Easiest test for validity...
-    if int_to_roman(sum) == input:
-        return sum
-    else:
-        raise ValueError('input is not a valid roman numeral: %s' % input)
-
-
-def makedirs(path):
-    if not os.path.isdir(path):
-        os.makedirs(path)