~thumper/creoleparser/trunk

« back to all changes in this revision

Viewing changes to creoleparser/elements.py

  • Committer: stephen.h.day
  • Date: 2010-10-10 15:36:50 UTC
  • Revision ID: svn-v4:a60eed84-fc3d-0410-a09c-0d1a7a6707c9:trunk:226
external_links_class option added to create_dialect

Show diffs side-by-side

added added

removed removed

Lines of Context:
345
345
                url = urlparse.urljoin(base_url, url)
346
346
        elif self.urllink_regexp.match(body):
347
347
            urllink_mo = self.urllink_regexp.match(body)
348
 
            link_type = 'url'
 
348
            link_type = 'external'
349
349
            if sanitizer.is_safe_uri(urllink_mo.group(1)):
350
350
                url = urllink_mo.group(1)
351
351
            else:
382
382
 
383
383
    """Finds and builds internal, external, and interwiki links.
384
384
 
385
 
    >>> link = AnchorElement('a',('[[',']]'),'|',
 
385
    >>> link = AnchorElement('a',('[[',']]'),delimiter='|',
386
386
    ... interwiki_delimiter=':', 
387
387
    ... base_urls=dict(somewiki='http://somewiki.org/',
388
388
    ...                bigwiki='http://bigwiki.net/'),
389
389
    ... links_funcs={},default_space_char='-',
390
390
    ... space_chars={'bigwiki':' '},base_url='http://somewiki.org/',
391
 
    ... space_char='_',class_func=None,path_func=None)
 
391
    ... space_char='_',class_func=None,path_func=None,external_links_class=None)
392
392
    
393
393
    >>> mo = link.regexp.search("[[http://www.google.com| here]]")
394
394
    >>> link._build(mo,{},None).generate().render()
407
407
    '<a href="http://somewiki.org/Home_Page">Home</a>'
408
408
    
409
409
    """
410
 
    
411
410
 
412
 
    def __init__(self, *args, **kw_args):
413
 
        super(AnchorElement,self).__init__(*args, **kw_args)    
 
411
    def __init__(self, tag, token, external_links_class, *args, **kw_args):
 
412
        super(AnchorElement,self).__init__(tag, token, *args, **kw_args)
 
413
        self.external_links_class = external_links_class
414
414
 
415
415
    def emit(self,element_store, environ,link_type,body,url,the_class, alias=None):
416
416
        if alias:
417
417
            alias = fragmentize(alias,self.child_elements,element_store, environ)
418
418
        else:
419
419
            alias = body.strip()
 
420
        if link_type == 'external':
 
421
            the_class = self.external_links_class
420
422
        return bldr.tag.__getattr__(self.tag)(alias,
421
423
                                              href=url,
422
424
                                              class_=the_class)
447
449
 
448
450
    def emit(self,element_store, environ,link_type,body,url,the_class, alt=None):
449
451
 
450
 
        if self.disable_external and link_type == 'url':
 
452
        if self.disable_external and link_type == 'external':
451
453
            return bldr.tag.span('External images are disabled', class_='external_image')
452
454
 
453
455
        if alt is None:
454
 
            if link_type == 'url':
 
456
            if link_type == 'external':
455
457
                alt = urlparse.urlsplit(url).path.split('/')[-1]
456
458
            else:
457
459
                alt = body.strip()