Blast-Radius Aware AI Code Review for Business-Critical Systems
LiveReview LiveReview Explore LiveReview

HTTP::Headers::ActionPack::PriorityList - A Priority List

Author

Contributors

       •   Andrew Nelson <anelson@cpan.org>

       •   Dave Rolsky <autarch@urth.org>

       •   Florian Ragwitz <rafl@debian.org>

       •   Jesse Luehrs <doy@tozt.net>

       •   Karen Etheridge <ether@cpan.org>

Description

       This is a simple priority list implementation, this is used to handle the Accept-* headers as they
       typically will contain values along with a "q" value to indicate quality.

Methods

       "new"
       "new_from_string ( $header_string )"
           This accepts a HTTP header string which get parsed and loaded accordingly.

       "index"
       "items"
       "add ( $quality, $choice )"
           Add in a new $choice with a given $quality.

       "get ( $quality )"
           Given a certain $quality, it returns the various choices available.

       "priority_of ( $choice )"
           Given a certain $choice this returns the associated quality of it.

       "iterable"
           This  returns  a  list  of  two item ARRAY refs with the quality as the first item and the associated
           choice as the second item. These are sorted accordingly.

           When two items have the same priority, they are returned in the order that they  were  found  in  the
           header.

       "canonicalize_choice"
           By default, this does nothing. It exists so that subclasses can override it.

Name

       HTTP::Headers::ActionPack::PriorityList - A Priority List

Synopsis

         use HTTP::Headers::ActionPack::PriorityList;

         # simple constructor
         my $plist = HTTP::Headers::ActionPack::PriorityList->new(
             [ 1.0 => 'foo' ],
             [ 0.5 => 'bar' ],
             [ 0.2 => 'baz' ],
         );

         # from headers
         my $plist = HTTP::Headers::ActionPack::PriorityList->new_from_string(
             'foo; q=1.0, bar; q=0.5, baz; q=0.2'
         );

Version

       version 0.09

See Also