def img(*args, **kwargs): description = None if isinstance(args[0], basestring): description = args[0] func = args[1] args = args[2:] else: func = args[0] args = args[1:] if func.__doc__ is None: description = func.__name__ else: description = Html(func.__doc__.split('\n', 1)[0]) href = url(func, *args, **kwargs) return img_template % (href, description, description)
def link(*args, **kwargs): if not args: raise TypeError( 'link() function requires at least one positional argument') attrs = None last = args[-1] if isinstance(last, BoundMarkup): description = last() args = (description, ) + args[:-1] first = args[0] if hasattr(first, 'routes'): func = first args = args[1:] if func.__doc__ is None: description = func.__name__ else: description = Html(func.__doc__.split('\n', 1)[0]) elif len(args) > 1 and hasattr(args[1], 'routes'): description = tostring(first) func = args[1] args = args[2:] elif len(args) > 2 and hasattr(args[2], 'routes'): attrs = args[1] if isinstance(attrs, basestring): attrs = {'class': attrs} elif not hasattr(attrs, 'items'): raise TypeError('Invalid second argument of link() function: %r' % second) description = tostring(first) func = args[2] args = args[3:] elif isinstance(first, basestring): func = link_funcs.get(first) if func is not None: return func(*args[1:], **kwargs) if first.endswith('.css'): if kwargs: raise TypeError('Unexpected key arguments') return css_link(args) if first.endswith('.js'): if len(args) > 1: raise TypeError('Unexpected positional arguments') if kwargs: raise TypeError('Unexpected key arguments') return script_link(first) raise TypeError('Invalid arguments of link() function') href = url(func, *args, **kwargs) return htmljoin( [htmltag('a', attrs, href=href), description, Html('</a>')])
def link(*args, **kwargs): if not args: raise TypeError('link() function requires at least one positional argument') attrs = None last = args[-1] if isinstance(last, BoundMarkup): description = last() args = (description,) + args[:-1] first = args[0] if hasattr(first, 'routes'): func = first args = args[1:] if func.__doc__ is None: description = func.__name__ else: description = Html(func.__doc__.split('\n', 1)[0]) elif len(args) > 1 and hasattr(args[1], 'routes'): description = tostring(first) func = args[1] args = args[2:] elif len(args) > 2 and hasattr(args[2], 'routes'): attrs = args[1] if isinstance(attrs, basestring): attrs = {'class': attrs} elif not hasattr(attrs, 'items'): raise TypeError('Invalid second argument of link() function: %r' % second) description = tostring(first) func = args[2] args = args[3:] elif isinstance(first, basestring): func = link_funcs.get(first) if func is not None: return func(*args[1:], **kwargs) if first.endswith('.css'): if kwargs: raise TypeError('Unexpected key arguments') return css_link(args) if first.endswith('.js'): if len(args) > 1: raise TypeError('Unexpected positional arguments') if kwargs: raise TypeError('Unexpected key arguments') return script_link(first) raise TypeError('Invalid arguments of link() function') href = url(func, *args, **kwargs) return htmljoin([htmltag('a', attrs, href=href), description, Html('</a>')])