GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Venus::Template(3) User Contributed Perl Documentation Venus::Template(3)

Venus::Template - Template Class

Template Class for Perl 5

  package main;
  use Venus::Template;
  my $template = Venus::Template->new(
    'From: <{{ email }}>',
  );
  # $template->render;
  # "From: <>"

This package provides a templating system, and methods for rendering templates using simple markup and minimal control structures. The default opening and closing markers, denoting a template token, block, or control structure, are "{{" and "}}". A token takes the form of "{{ foo }}" or "{{ foo.bar }}". A block takes the form of "{{ for foo.bar }}" where "foo.bar" represents any valid path, resolvable by "path" in Venus::Array or "path" in Venus::Hash, which returns an arrayref or Venus::Array object, and must be followed by "{{ end foo }}". Control structures take the form of "{{ if foo }}" or "{{ if not foo }}", may contain a nested "{{ else foo }}" control structure, and must be followed by "{{ end foo }}". Leading and trailing whitespace is automatically removed from all replacements.

This package has the following attributes:

  variables(HashRef)

This attribute is read-write, accepts "(HashRef)" values, is optional, and defaults to "{}".

This package inherits behaviors from:

Venus::Kind::Utility

This package integrates behaviors from:

Venus::Role::Accessible

Venus::Role::Buildable

Venus::Role::Explainable

Venus::Role::Valuable

This package provides the following methods:

  render(string $template, hashref $variables) (string)

The render method processes the template by replacing the tokens and control structurs with the appropriate replacements and returns the result. Note: The rendering process expects variables to be hashrefs and sets (arrayrefs) of hashrefs.

Since 0.01

render example 1
  # given: synopsis;
  my $result = $template->render;
  # "From: <>"
    
render example 2
  # given: synopsis;
  $template->value(
    'From: {{ if name }}{{ name }}{{ end name }} <{{ email }}>',
  );
  $template->variables({
    email => 'noreply@example.com',
  });
  my $result = $template->render;
  # "From:  <noreply@example.com>"
    
render example 3
  # given: synopsis;
  $template->value(
    'From: {{ if name }}{{ name }}{{ end name }} <{{ email }}>',
  );
  $template->variables({
    name => 'No-Reply',
    email => 'noreply@example.com',
  });
  my $result = $template->render;
  # "From: No-Reply <noreply@example.com>"
    
render example 4
  package main;
  use Venus::Template;
  my $template = Venus::Template->new(q(
    {{ for chat.messages }}
    {{ user.name }}: {{ message }}
    {{ end chat.messages }}
  ));
  $template->variables({
    chat => { messages => [
      { user => { name => 'user1' }, message => 'ready?' },
      { user => { name => 'user2' }, message => 'ready!' },
      { user => { name => 'user1' }, message => 'lets begin!' },
    ]}
  });
  my $result = $template->render;
  # user1: ready?
  # user2: ready!
  # user1: lets begin!
    
render example 5
  package main;
  use Venus::Template;
  my $template = Venus::Template->new(q(
    {{ for chat.messages }}
    {{ if user.legal }}
    {{ user.name }} [18+]: {{ message }}
    {{ else user.legal }}
    {{ user.name }} [-18]: {{ message }}
    {{ end user.legal }}
    {{ end chat.messages }}
  ));
  $template->variables({
    chat => { messages => [
      { user => { name => 'user1', legal => 1 }, message => 'ready?' },
      { user => { name => 'user2', legal => 0 }, message => 'ready!' },
      { user => { name => 'user1', legal => 1 }, message => 'lets begin!' },
    ]}
  });
  my $result = $template->render;
  # user1 [18+]: ready?
  # user2 [-18]: ready!
  # user1 [18+]: lets begin!
    
render example 6
  package main;
  use Venus::Template;
  my $template = Venus::Template->new(q(
    {{ for chat.messages }}
    {{ if user.admin }}@{{ end user.admin }}{{ user.name }}: {{ message }}
    {{ end chat.messages }}
  ));
  $template->variables({
    chat => { messages => [
      { user => { name => 'user1', admin => 1 }, message => 'ready?' },
      { user => { name => 'user2', admin => 0 }, message => 'ready!' },
      { user => { name => 'user1', admin => 1 }, message => 'lets begin!' },
    ]}
  });
  my $result = $template->render;
  # @user1: ready?
  # user2: ready!
  # @user1: lets begin!
    
render example 7
  package main;
  use Venus::Template;
  my $template = Venus::Template->new(q(
    {{ for chat.messages }}
    [{{ loop.place }}] {{ user.name }}: {{ message }}
    {{ end chat.messages }}
  ));
  $template->variables({
    chat => { messages => [
      { user => { name => 'user1' }, message => 'ready?' },
      { user => { name => 'user2' }, message => 'ready!' },
      { user => { name => 'user1' }, message => 'lets begin!' },
    ]}
  });
  my $result = $template->render;
  # [1] user1: ready?
  # [2] user2: ready!
  # [3] user1: lets begin!
    
render example 8
  package main;
  use Venus::Template;
  my $template = Venus::Template->new(q(
    {{ for chat.messages }}
    [{{ loop.index }}] {{ user.name }}: {{ message }}
    {{ end chat.messages }}
  ));
  $template->variables({
    chat => { messages => [
      { user => { name => 'user1' }, message => 'ready?' },
      { user => { name => 'user2' }, message => 'ready!' },
      { user => { name => 'user1' }, message => 'lets begin!' },
    ]}
  });
  my $result = $template->render;
  # [0] user1: ready?
  # [1] user2: ready!
  # [2] user1: lets begin!
    

This package overloads the following operators:

This package overloads the "" operator.

example 1

  # given: synopsis;
  my $result = "$template";
  # "From: <>"
    

example 2

  # given: synopsis;
  my $result = "$template, $template";
  # "From: <>, From: <>"
    
This package overloads the "~~" operator.

example 1

  # given: synopsis;
  my $result = $template ~~ 'From: <>';
  # 1
    

Awncorp, "awncorp@cpan.org"

Copyright (C) 2022, Awncorp, "awncorp@cpan.org".

This program is free software, you can redistribute it and/or modify it under the terms of the Apache license version 2.0.

2023-11-27 perl v5.40.2

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.