I have the following function in a module - this function performs a
Regex search and attempts to replace matches with a link (generated
with the A() helper). The regex and replacement is working correctly -
if I change the value of the replace variable to something other than
the A() helper, it works as I expect. Something with the A() helper is
causing the return to not have the link at all (just the innerHTML
from the link).

The module's function:

def link_wiki_tags(content, db, request):
        import re
        from gluon.html import A, URL
        pattern = re.compile('\[\[([\w\s:]+)\]\]')
        for match in pattern.findall(content):
                slug = slugify(match)
                if db(db.games.slug == slug).select():
                        replace = A(match, _href = URL(r = request, c = 
'games', f =
'view', args = slug), _title = match)
                elif db(db.people.slug == slug).select():
                        replace = A(match, _href = URL(r = request, c = 
'people', f =
'view', args = slug), _title = match)
                elif db(db.companies.slug == slug).select():
                        replace = A(match, _href = URL(r = request, c = 
'companies', f =
'view', args = slug), _title = match)
                else:
                        replace = match
                content = re.sub('\[\[' + match + '\]\]', replace, content)
        return content


How this module is called from the view:

{{= link_wiki_tags(person.content, db, request) }}


Sample Input:
[[John Carmack]] is a developer for [[Quake Live]].

Expected Output:
<a href="/shooterhero/people/view/john-carmack" title="John
Carmack">John Carmack</a> is a developer for <a href="/shooterhero/
games/view/quake-live" title="Quake Live">Quake Live</a>.

Actual Output:
John Carmack is a developer for Quake Live.


As I mentioned, if I change the replace lines within the conditional
checking for a database result, it will change the output as expected.
I have change this replace variable to a string, as well as the URL()
helper, both of which worked fine. In other words, I have narrowed
this issue down to the A() helper.


Any help in getting the module's function to return the intended
output would be appreciated. Is there some sort of filtering placed on
module function returns (something that would strip out tags).
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to