Prty
view release on metacpan or search on metacpan
lib/Prty/String.pm view on Meta::CPAN
package Prty::String;
use base qw/Prty::Object/;
use strict;
use warnings;
use v5.10.0;
use utf8;
our $VERSION = 1.128;
use Encode::Guess ();
use Encode ();
use Prty::Option;
use Prty::Array;
# -----------------------------------------------------------------------------
=encoding utf8
=head1 NAME
Prty::String - Operationen auf Zeichenketten
=head1 BASE CLASS
L<Prty::Object>
=head1 METHODS
=head2 Encoding
=head3 autoDecode() - Auto-dekodiere Zeichenkette
=head4 Synopsis
$str = $class->autoDecode($str);
$str = $class->autoDecode($str,$otherEncoding);
=head4 Description
Analysiere Zeichenkette $str hinsichtlich ihres Character-Encodings
und dekodiere sie entsprechend. Unterschieden werden:
=over 2
=item *
ASCII
=item *
UTF-8
=item *
UTF-16/32 mit BOM
=back
und $otherEncoding. Ist $otherEncoding nicht angegeben, wird
ISO-8859-1 angenommen.
=cut
# -----------------------------------------------------------------------------
sub autoDecode {
my $class = shift;
my $str = shift;
my $otherEncoding = shift || 'iso-8859-1';
# Encoding ermitteln und Text dekodieren
# $Encode::Guess::NoUTFAutoGuess = 1;
my $dec = Encode::Guess->guess($str);
if (ref $dec) {
# Wir dekodieren Unicode
$str = $dec->decode($str);
}
elsif ($dec =~ /No appropriate encodings found/i) {
# Wir dekodieren $otherEncoding
$str = Encode::decode($otherEncoding,$str);
}
else {
# Unerwarteter Fehler
$class->throw(
q~PATH-00099: Zeichen-Dekodierung fehlgeschlagen~,
Message=>$dec,
);
}
return $str;
}
# -----------------------------------------------------------------------------
=head2 Einrückung
=head3 indent() - Rücke Text ein
=head4 Synopsis
$str2 = $class->indent($str,$indentStr,@opt);
$class->indent(\$str,$indentStr,@opt);
=head4 Options
=over 4
=item -indentBlankLines => $bool (Default: 0)
Rücke auch Leerzeilen ein. Per Default werden nur Zeilen mit
wenigstens einem Zeichen eingerückt.
Diese Option ist nützlich, wenn die Funktion zum Auskommentieren
genutzt werden soll.
( run in 1.202 second using v1.01-cache-2.11-cpan-ceb78f64989 )