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 = '<BTS:' + cat + ':' + bts_num + '>' return full_text else: raise Exception("Wrong argument.")