---
name: "Tenjin::Util"
section: "3pm"
platform: "linux"
package: "libtenjin-perl"
version: "1.000001-3"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Tenjin::Util"
---

# Tenjin::Util(3pm)

Utility methods for Tenjin.

## NAME

Tenjin::Util - Utility methods for Tenjin.

## SYNOPSIS

```
        # in your templates:
        # encode a URL
        [== encode_url('http://www.google.com/search?q=tenjin&ie=utf-8&oe=utf-8&aq=t') =]
        # returns http%3A//www.google.com/search%3Fq%3Dtenjin%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt
        # escape a string of lines of HTML code
        <?pl    my $string = '<h1>You & Me</h1>\n<h2>Me & You</h2>'; ?>
        [== text2html($string) =]
        # returns &lt;h1&gt;You &amp; Me&lt;/h1&gt;<br />\n&lt;h2&gt;Me &amp; You&lt;/h2&gt;
```

## DESCRIPTION

This module provides a few utility functions which can be used in your templates for your convenience. These include functions to (un)escape and (en/de)code URLs.

## METHODS

### expand\_tabs( $str, \[$tabwidth\] )

Receives a string that might contain tabs in it, and replaces those tabs with spaces, each tab with the number of spaces defined by `$tabwidth`, or, if `$tabwidth` was not passed, with 8 spaces.

### escape\_xml( $str )

Receives a string of XML (or (x)HTML) code and converts the characters \<\>&\\' to HTML entities. This is the method that is invoked when you use \[= `$expression` =\] in your templates.

### unescape\_xml( $str )

Receives a string of escaped XML (or (x)HTML) code (for example, a string that was escaped with the **escape\_xml()** function, and 'unescapes' all HTML entities back to their actual characters.

### encode\_url( $url )

Receives a URL and encodes it by escaping 'non-standard' characters.

### decode\_url( $url )

Does the opposite of **encode\_url()**.

### checked( $val )

Receives a value of some sort, and if it is a true value, returns the string ' checked="checked"' which can be appended to HTML checkboxes.

### selected( $val )

Receives a value of some sort, and if it is a true value, returns the string ' selected="selected"' which can be used in an option in an HTML select box.

### disabled( $val )

Receives a value of some sort, and if it is a true value, returns the string ' disabled="disabled"' which can be used in an HTML input.

### nl2br( $text )

Receives a string of text containing lines delimited by newline characters (\\n, or possibly \\r\\n) and appends an HTML line break (\<br /\>) to every line (the newline character is left untouched).

### text2html( $text )

Receives a string of text containing lines delimited by newline characters, and possibly some XML (or (x)HTML) code, escapes that code with **escape\_xml()** and then appends an HTML line break to every line with **nl2br()**.

### tagattr( $name, $expr, \[$value\] )

### tagattrs( %attrs )

### new\_cycle( @items )

Creates a subroutine reference that can be used for cycling through the items of the `@items` array. So, for example, you can:

```
        my $cycle = new_cycle(qw/red green blue/);
        print $cycle->(); # prints 'red'
        print $cycle->(); # prints 'green'
        print $cycle->(); # prints 'blue'
        print $cycle->(); # prints 'red' again
```

## INTERNAL(?) METHODS

### \_p( $expression )

Wraps a Perl expression in a customized wrapper which will be processed by the Tenjin preprocessor and replaced with the standard \[== `$expression` =\].

### \_P( $expression )

Wrap a Perl expression in a customized wrapper which will be processed by the Tenjin preprocessor and replaced with the standard \[= `$expression` =\], which means the expression will be escaped.

### \_decode\_params( $s )

## SEE ALSO

Tenjin, Tenjin::Template, Tenjin::Context.

## AUTHOR, LICENSE AND COPYRIGHT

See Tenjin.
