freebsd-ports/textproc/p5-Sort-Naturally/pkg-descr
Mathieu Arnold 5647ec07bb Add p5-Sort-Naturally 1.02, sort lexically, but sort numeral parts
numerically.

PR:		ports/p5-Sort-Naturally/
Submitted by:	Aaron Dalton <aaron@daltons.ca>
2005-02-15 17:17:56 +00:00

31 lines
1.5 KiB
Text

This module exports two functions, nsort and ncmp; they are used in implementing
my idea of a "natural sorting" algorithm. Under natural sorting, numeric
substrings are compared numerically, and other word-characters are compared
lexically.
This is the way I define natural sorting:
* Non-numeric word-character substrings are sorted lexically,
case-insensitively: "Foo" comes between "fish" and "fowl".
* Numeric substrings are sorted numerically: "100" comes after "20",
not before.
* \W substrings (neither words-characters nor digits) are ignored. Our use
* of \w, \d, \D, and \W is locale-sensitive: Sort::Naturally
uses a use locale statement.
* When comparing two strings, where a numeric substring in one place
is not up against a numeric substring in another, the non-numeric always comes
first. This is fudged by reading pretending that the lack of a number substring
has the value -1, like so:
* The start of a string is exceptional: leading non-\W (non-word,
non-digit) components are are ignored, and numbers come before letters.
* I define "numeric substring" just as sequences matching m/\d+/ --
scientific notation, commas, decimals, etc., are not seen. If your data has
thousands separators in numbers ("20,000 Leagues Under The Sea" or "20.000
lieues sous les mers"), consider stripping them before feeding them to nsort or
ncmp.
WWW: http://search.cpan.org/dist/Sort-Naturally/
Author: Sean M. Burke <sburke@cpan.org>
- Aaron Dalton
aaron@daltons.ca