NAME
Quiq::Unindent - Entferne Einrückung von "Here Document" oder String-Literal
SYNOPSIS
Klasse laden:
use Quiq::Unindent;
Eingerücktes "Here Document":
{
$text = Quiq::Unindent->hereDoc(<<' EOT');
Dies ist
ein Text
EOT
print $text;
}
Eingerücktes mehrzeiliges String-Literal:
{
$text = Quiq::Unindent->string('
Dies ist
ein Text
');
print $text;
}
Resultat in beiden Fällen:
Dies ist
ein Text
DESCRIPTION
Die Klasse stellt Methoden zur Verfügung, mit denen die in der Regel unerwünschte Einrückung von eingerückten mehrzeiligen String-Literalen und "Here Documents" entfernt werden kann.
METHODS
Klassenmethoden
hereDoc() - Entferne Einrückung von "Here Document"
Synopsis
$str = $class->hereDoc(<<'EOT');
<Text>
EOT
$str = $class->hereDoc($char,<<'EOT');
<Text>
EOT
Arguments
Description
Entferne von allen Zeilen die tiefste Einrückung, die allen Zeilen gemeinsam ist, und liefere die resultierende Zeichenkette zurück, wobei
alle Sub-Einrückungen erhalten bleiben
alle Leerzeilen erhalten bleiben, auch am Anfang und am Ende
Ist der Ende-Marker eingerückt, muss dessen Einrückung bei der Vereinbarung des Markers angegeben werden. Siehe <<' EOT'
in den Beispielen.
Examples
Gegenüberstellung der Syntax
{ $text = Quiq::Unindent->hereDoc(<<' EOT'); Dies ist ein Text EOT }
ist äquivalent zu
{ $text = <<'EOT'; Dies ist ein Text EOT }
Sub-Einrückungen und Leerzeilen
{ $text = Quiq::Unindent->hereDoc(<<' EOT'); Dies ist der erste Absatz. Dies ist ein zweiter Absatz. EOT }
ergibt
| | Dies ist der |erste Absatz. | | Dies ist ein |zweiter Absatz. |
d.h. Sub-Einrückungen und Leerzeilen bleiben erhalten.
string() - Entferne Einrückung von mehrzeiligem String-Literal
Synopsis
$str = $class->string('
<Text>
');
$str = $class->string($char,'
<Text>
');
Arguments
Description
Wie Methode hereDoc(), wobei über die Einrückung hinaus
der erste Zeilenumbruch am Anfang entfernt wird (sofern vorhanden)
die Leerzeichen am Ende entfernt werden (sofern vorhanden)
Diese (zusätzlichen) Manipulationen sorgen dafür, dass der Leerraum entfernt wird, der dadurch entsteht, wenn die Anführungsstriche auf einer eigenen Zeile stehen.
Examples
Gegenüberstellung der Syntax:
{ $text = Quiq::Unindent->string(' Dies ist ein Text '); }
ist äquivalent zu
{ $text = 'Dies ist ein Text '; }
Varianten
$text = Quiq::Unindent->string(q~ Dies ist ein Text ~); $text = Quiq::Unindent->string(" Dies ist ein Text mit $variable "); $text = Quiq::Unindent->string(qq~ Dies ist ein Text mit $variable ~);
trim() - Entferne Einrückung und Whitespace am Anfang und Ende
Synopsis
$strOut = $class->trim($strIn);
$strOut = $class->trim($char,$strIn);
Arguments
Description
Wie die Methoden hereDoc() und string(), wobei über die Einrückung hinaus
alle Leerzeilen am Anfang entfernt werden
jeglicher Leerraum am Ende entfernt wird
Diese (zusätzlichen) Manipulationen sorgen dafür, dass der Text als solches - d.h. ohne Einrückung und ohne Leerraum am Anfang und am Ende - geliefert wird.
Die Methode ist speziell für die interne Bearbeitung eines mehrzeiligen, ggf. mit einer Einrückung versehenen Parameterns geeignet.
Examples
Leerraum am Anfang und am Ende wird entfernt
{ $text = Quiq::Unindent->trim(" SELECT * FROM person WHERE nachname = 'Schulz' "); }
ergibt
|SELECT | * |FROM | person |WHERE | nachname = 'Schulz' ^ kein Newline
Interne Anwendung
sub select { my ($self,$stmt) = @_; $stmt = Quiq::Unindent->trim($stmt); if ($self->debug) { warn $stmt,"\n"; } ... }
Aufruf mit eingerücktem String-Literal, das intern behandelt wird:
$db->select(" SELECT * FROM person WHERE nachname = 'Schulz' ");
trimNl() - Trim plus Newline
Synopsis
$strOut = $class->trimNl($strIn);
$strOut = $class->trimNl($char,$strIn);
Arguments
Description
Wie die Methode trim(), jedoch wird am Ende genau ein Newline angehängt, sofern der Sting nicht leer ist.
VERSION
1.220
AUTHOR
Frank Seitz, http://fseitz.de/
COPYRIGHT
Copyright (C) 2024 Frank Seitz
LICENSE
This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.