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 )