package App::QuoteCC::Output::Lua; BEGIN { $App::QuoteCC::Output::Lua::AUTHORITY = 'cpan:AVAR'; } BEGIN { $App::QuoteCC::Output::Lua::VERSION = '0.10'; } use 5.010; use strict; use warnings; use Moose; use Template; use Data::Section qw/ -setup /; use namespace::clean -except => [ qw/ meta merged_section_data section_data / ]; with qw/ App::QuoteCC::Role::Output /; has template => ( isa => 'Str', is => 'ro', lazy_build => 1, documentation => "The Template template to emit", ); sub _build_template { my ($self) = @_; my $template = $self->section_data( 'program' ); return $$template; } sub output { my ($self) = @_; my $handle = $self->file_handle; # Get output my $out = $self->_process_template; # Spew output $self->spew_output($out); return; } sub _process_template { my ($self) = @_; my $quotes = $self->quotes; my $template = $self->template; my $out; Template->new->process( \$template, { quotes => $quotes, size => scalar(@$quotes), escape => sub { my $text = shift; return "[===[$text]===]"; }, }, \$out ); return $out; } __PACKAGE__->meta->make_immutable; =encoding utf8 =head1 NAME App::QuoteCC::Output::Lua - Emit quotes in Lua format =head1 AUTHOR Evar ArnfjErE Bjarmason =head1 LICENSE AND COPYRIGHT Copyright 2010 Evar ArnfjErE Bjarmason Copyright 2010 Hinrik Ern SigurEsson This program is free software, you can redistribute it and/or modify it under the same terms as Perl itself. =cut __DATA__ __[ program ]__ #!/usr/bin/env lua require 'posix' local quotes = {[% FOREACH quote IN quotes %] [% escape(quote) %],[% END %] } if arg[1] == "--all" then print(table.concat(quotes, "\n")) else local pid = posix.getpid("pid") local time = os.time(); math.randomseed(time * pid) print(quotes[math.random(#quotes)]) end