-
Notifications
You must be signed in to change notification settings - Fork 0
Plack PYX file application.
License
michal-josef-spacek/Plack-App-File-PYX
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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/ # <html><head><title>Title</title></head><body><div>Hello world</div></body></html> 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/ # <html> # <head> # <title> # Title # </title> # </head> # <body> # <div> # Hello world # </div> # </body> # </html> 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/ # <?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> 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 # <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> DEPENDENCIES Encode, English, Error::Pure, HTTP::Date, Plack::App::File, Plack::Util::Accessor, PYX::SGML::Tags, Tags::Output::Raw, Unicode::UTF8. REPOSITORY <https://github.com/michal-josef-spacek/Plack-App-File-PYX> AUTHOR Michal Josef Špaček <mailto:[email protected]> <http://skim.cz> LICENSE AND COPYRIGHT © 2020 Michal Josef Špaček BSD 2-Clause License VERSION 0.02
About
Plack PYX file application.
Topics
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published