The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

[%~

MACRO ref(var) BLOCK;
    var_ref = "$var";
    var_ref.match('^([A-Z]+)\\(0x[0-9a-f]+\\)$').0;
END;

MACRO load_scripts(scripts) BLOCK;
 scripts = scripts.unique;
    FOREACH script IN page.body.scripts;
        NEXT UNLESS script;
        script = script.match('^https?://|/') ?
                        script :
                        static('scripts/' _ script, undef, 1); ~%]
        <script type="text/javascript" src="[% script %]"></script>
    [%~
    END;
END;


# Wraps c.uri_for to point to static resources either inside the
# /root/static structure or explicit URIs.  Assumes 
MACRO static(res, versioned, query) BLOCK;
    uri_params = query || {};
    IF res.match('^https?://') || res.match('^/');
        res;
    ELSIF versioned && static_build;
        uri_params.ver = uri_params.ver || static_build;
        c.uri_for( static_root, res, uri_params );
    ELSE;
        c.uri_for( static_root, res );
    END;
END;

# Set up the default stash structure for the page
IF !page || !ref(page) == 'HASH';
    page = {};
END;
DEFAULT page.title  = c.config.blog.title || 'Grimlock::Web';
DEFAULT page.layout = 'default';
DEFAULT page.header = 'default';
DEFAULT page.nav    = 'default';
DEFAULT page.footer = 'default';
DEFAULT page.language = c.config.language || 'en';
DEFAULT page.head             = {};
DEFAULT page.head.stylesheets = [
  'http://yui.yahooapis.com/3.5.0pr2/build/cssfonts/fonts-min.css',
  static('css/screen.css'),
  static('css/nav_default.css')
];
DEFAULT page.head.scripts     = [ 
];
DEFAULT page.body             = {};
DEFAULT page.body.classes     = ['yui3-skin-sam'];
DEFAULT page.body.scripts     = [
 'http://yui.yahooapis.com/3.5.0pr2/build/yui/yui-min.js'
];
DEFAULT page.content_class    = 'content';

# Include global macros/vars/set up per implementation
TRY; PROCESS global.tt; CATCH file; END;

~%]