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

NAME

CommonMark::Node - Node of the CommonMark parse tree

SYNOPSIS

    my $html = $node->render(
        format => 'html',
        safe   => 1,
    );

    my $header    = $doc->first_child;
    my $level     = $header->get_header_level;
    my $paragraph = $header->next;

    my $link = CommonMark::Node->new(CommonMark::NODE_LINK);
    $link->set_url('http://example.com/');
    my $text = CommonMark::Node->new(CommonMark::NODE_TEXT);
    $text->set_literal('link text');
    $link->append_child($link_text);
    $paragraph->append_child($link);

    $doc->render_html;

DESCRIPTION

CommonMark::Node represents a node of the parse tree.

new

   my $node = CommonMark::Node->new($type);

Creates a new node of type $type. See "Node types" for a list of types. Note that the node creation functions provide a more powerful interface.

Rendering

    my $result = $node->render(
        format        => $string,
        sourcepos     => $bool,    # Optional
        hardbreaks    => $bool,    # Optional
        safe          => $bool,    # Optional
        width         => $int,     # Optional
    );

Convenience function to render documents. Supported formats are 'html', 'xml', 'man', 'commonmark', and 'latex'.

sourcepos, hardbreaks, and safe enable the respective render options.

width is passed to renderers that support it.

    my $html  = $node->render_html( [$options] )
    my $xml   = $node->render_xml( [$options] )
    my $man   = $node->render_man( [$options], [$width] )
    my $md    = $node->render_commonmark( [$options], [$width] )
    my $latex = $node->render_latex( [$options], [$width] )

These methods render the contents of the node in the respective format.

$options is a bit field created by ORing the following constants:

    CommonMark::OPT_DEFAULT => 0
    CommonMark::OPT_SOURCEPOS
    CommonMark::OPT_HARDBREAKS
    CommonMark::OPT_SAFE

$options may be omitted and defaults to OPT_DEFAULT. See the documentation of libcmark for more details.

SOURCEPOS adds information about line numbers in the source file to the XML and HTML formats.

HARDBREAKS translates newlines in the input to line breaks in the output. This is only supported by some renderers.

SAFE only affects the HTML renderer. It suppresses raw HTML blocks and some dangerous links.

$width specifies the number of characters at which lines are broken. A value of 0 disables line wrapping. The default is 0.

Accessors

    # Integer values

    my $int = $node->get_type;
    my $int = $node->get_header_level;
    my $int = $node->get_list_type;
    my $int = $node->get_list_delim;
    my $int = $node->get_list_start;
    my $int = $node->get_list_tight;
    my $int = $node->get_start_line;
    my $int = $node->get_start_column;
    my $int = $node->get_end_line;
    my $int = $node->get_end_column;

    $node->set_header_level($int);
    $node->set_list_type($int);
    $node->set_list_delim($int);
    $node->set_list_start($int);
    $node->set_list_tight($int);

    # String values

    my $string = $node->get_type_string;
    my $string = $node->get_literal;
    my $string = $node->get_title;
    my $string = $node->get_url;
    my $string = $node->get_fence_info;

    $node->set_literal($string);
    $node->set_title($string);
    $node->set_url($string);
    $node->set_fence_info($string);

Various accessors to get and set integer and string values of a node. Not all values are supported by every type of node. Getters return 0 or undef for unsupported values. Setters die on failure.

See "Constants" for a list of constants used for node types, list types, and list delimiters.

Tree traversal

    my $iterator = $node->iterator;

Creates a new CommonMark::Iterator to walk through the descendants of the node.

    my $next   = $node->next;
    my $prev   = $node->previous;
    my $parent = $node->parent;
    my $child  = $node->first_child;
    my $child  = $node->last_child;

These methods return the respective node in tree structure.

Tree manipulation

    $node->unlink;
    $node->insert_before($other);
    $node->insert_after($other);
    $node->prepend_child($other);
    $node->append_child($other);

unlink removes a node and all its descendants from the tree.

insert_before and insert_after insert the $other node before or after $node. append_child and prepend_child append or prepend $other to the children of $node.

$other is unlinked before it is inserted into its new position.

These methods may die on failure.

Constants

Node types

    CommonMark::NODE_NONE => 0
    CommonMark::NODE_DOCUMENT
    CommonMark::NODE_BLOCK_QUOTE
    CommonMark::NODE_LIST
    CommonMark::NODE_ITEM
    CommonMark::NODE_CODE_BLOCK
    CommonMark::NODE_HTML_BLOCK
    CommonMark::NODE_CUSTOM_BLOCK
    CommonMark::NODE_PARAGRAPH
    CommonMark::NODE_HEADING
    CommonMark::NODE_THEMATIC_BREAK
    CommonMark::NODE_TEXT
    CommonMark::NODE_SOFTBREAK
    CommonMark::NODE_LINEBREAK
    CommonMark::NODE_CODE
    CommonMark::NODE_HTML_INLINE
    CommonMark::NODE_CUSTOM_INLINE
    CommonMark::NODE_EMPH
    CommonMark::NODE_STRONG
    CommonMark::NODE_LINK
    CommonMark::NODE_IMAGE

List types

    CommonMark::NO_LIST => 0
    CommonMark::BULLET_LIST
    CommonMark::ORDERED_LIST

Delimiter types for ordered lists

    CommonMark::NO_DELIM => 0
    CommonMark::PERIOD_DELIM
    CommonMark::PAREN_DELIM

COPYRIGHT

This software is copyright (C) by Nick Wellnhofer.

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