Then it would just be a simple regular expression:

> def repl(m):

    issues = re.split('\,|\s', m.group(1))

    return ", ".join("<a href='
> http://code.google.com/p/chromium/issues/detail?id=%s'>%s</a>" % (s, s)
> for s in issues)


> if __name__ == '__main__':

    description = "\nBUG=1,2, 3,4"

    description = re.sub("\nBUG=(\d+[\,\s?\d+]*)", repl, description)

     print description


- Mohamed Mansour


On Wed, Sep 9, 2009 at 11:32 PM, Jeremy Orlow <[email protected]> wrote:

> Would be nice if it still handled http://crbug.com/ and crbug.com/ since
> people probably will continue using them for a while.
> Also split(', ') ONLY works for when you do 'blah, blah'.  Not 'blah,blah'.
>  Not 'blah blah'.  Or any other crazy things people might do.
>
> I didn't know that you could give re.sub a callback to format the replace
> text though.  That's cool and could probably make my code simpler.
>
> J
>
>
> On Thu, Sep 10, 2009 at 12:27 PM, Mohamed Mansour <[email protected]>wrote:
>
>> How about just this:
>> def repl(m):
>>     issues = m.group(1).split(', ')
>>     return ", ".join("<a href='
>> http://code.google.com/p/chromium/issues/detail?id=%s'>%s</a>" % (s, s)
>> for s in issues)
>>
>> if __name__ == '__main__':
>>     description = "\nBUG=2, 3"
>>     description = re.sub("\nBUG=(\d+[, \d+]*)", repl, description)
>>     print description
>>
>>
>> Works great!
>>
>> - Mohamed Mansour
>>
>>
>>
>> On Wed, Sep 9, 2009 at 11:25 PM, Jeremy Orlow <[email protected]>wrote:
>>
>>> I don't have a rietveld dev environment set up, so I wrote a quick script
>>> to test the general algorithm.  It's not as pythony as I'd like, but it
>>> seems to be fairly robust:
>>> #!/usr/bin/python
>>> import re
>>>
>>> description = """\
>>> Blah blah blah.
>>> Blaaahhhh
>>>
>>> TEST=none
>>> BUG=123,456, 798,0
>>> BUG=888
>>> BUG=none
>>>  BUG = none, 2349,2,asdf
>>> BUG = http://crbug.com/123
>>> BUG = crbug.com/234 crbug/82
>>> """
>>>
>>> LINK = "<a href='http://code.google.com/p/chromium/issues/detail?id=%s
>>> '>%s</a>"
>>> def rewrite_bug_numbers(string):
>>>   if ',' in string:
>>>     right, left = string.split(',', 1)
>>>     return rewrite_bug_numbers(right) + ',' + rewrite_bug_numbers(left)
>>>   if ' ' in string:
>>>     right, left = string.split(' ', 1)
>>>     return rewrite_bug_numbers(right) + ' ' + rewrite_bug_numbers(left)
>>>
>>>   # Base cases:
>>>   if string.isdigit():
>>>     return LINK % (string, string)
>>>   match = re.search(r'^(http://|)crbug.com/(\d+)', string)
>>>   if match:
>>>     return LINK % (match.group(2), string)
>>>   return string
>>>
>>> output = []
>>> for line in description.splitlines():
>>>   match = re.search(r'^(\s*BUG\s*=)(.*)$', line)
>>>   if match:
>>>     line = match.group(1) + rewrite_bug_numbers(match.group(2))
>>>   output.append(line)
>>> print "<br>\n".join(output)
>>>
>>>
>>>
>>> Prints out
>>>
>>> Blah blah blah.<br>
>>> Blaaahhhh<br>
>>> <br>
>>> TEST=none<br>
>>> BUG=<a 
>>> href='http://code.google.com/p/chromium/issues/detail?id=123'>123</a>,<a
>>> href='http://code.google.com/p/chromium/issues/detail?id=456'>456</a>,
>>> <a href='http://code.google.com/p/chromium/issues/detail?id=798'>798</a>,<a
>>> href='http://code.google.com/p/chromium/issues/detail?id=0'>0</a><br>
>>> BUG=<a href='http://code.google.com/p/chromium/issues/detail?id=888
>>> '>888</a><br>
>>> BUG=none<br>
>>>   BUG = none, <a href='
>>> http://code.google.com/p/chromium/issues/detail?id=2349'>2349</a>,<a
>>> href='http://code.google.com/p/chromium/issues/detail?id=2
>>> '>2</a>,asdf<br>
>>> BUG = <a href='http://code.google.com/p/chromium/issues/detail?id=123'>
>>> http://crbug.com/123</a><br>
>>> BUG = <a href='http://code.google.com/p/chromium/issues/detail?id=234'>
>>> crbug.com/234</a> crbug/82
>>>
>>>
>>> If we weren't concerned about preserving formatting, you could do it with
>>> replace and split:
>>>
>>> line = "1234, 23 , 2"
>>> bugs = line.replace(",", " ").split()
>>>
>>>
>>> But it's not toooo much more work to keep in all the formatting.
>>>
>>>
>>> On Thu, Sep 10, 2009 at 11:01 AM, John Abd-El-Malek 
>>> <[email protected]>wrote:
>>>
>>>> Thanks, glad you enjoy it :)
>>>> This was a side distraction to fix the annoying issue of having to
>>>> manually copying and pasting the bug ids.  It severely tested my regex-fu
>>>> and since the multiple bugs case should be rare, I'll hide behind the 
>>>> excuse
>>>> that if they're duplicates they should be marked as such and only end up
>>>> with one, and if they're different bugs there should be separate 
>>>> changelists
>>>> ;)  The rietveld change is at
>>>> http://code.google.com/p/rietveld/source/detail?r=455, if anyone sends
>>>> me a patch to make it work with multiple bug ids, I'd be happy to push it.
>>>>
>>>>
>>>> On Wed, Sep 9, 2009 at 6:15 PM, Mohamed Mansour <[email protected]>wrote:
>>>>
>>>>> Very nice, no longer I have to put crbug.com/#.  Whoever did that
>>>>> autolink, can you support multiple bugs as well? The format bugdroid uses 
>>>>> is
>>>>> BUG=1, 2, 3
>>>>> - Mohamed Mansour
>>>>>
>>>>>
>>>>>
>>>>> On Wed, Sep 9, 2009 at 8:58 PM, Paweł Hajdan Jr. <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> I just noticed that BUG=1234 lines are autolinked to the correct bug
>>>>>> when viewed in Rietveld (codereview.chromium.org). This is very
>>>>>> useful, thanks!
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>> >>>>
>>>>
>>>
>>
>

--~--~---------~--~----~------------~-------~--~----~
Chromium Developers mailing list: [email protected] 
View archives, change email options, or unsubscribe: 
    http://groups.google.com/group/chromium-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to