Hi Nathan,

One way to accomplish what you want is to write your own Template::Provider subclass. You'll need to override at least the _template_content($path) method and there you can implement the logic you need, like returning a (pre defined) content if $path does not exist.

my $provider = My::TT::Provider->new();
my $tt = Template->new({
    ENCODING       => "utf8",
    LOAD_TEMPLATES => [ $provider ],
});
$tt->process( ... );

See: http://www.template-toolkit.org/docs/modules/Template/Provider.html#section_SUBCLASSING

Hope this helps!

Best regards,
Lennart



On 01-05-17 07:58, Nathan Bailey wrote:
Hi all,
 More of a Template Toolkit question rather than Dancer per se, but is there a better way to load a file only if it exists?

From my Googling around, it appears the only approaches are (a) Try/Catch in TT or (b) include a full <%PERL%> call (which I'm guessing may be a little heavy to do on every page load).

I'd like to dynamically include a help file if it exists, otherwise provide a 'No help available for this page' message. Current code looks like this:
<% help_file = 'help' _ request.request_uri.remove('\?.*') _ '.tt' %>
<% TRY %>
   <% USE File('/full_unix_path/views/' _ help_file) %>
   <% INCLUDE $help_file %>
<% CATCH File %>
   '<% help_file %>' doesn't exist: <% error.info %>
<% END %>

I'm not keen on the fixed path and it seems overkill to have to try/catch if the file exists rather than just load it (and fail silently) or test if it exists and then load.

Do people have better patterns for managing inline help?

thanks,
Nathan


_______________________________________________
dancer-users mailing list
dancer-users@dancer.pm
http://lists.preshweb.co.uk/mailman/listinfo/dancer-users