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

NAME

Graph::Easy::Parser::Graphviz - Parse graphviz text into Graph::Easy

SYNOPSIS

        # creating a graph from a textual description

        use Graph::Easy::Parser::Graphviz;
        my $parser = Graph::Easy::Parser::Graphviz->new();

        my $graph = $parser->from_text(
                "digraph MyGraph { \n" .
                "       Bonn -> \"Berlin\" \n }"
        );
        print $graph->as_ascii();

        print $parser->from_file('mygraph.dot')->as_ascii();

DESCRIPTION

Graph::Easy::Parser::Graphviz parses the text format from the DOT language use by Graphviz and constructs a Graph::Easy object from it.

The resulting object can than be used to layout and output the graph in various formats.

Please see the Graphviz manual for a full description of the syntax rules of the DOT language.

Output

The output will be a Graph::Easy object (unless overrriden with use_class()), see the documentation for Graph::Easy what you can do with it.

METHODS

Graph::Easy::Parser::Graphviz supports the same methods as its parent class Graph::Easy::Parser:

new()

        use Graph::Easy::Parser::Graphviz;
        my $parser = Graph::Easy::Parser::Graphviz->new();

Creates a new parser object. The only valid parameter is debug, when set to true it will enable debug output to STDERR:

        my $parser = Graph::Easy::Parser::Graphviz->new( debug => 1 );
        $parser->from_text('digraph G { A -> B }');

reset()

        $parser->reset();

Reset the status of the parser, clear errors etc. Automatically called when you call any of the from_XXX() methods below.

use_class()

        $parser->use_class('node', 'Graph::Easy::MyNode');

Override the class to be used to constructs objects while parsing.

See Graph::Easy::Parser for further information.

from_text()

        my $graph = $parser->from_text( $text );

Create a Graph::Easy object from the textual description in $text.

Returns undef for error, you can find out what the error was with error().

This method will reset any previous error, and thus the $parser object can be re-used to parse different texts by just calling from_text() multiple times.

from_file()

        my $graph = $parser->from_file( $filename );
        my $graph = Graph::Easy::Parser->from_file( $filename );

Creates a Graph::Easy object from the textual description in the file $filename.

The second calling style will create a temporary parser object, parse the file and return the resulting Graph::Easy object.

Returns undef for error, you can find out what the error was with error() when using the first calling style.

error()

        my $error = $parser->error();

Returns the last error, or the empty string if no error occured.

parse_error()

        $parser->parse_error( $msg_nr, @params);

Sets an error message from a message number and replaces embedded templates like ##param1## with the passed parameters.

CAVEATS

The parser has problems with the following things:

encoding and charset attribute

The parser assumes the input to be utf-8. Input files in <code>Latin1</code> are not parsed properly, even when they have the charset attribute set.

table syntax

Labels that contain the HTML table syntax (e.g. are limited by '<' and '>' opposed to '"') are not parsed yet.

shape=record

Nodes with shape record are only parsed properly when the label does not contain groups delimited by "{" and "}", so the following is parsed wrongly:

        node1 [ shape=record, label="A|{B|C}" ]
default shape

The default shape for a node is 'rect', opposed to 'circle' as dot renders nodes.

attributes

Some attributes are not remapped properly to what Graph::Easy expects, thus losing information, either because Graph::Easy doesn't support this feature yet, or because the mapping is incomplete.

Some attributes meant only for nodes or edges etc. might be incorrectly applied to other objects, resulting in unnec. warnings while parsing.

Attributes not valid in the original DOT language are silently ignored by dot, but result in a warning when parsing under Graph::Easy. This helps catching all these pesky misspellings, but it's not yet possible to disable these warnings.

EXPORT

Exports nothing.

SEE ALSO

Graph::Easy, Graph::Reader::Dot.

AUTHOR

Copyright (C) 2005 - 2006 by Tels http://bloodgate.com

See the LICENSE file for information.