NAME

Quiq::LineProcessor - Verarbeite Datei als Array von Zeilen

BASE CLASS

Quiq::Hash

DESCRIPTION

Ein Objekt der Klasse repräsentiert eine Datei als ein Array von Zeilen. Die Zeilen sind ihrerseits Objekte (per Default Objekte der Klasse Quiq::LineProcessor::Line). Die Klasse stellt Methoden zur Manipulation des Arrays von Zeilen zur Verfügung.

Fehlerbehandlung

Für eine Fehlerbehandlung können die Methoden $par->input() und $line->number() genutzt werden:

  $class->throw(
      'SDOC-00001: K\{} and k\{} are not supported anymore',
      Input => ''.$par->input,
      Line => $line->number,
  );

produziert (z.B.)

  Exception:
      SDOC-00001: K{} and k{} is not supported anymore
  Input:
      /tmp/test.sdoc
  Line:
      20
  Stacktrace:
      ...

METHODS

Konstruktor

new() - Instantiiere Textdatei-Objekt

Synopsis

  $par = $class->new($file,@opt);
  $par = $class->new(\$str,@opt);
  $par = $class->new(\@lines,@opt);

Options

-lineClass => $class (Default: 'Quiq::LineProcessor::Line')

Klasse, auf die die Zeilen des Dokuments geblesst werden.

-lineContinuation => $type (Default: undef)

Art der Zeilenfortsetzung. Mögliche Werte:

undef

Keine Zeilenfortsetzung.

'backslash'

Endet eine Zeile mit einem Backslash, entferne Whitespace am Anfang der Folgezeile und füge den Rest zur Zeile hinzu.

Dies kann für eine Zeile unterdrückt werden, indem der Backslash am Ende der Zeile durch einen davorgestellten Backslash maskiert wird. In dem Fall wird statt einer Fortsetzung der Zeile der maskierende Backslash entfernt.

'whitespace'

Beginnt eine Zeile mit einem oder mehreren Leerzeichen oder TABs, wird sie zur vorhergehenden Zeile hinzugefügt. Die Leerzeichen und TABs am Zeilenanfang werden entfernt. Die Teile werden mit \n als Trenner zusammengefügt.

-skip => $regex (Default: undef)

Überlies Zeilen, die Regex $regex erfüllen.

Description

Instantiiere ein Dokument-Objekt aus Datei $file, aus Text $text oder aus den Zeilen @lines und liefere eine Referenz auf dieses Objekt zurück.

Akzessoren

input() - Bezeichnung Eingabequelle

Synopsis

  $input = $par->input;

Description

Liefere die Bezeichnung der Eingabequelle. Dies kann ein Dateiname oder eine stringifizierte String- oder Arrayreferenz sein.

lineClass() - Zeilen-Klasse

Synopsis

  $lineClass = $par->lineClass;

Description

Liefere die Zeilen-Klasse.

lines() - Liste der Zeilen

Synopsis

  @lines | $lineA = $par->lines(\@lines);

Description

Liefere die Liste der Zeilen der Datei. Im Skalarkontext liefere eine Referenz auf die Liste.

Operationen

shiftLine() - Entferne und liefere erste Zeile

Synopsis

  $line = $par->shiftLine;

Description

Entferne die erste Zeile aus dem Dokument und liefere diese zurück.

shiftLineIfEq() - Entferne erste Zeile, wenn bestimmter Inhalt

Synopsis

  $line = $par->shiftLineIfEq($str);

Description

Entferne die erste Zeile aus dem Dokument und liefere diese zurück, sofern ihr Inhalt eq $str ist.

removeEmptyLines() - Entferne Leerzeilen am Anfang

Synopsis

  $par->removeEmptyLines;

Description

Entferne Leerzeilen am Anfang. Die Methode liefert keinen Wert zurück.

Externe Repräsentation

dump() - Erzeuge externe Repräsentation

Synopsis

  $str = $par->dump($format);
  $str = $par->dump;

Description

Erzeuge eine externe Dokumentrepräsentation in Format $format für das gesamte Dokument und liefere diese zurück.

Formate

Siehe $ln->dump()

VERSION

1.163

AUTHOR

Frank Seitz, http://fseitz.de/

COPYRIGHT

Copyright (C) 2019 Frank Seitz

LICENSE

This code is free software; you can redistribute it and/or modify it under the same terms as Perl itself.