Plack::App::File::PYX - Plack PYX directory application.
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;
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.
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/ # <html><head><title>Title</title></head><body><div>Hello world</div></body></html>
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/ # <html> # <head> # <title> # Title # </title> # </head> # <body> # <div> # Hello world # </div> # </body> # </html>
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/ # <?xml version="1.0"?> # <svg xmlns="http://www.w3.org/2000/svg"> # <rect x="80" y="60" width="250" height="250" rx="20" style= # "fill:#ff0000; stroke:#000000; stroke-width:2px;"> # </rect> # <rect x="140" y="120" width="250" height="250" rx="40" style= # "fill:#0000ff; stroke:#000000; stroke-width:2px; fill-opacity:0.7;"> # </rect> # </svg>
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 # <html> # <head> # <title> # žščřďťň # </title> # <meta charset="iso-8859-2"> # </meta> # </head> # <body> # <div> # Hello in iso-8859-2 encoding - Ahoj světe! # </div> # </body> # </html>
Encode, English, Error::Pure, HTTP::Date, Plack::App::File, Plack::Util::Accessor, PYX::SGML::Tags, Tags::Output::Raw, Unicode::UTF8.
https://github.com/michal-josef-spacek/Plack-App-File-PYX
Michal Josef Špaček mailto:skim@cpan.org
http://skim.cz
© 2020 Michal Josef Špaček
BSD 2-Clause License
0.01
To install Plack::App::File::PYX, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Plack::App::File::PYX
CPAN shell
perl -MCPAN -e shell install Plack::App::File::PYX
For more information on module installation, please visit the detailed CPAN module installation guide.