Ananke-Template

 view release on metacpan or  search on metacpan

Template.pm  view on Meta::CPAN

#!/usr/bin/perl

package Ananke::Template;
use strict;

our $VERSION = '1.4'; 
my @my;

# Processo para facilitar o print do template
sub view_template {
	my ($template_dir,$template_file,$vars,$to_file) = @_;
	my $return;

	my $template = new Ananke::Template($template_dir);
	$return = $template->process($template_file,$vars,$to_file);

	return $return if ($to_file == 1);

	undef $template_dir; undef $template_file; undef $vars;
	undef $template; undef $to_file;
}

# Inicia modulo
sub new {
	my($self,$templ_dir,$to_file) = @_;

	# Grava dados
	bless {
		'TEMPL_DIR' => $templ_dir,
	}, $self;
}

# Processa página
sub process {
	my($self,$file,$vars,$to_file) = @_;
	my($fdata,$output,$my,$return);
	$self->{TEMPL_FILE} = $file;
	
	# Retorna em var, sprintf
	if ($to_file == 1) {
		$self->{TO_RETURN} = 1;
		undef $to_file;
	}
	
	$self->{TO_FILE} = $to_file;
	@my = ();

	$fdata = $self->load();
	$output = $self->parse($fdata,$vars);

	#$my = "my \$return;\n";
	
	foreach (@my) {
		$my .=  $_->{value};
	}

	$output = $my.$output;
	$return = eval $output;
	#print $output."\n";

	print $@ if ($@);

	return $return if ($self->{TO_RETURN});

	#open (FH,">/tmp/filexx");
	#syswrite(FH,$output);
	#close(FH);
}

# Trata arquivo
sub parse {
	my($self,$fdata,$vars) = @_;
	my(@t,$ndata,$output);
	my $outype;
	
	if ($self->{TO_FILE}) {
		$output .= "open(OUTFILE,\">".$self->{TO_FILE}."\");";
		$outype = "OUTFILE";
	} else {
		$outype = "STDOUT";
	}

	# Transfere dados para vars
	foreach (keys %{$vars}) {
		push(@my,{
			var	=> "\$T$_",
			value => "my \$T$_ = \$vars->{$_};\n"
		});



( run in 0.539 second using v1.01-cache-2.11-cpan-5b529ec07f3 )