from os.path import join

from django.conf.urls.defaults import url
from django.views.generic.simple import direct_to_template

def page(destination, prefix='',
        template_dir='', 
        name_prefix='',
        default_extension='.html'):
    """
    Returns an url() object for the given name using direc_to_template.
    For "name":
        >>> url(^name/$,
        ...    direct_to_template,
        ...    {'template': 'name.html'},
        ...    name='name')

        can be expressed as:
        >>> page('name')

    Usage:
        urlpatterns = patterns('views',
            url(r'Regexp/$', view, name='str'),
            url(r'Regexp2/$', view, name='str'),
            page('page_name'),
        )
    """
    return url(r'^%s/$' % join(prefix, destination),
                direct_to_template,
                {'template': '%s%s' % (join(template_dir, destination),
                    default_extension)}, 
                name='%s%s' % (name_prefix, destination))

def build(prefix, destination_list, 
        template_dir='', # Where to look for the templates
        name_prefix='', # Prefix to use to name URLs, cheap_page (the 'cheap_')
        default_extension='.html' # are the pages .html, .csv, .whatever?
        ):
    """
    Builds a patterns object to render all the pages
    in destination_list.

    Usage:
        urlpatterns = patterns('', ...)
        urlpatterns += build('Regexp', ['page1', 'page2', ...])
    """
    urlpatterns = []
    for destination in destination_list:
        urlpatterns.append(page(
            destination, prefix, template_dir, name_prefix,
            default_extension))
    return urlpatterns