NAME
Plack::App::File::PYX - Plack PYX directory application.
SYNOPSIS
use Plack::App::File::PYX;
my $obj = Plack::App::File::PYX->new(%parameters);
my $psgi_ar = $obj->serve_path($env, $file);
my $app = $obj->to_app;
METHODS
"new"
my $obj = Plack::App::File::PYX->new(%parameters);
Constructor.
Returns instance of object.
* "content_type"
Content-Type of serialized output. There is possibility of callback
(reference to code) with $file argument which return content type
string.
Default value is 'text/html'.
* "encoding"
Set the file encoding for text files. Defaults to 'utf-8'.
* "file"
The file path to create responses from. Optional.
If it's set the application would ALWAYS create a response out of
the file and there will be no security check etc. (hence fast). If
it's not set, the application uses "root" to find the matching file.
* "indent"
Set Tags::Output::* class for output serialization.
Default value is Tags::Output::Raw.
* "root"
Document root directory. Defaults to "." (current directory)
"serve_path"
my $psgi_ar = $obj->serve_path($env, $file);
Process file on disk and serve it to application.
Returns reference to array (PSGI structure).
"to_app"
my $app = $obj->to_app;
Creates Plack application.
Returns Plack::Component object.
EXAMPLE1
use strict;
use warnings;
use File::Temp;
use IO::Barf;
use Plack::App::File::PYX;
use Plack::Runner;
# Temporary file with PYX.
my $temp_pyx_file = File::Temp->new->filename;
# PYX file.
my $pyx = <<'END';
(html
(head
(title
-Title
)title
)head
(body
(div
-Hello world
)div
)body
)html
END
barf($temp_pyx_file, $pyx);
# Run application with one PYX file.
my $app = Plack::App::File::PYX->new('file' => $temp_pyx_file)->to_app;
Plack::Runner->new->run($app);
# Output:
# HTTP::Server::PSGI: Accepting connections at http://0:5000/
# > curl http://localhost:5000/
#
Title
Hello world
EXAMPLE2
use strict;
use warnings;
use File::Temp;
use IO::Barf;
use Plack::App::File::PYX;
use Plack::Runner;
# Temporary file with PYX.
my $temp_pyx_file = File::Temp->new->filename;
# PYX file.
my $pyx = <<'END';
(html
(head
(title
-Title
)title
)head
(body
(div
-Hello world
)div
)body
)html
END
barf($temp_pyx_file, $pyx);
# Run application with one PYX file.
my $app = Plack::App::File::PYX->new(
'file' => $temp_pyx_file,
'indent' => 'Tags::Output::Indent',
)->to_app;
Plack::Runner->new->run($app);
# Output:
# HTTP::Server::PSGI: Accepting connections at http://0:5000/
# > curl http://localhost:5000/
#
#
#
# Title
#
#
#
#
# Hello world
#
#
#
EXAMPLE3
use strict;
use warnings;
use File::Temp;
use IO::Barf;
use Plack::App::File::PYX;
use Plack::Runner;
# Temporary file with PYX.
my $temp_pyx_file = File::Temp->new->filename;
# PYX file.
my $pyx = <<'END';
?xml version="1.0"
(svg
Axmlns http://www.w3.org/2000/svg
(rect
Ax 80
Ay 60
Awidth 250
Aheight 250
Arx 20
Astyle fill:#ff0000; stroke:#000000; stroke-width:2px;
)rect
(rect
Ax 140
Ay 120
Awidth 250
Aheight 250
Arx 40
Astyle fill:#0000ff; stroke:#000000; stroke-width:2px; fill-opacity:0.7;
)rect
)svg
END
barf($temp_pyx_file, $pyx);
# Run application with one PYX file.
my $app = Plack::App::File::PYX->new(
'content_type' => 'image/svg+xml',
'file' => $temp_pyx_file,
'indent' => 'Tags::Output::Indent',
)->to_app;
Plack::Runner->new->run($app);
# Output:
# HTTP::Server::PSGI: Accepting connections at http://0:5000/
# > curl http://localhost:5000/
#
#
EXAMPLE4
use strict;
use warnings;
use File::Temp;
use IO::Barf;
use Plack::App::File::PYX;
use Plack::Runner;
# Temporary file with PYX.
my $temp_pyx_file = File::Temp->new->filename;
# PYX file in UTF8, prepared for iso-8859-2 output.
my $pyx = <<'END';
(html
(head
(title
-žščřďťň
)title
(meta
Acharset iso-8859-2
)meta
)head
(body
(div
-Hello in iso-8859-2 encoding - Ahoj světe!
)div
)body
)html
END
barf($temp_pyx_file, $pyx);
# Run application with one PYX file.
my $app = Plack::App::File::PYX->new(
'encoding' => 'iso-8859-2',
'file' => $temp_pyx_file,
'indent' => 'Tags::Output::Indent',
)->to_app;
Plack::Runner->new->run($app);
# Output:
# HTTP::Server::PSGI: Accepting connections at http://0:5000/
# > curl http://localhost:5000/
# XXX in ISO-8859-2 encoding
#
#
#
# žščřďťň
#
#
#
#
#
#