X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=daklib%2Fformats.py;fp=daklib%2Fformats.py;h=e8ab1d77d205f85db14ee80ea2cd5173e7ce8b3f;hb=8c266683b16ad4f1ddcf2cc48cc7931ac007af59;hp=0000000000000000000000000000000000000000;hpb=1ef1804c272cf73da57a3e2d1cbf6c7610207ee9;p=dak.git diff --git a/daklib/formats.py b/daklib/formats.py new file mode 100644 index 00000000..e8ab1d77 --- /dev/null +++ b/daklib/formats.py @@ -0,0 +1,32 @@ +from regexes import re_verwithext +from dak_exceptions import UnknownFormatError + +def parse_format(txt): + """ + Parse a .changes Format string into a tuple representation for easy + comparison. + + >>> parse_format('1.0') + (1, 0) + >>> parse_format('8.4 (hardy)') + (8, 4, 'hardy') + + If the format doesn't match these forms, raises UnknownFormatError. + """ + + format = re_verwithext.search(txt) + + if format is None: + raise UnknownFormatError, txt + + format = format.groups() + + if format[1] is None: + format = int(float(format[0])), 0, format[2] + else: + format = int(format[0]), int(format[1]), format[2] + + if format[2] is None: + format = format[:2] + + return format