-
-
30 Nov 2009 02:13:15 UTC
- Distribution: Sort-SQL
- Module version: 0.08
- Source (raw)
- Browse (raw)
- Changes
- How to Contribute
- Issues
- Testers (6322 / 2 / 0)
- Kwalitee
Bus factor: 0- 90.91% Coverage
- License: unknown
- Activity
24 month- Tools
- Download (3.56KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
and 1 contributors-
Peter Karman
- Dependencies
- unknown
- Reverse dependencies
- CPAN Testers List
- Dependency graph
NAME
Sort::SQL - manipulate SQL sort strings
SYNOPSIS
use Sort::SQL; my $array_of_arrays = Sort::SQL->parse('foo ASC bar DESC bing'); # $array_of_arrays == [ [ 'foo', 'ASC' ], [ 'bar', 'DESC' ], [ 'bing', 'ASC' ] ] my $array_of_hashes = Sort::SQL->string2array('foo asc bar DESC bing'); # $array_of_hashes == [ { foo => 'ASC' }, { bar => 'DESC' }, { bing => 'ASC' } ]
DESCRIPTION
Sort::SQL is so simple it almost doesn't deserve to be on CPAN. But since I kept finding myself copy/pasting this method into multiple places, I finally figured it deserved to live in its own class.
METHODS
Sort::SQL implements these methods, each of which take a scalar string of the SQL
ORDER BY
syntax and return a data structure.parse( sql sort string )
Returns sql sort string as an arrayref of arrayrefs.
string2array( sql sort string )
Returns sql sort string as an arrayref of hashrefs. This is for backwards compat only -- parse() is a little faster and more usable.
EXAMPLE
Here's how I use it in my web applications. I want to allow users to re-sort search results by table column header. Each column name is a link back to the server, and I want to provide the SQL
ORDER BY
value as a param in the URI.In my controller code I do:
my $sort_order = $c->request->param('order'); $c->stash->{search}->{order} = Sort::SQL->parse( $sort_order );
And then in my template:
column.links = {}; FOREACH pair IN search.order; column = pair.0; direction = pair.1; # toggle the sort direction for current sorted column # so the next browser request will reverse the sort IF ( direction == 'ASC' ); column.links.$column.direction = 'DESC'; ELSE; column.links.$column.direction = 'ASC'; END; END;
SEE ALSO
SWISH::API::Object
AUTHOR
Peter Karman, <perl@peknet.com>
Thanks to Atomic Learning for sponsoring the development of this module.
COPYRIGHT AND LICENSE
Copyright (C) 2007 by Peter Karman
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.7 or, at your option, any later version of Perl 5 you may have available.
Module Install Instructions
To install Sort::SQL, copy and paste the appropriate command in to your terminal.
cpanm Sort::SQL
perl -MCPAN -e shell install Sort::SQL
For more information on module installation, please visit the detailed CPAN module installation guide.