The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Quiq::Sdoc::Node - Basisklasse für die Knoten eines Sdoc-Dokuments (abstrakt)

BASE CLASS

Quiq::Hash

DESCRIPTION

Die Klasse dient als Basisklasse für die Knotenklassen eines Sdoc-Dokuments. Jede Knotenklasse repräsentiert einen speziellen Elementtyp. Folgende Elementtypen existieren:

    Document
    Section
    List
    Item
    Paragraph
    Quote
    Code
    PageBreak

METHODS

Accessors

parent() - Liefere/Setze Elternknoten

Synopsis

    $node = $doc->parent;
    $node = $doc->parent($node);

Description

Liefere/Setze den Elternknoten. Die Referenz wird als schwache Referenz gespreichert, so dass eine Destrukturierung des Elternknotens durch die Referenz nicht verhindert wird.

childs() - Liste der Kindknoten

Synopsis

    @arr|$arr = $doc->childs;

Description

Liefere die Liste der Kindknoten. Im Skalarkontext liefere eine Referenz auf die Liste.

title() - Liefere den Titel des Knotens

Synopsis

    $title = $node->title;

Description

Liefere den Titel des Knotens. Hat der Knoten keinen Titel - weil dieser nicht definiert ist oder der Knoten dieses Attribut nicht besitzt - liefere einen Leerstring.

Anmerkung: Bestimmte Knotenklassen (Dokument, Definitionslisten-Element) überschreiben diese Methode.

Methods

nextType() - Liefere Typ des nächsten Elements

Synopsis

    ($type,$attibuteA) = $parent->nextType($doc);

Description

Analysiere die nächste nichtleere Zeile in LineProcessor $doc (Leerzeilen am Anfang werden von der Methode entfernt) hinsichtlich ihres Elementtyps und liefere die Typbezeichnung und Attribute - sofern spezifiziert - zurück.

Folgende Elementtypen werden unterschieden:

Section

Ein oder mehrere = am Zeilenanfang gefolgt von einem Leerzeichen. Zusätzlich zur Typbezeichnung wird der Level der Section geliefert.

List

Wird mit dem ersten Item geliefert.

Item

Zeile, die von $ln->item() als Item identifiziert wird.

Table

Wird mit der ersten Row geliefert.

Row

Zeile mit | am Anfang und am Ende.

Code

Zeile mit Leerzeichen oder | am Anfang.

Quote

Zeile mit > am Anfang.

PageBreak

Zeile mit ~~~ (mindestens drei Tilden) am Anfang.

Paragraph

Zeile, auf die keine der obigen Eigenschaften zutrifft.

parseObjectSpec() - Liefere Information zu Objektspezifikation

Synopsis

    ($type,$arr) = $node->parseObjectSpec($doc);

Description

Parse Objektspezifikation auf $doc und liefere den Typ und die Attribut/Wert-Paare des Objekts zurück.

anchors() - Liefere Zeichenkette aus allen Ankern

Synopsis

    $str = $node->anchors($format,@args);

Description

Liefere die Zeichenkette aus allen Ankern zur Einbettung in das Dokument.

dumpChilds() - Erzeuge Repräsentation für Subelemente

Synopsis

    $str = $node->dumpChilds($format,@args);

Description

Erzeuge eine externe Repräsentation im Format $format für die Subelemente des Knotens und liefere diese zurück. Dies ist eine Hilfsmethode, die von den Subkalssenmethoden $node->dump() gerufen wird um die externe Repräsentation eines Knotens zu erzeugen.

Elementtypen mit Subelementen (in Klammern die erlaubten Subelemente):

    Document (alle Typen)
    Section (alle Typen)
    List (nur Items)
    Item (alle Typen)
    Table (nur Rows)

Elementtypen ohne Subelemente:

    Paragraph
    Code
    Quote
    PageBreak
    Row

rootNode() - Liefere Wurzelknoten

Synopsis

    $root = $node->rootNode;

select() - Selektiere Knoten

Synopsis

    @nodes|$nodeA = $node->select(@keyVal);

Description

Selektiere alle Knoten ab und einschließlich Knoten $node, die die Kriterien @keyVal erfüllen und liefere die Liste dieser Knoten zurück. Im Skalarkontext liefere eine Referenz auf die Liste.

Ist kein Kriterium angegeben, liefere alle Knoten.

expand() - Schütze Metazeichen und ersetze Inline-Segmente

Synopsis

    $newVal = $sdoc->expand($format,$val,$inlineSegments,@args);

Description

Ersetze in $val die Metazeichen des Zielformats $format (<, >, & im Falle von HTML) und liefere das Resultat zurück. Ist $inlineSegments wahr, expandiere zusätzlich die Sdoc Inline-Segmente.

Inline-Segmente

Folgende Inline-Segmente sind definiert:

    B{...} bold
    C{...} constant width
    I{...} italic
    Q{...} quote
    U{...} URL (Link auf eine Webseite)
    G{...} Grafik/Bild

In Code-Abschnitten sollte keine Inline-Ersetzung stattfinden.

tableOfContents() - Erzeuge Inhaltsverzeichnis

Synopsis

    $str = $node->tableOfContents($format,@args);

VERSION

1.135

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.