Quiq

 view release on metacpan or  search on metacpan

lib/Quiq/String.pm  view on Meta::CPAN

Ein String, typischerweise mehrzeilig.

=back

=head4 Returns

Länge der längsten Zeile (Integer)

=head4 Description

Ermittele die Länge der längsten Zeile und liefere diese zurück. Newline
wird nicht mitgezählt.

=cut

# -----------------------------------------------------------------------------

sub maxLineLength {
    my ($class,$text) = @_;

    my $maxLen = 0;
    for (split /\n/,$text) {
        chomp;
        my $l = length;
        if ($l > $maxLen) {
            $maxLen = $l;
        }
    }

    return $maxLen;
}

# -----------------------------------------------------------------------------

=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(
            '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 0.927 second using v1.01-cache-2.11-cpan-5b529ec07f3 )