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 # # # # žščřďťň # # # # # #
# Hello in iso-8859-2 encoding - Ahoj světe! #
# # DEPENDENCIES Encode, English, Error::Pure, HTTP::Date, Plack::App::File, Plack::Util::Accessor, PYX::SGML::Tags, Tags::Output::Raw, Unicode::UTF8. REPOSITORY AUTHOR Michal Josef Špaček LICENSE AND COPYRIGHT © 2020 Michal Josef Špaček BSD 2-Clause License VERSION 0.01