| Text-Filter-URI documentation | Contained in the Text-Filter-URI distribution. |
Text::Filter::URI - Filter a string to meet URI requirements
Use either the exported function or the OO interface:
use Text::Filter::URI qw( filter_uri );
my $uri = filter_uri("A text which needs to be filtered ");
# $uri = "a-text-which-needs-to-be-filtered"
my $f = Text::Filter::URI->new(input => $input, output => $output);
$f->filter;
See Text::Filter for details on $input and $output.
This method can be exported using use Text::Filter::URI qw( filter_uri );
It expects a string or an array of strings and returns the filtered strings accordingly.
These methods are used for the OO interface. This allows you to use the full power of Text::Filter.
The constructor new takes a hash for configuration. See CONSTRUCTOR in Text::Filter for more information on these settings.
There is one additional parameter:
Define an individual string for separating the words. Defaults to -.
Call this method after calling new to actually filter the $input.
Unicode characters get encoded to their ascii equivalents using the Text::Unidecode. This module maps characters like ä to the ascii character a.
This method contains several regular expressions which convert every not word character (\W) and the underscore to a blank. Blanks at the beginning and the end are removed. All remaining blanks are replaced by the separator (defaults to -). Then it creates a lowercased version of the string.
Moritz Onken, <onken at houseofdesign.de>
Please report any bugs or feature requests to bug-text-filter-uri at rt.cpan.org, or through
the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Text-Filter-URI. I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.
Copyright 2008 Moritz Onken, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Text-Filter-URI documentation | Contained in the Text-Filter-URI distribution. |
package Text::Filter::URI; use warnings; use strict; use Text::Unidecode; use base qw(Exporter Text::Filter); our @EXPORT_OK; BEGIN { @EXPORT_OK = qw(filter_uri); }
our $VERSION = '0.02';
sub filter_uri { my @input = @_; my $output = []; my $f = Text::Filter::URI->new( input => [@input], output => $output); $f->filter; return wantarray ? @{$output} : $output->[0]; }
sub new { my $class = shift; my %backup = @_; my %param = (separator => '-', @_); delete $backup{separator}; my $self = $class->SUPER::new(%backup); $self->{separator} = $param{separator}; bless($self, $class); return $self; }
sub filter { my $self = shift; { no locale; my $line; while ( defined($line = $self->readline) ) { $line = unidecode($line); $line =~ s/[\W_]/ /g; $line =~ s/^\s*|\s*$//g; $line =~ s/\s+/$self->{separator}/g; $line = lc($line); $self->writeline($line); } } }
1; # End of Text::Filter::URI