Provided by: libmojolicious-plugin-assetpack-perl_2.02-1_all
NAME
Mojolicious::Plugin::AssetPack::Pipe - Base class for a pipe
SYNOPSIS
Write a custom pipe package MyApp::MyCoolPipe; use Mojo::Base "Mojolicious::Plugin::AssetPack::Pipe"; use Mojolicious::Plugin::AssetPack::Util qw(diag DEBUG); sub process { my ($self, $assets) = @_; # Normally a Mojolicious::Plugin::AssetPack::Store object my $store = $self->assetpack->store; # Loop over Mojolicious::Plugin::AssetPack::Asset objects $assets->each( sub { my ($asset, $index) = @_; # Skip every file that is not css return if $asset->format ne "css"; # Change $attr if this pipe will modify $asset attributes my $attr = $asset->TO_JSON; my $content = $asset->content; # Private name to load/save meta data under $attr->{key} = "coolpipe"; # Return asset if already processed if ($content !~ /white/ and $file = $store->load($attr)) { return $asset->content($file); } # Process asset content diag q(Replace white with red in "%s".), $asset->url if DEBUG; $content =~ s!white!red!g; $asset->content($store->save(\$content, $attr))->minified(1); } ); } Use the custom pipe use Mojolicious::Lite; plugin AssetPack => {pipes => [qw(MyApp::MyCoolPipe Css)]}; Note that the above will not load the other default pipes, such as Mojolicious::Plugin::AssetPack::Pipe::JavaScript.
DESCRIPTION
This is the base class for all pipe classes.
ATTRIBUTES
assetpack $obj = $self->assetpack; Holds a Mojolicious::Plugin::AssetPack object. topic $str = $self->topic; $self = $self->topic("app.css"); Returns the name of the current asset topic.
METHODS
after_process $self->after_process(Mojo::Collection->new); "process" in Mojolicious::Plugin::AssetPack will call this method before any of the pipe "process" method is called. Note that this method is not defined in Mojolicious::Plugin::AssetPack::Pipe! app $obh = $self->app; Returns the Mojolicious application object. before_process $self->before_process(Mojo::Collection->new); "process" in Mojolicious::Plugin::AssetPack will call this method after all of the pipes "process" method is called. Note that this method is not defined in Mojolicious::Plugin::AssetPack::Pipe! process $self->process(Mojo::Collection->new); A method used to process the assets. Each of the element in the collection will be a Mojolicious::Plugin::AssetPack::Asset object or an object with the same API. This method need to be defined in the subclass. run $self->run([som_app => @args], \$stdin, \$stdout, ...); See "run3" in IPC::Run3 for details about the arguments. This method will try to call "_install_some_app()" unless "som_app" was found in PATH. This method could then try to install the application and must return the path to the installed application.
SEE ALSO
• Mojolicious::Plugin::AssetPack • Mojolicious::Plugin::AssetPack::Asset • Mojolicious::Plugin::AssetPack::Store • Mojolicious::Plugin::AssetPack::Util