"""
Creates a link to search in trac for the given words, by building a link to Trac's inbuilt
search facility.

Examples:
    [[TracSearch(keyword)]]
    [[TracSearch(keyword,wiki)]]
    [[TracSearch(keyword1 keyword2,changeset,ticket)]]
"""


from StringIO import StringIO

def execute(hdf, args, env):
    default_include = ['wiki', 'changeset', 'ticket']
    buf = StringIO()

    if args:
    	args = args.split(',')
    	term = args[0]
    	if len(args) > 1:
    	    include = args[1:]
    	else:
    	    include = default_include

        objects = []
        if 'wiki' in include:
            objects.append('Wiki pages')
        if 'changeset' in include:
            objects.append('Changeset messages')
        if 'ticket' in include:
            objects.append('Tickets')

        object_list = ", ".join(objects)

        url = env.href.search(query=term, include=include)

        buf.write("<a href='%(url)s'>%(objects)s containing '%(term)s'</a>\n" %
            dict(objects=object_list, term=term, url=url))
    else:
        buf.write("<p style='font-weight:bold; color:red;'>[[Search()]] macro requires a search term</p>\n")

    return buf.getvalue()

