import re
from trac.wiki.macros import WikiMacroBase

class VineBTSMacro(WikiMacroBase):

    def expand_macro(self, formatter, name, content):
        if not content:
            return ''

        base_url = 'http://bts.vinelinux.org/'
        default_cat = u'VineLinux'

        cat = ''

        args = content.split(',')
        if len(args) == 0:
            raise Exception("No argument.")

        bts_num = args[0]

        num_re = re.compile(r'[1-9]\d*')
        cat_vl_re = re.compile(r'^VineLinux$', re.IGNORECASE)
        cat_wish_re = re.compile(r'^wishes$', re.IGNORECASE)

        try:
            if args[1]:
                arg1 = args[1].strip()
                if arg1.startswith('cat='):
                    user_cat = arg1.split('=', 1)[1]
                    user_cat = user_cat.strip()
                    if cat_vl_re.match(user_cat):
                        cat = u'VineLinux'
                    elif cat_wish_re.match(user_cat):
                        cat = u'wishes'
                    else:
                        cat = default_cat
                else:
                    cat = default_cat
        except:
            cat = default_cat

        if num_re.match(bts_num):

            full_text = '<a href="' + base_url + cat + '/' + bts_num + '">&lt;BTS:' + cat + ':' + bts_num + '&gt;</a>'
            return full_text
        else:
            raise Exception("Wrong argument.")





