Regexp::Visualize::Simple - Regular expression visualization using Graph::Easy
use Regexp::Visualize::Simple $parser = ... Regexp::Parser object ...; my $v = Regexp::Visualize::Simple->new; $v->push_regexp_node ($parser->root); while ($v->has_regexp_node) { my ($g, $index) = $v->next_graph; # $g is a Graph::Easy object print "$index:\n"; print $g->as_svg; }
The Regexp::Visualize::Simple
generates a series of Graph::Easy
objects, which as a whole represents a regular expression parsed by
Regexp::Parser
. Generated graphs can be exported to arbitrary
image format, such as PNG and SVG, supported by Graph::Easy
. As an
input any regular expression dialect supported by Regexp::Parser
or
its subclasses can be used.
It is sometimes impossible or undesired to represents a regular
expression as one complete graph. For example, if a regular
expression containing (?!...)
segment were represented as a graph,
it would be difficult to understand. Therefore, the result
visualization might sometimes be split into multiple graphs. This is
why this module defines iterator methods has_regexp_node
and
next_graph
.
Creates a new instance of the regular expression visualizer.
Push a regular expression node that represents a subgraph to be visualized.
Shifts a regular expression node from the queue hold by the visualizer
object, if any, or returns undef
.
Returns whether the visualizer object contains one or more nodes in the queue of regular expression nodes to be graphized.
Generates a graph from the first node in the queue o the regular expression node hold by the visualizer object.
If there is no node to be graphized in the queue, then a list of two
undef
values is returned.
Otherwise, a list of the Graph::Easy
object generated from the
regular expression node and the index number of the graph is returned.
The first graph generated by the visualizer object has the index of
zero (0
), and the next graph has one (1
).
This module requires Perl 5.10.0 or later.
This module depends on the Graph::Easy
module.
This module assumes the input regular expression nodes implementing
Regexp::Parser
-compatible interface. Such modules include
Regexp::Parser::Perl58
and Regexp::Parser::JavaScript
.
The latest version of this module is available at http://suika.fam.cx/regexp/.
Regular expression visualizer http://suika.fam.cx/regexp/visualizer/input. This is a Web interface for this module. Its source code is available at http://suika.fam.cx/regexp/visualizer/regexp.cgi,cvslog.
the Regexp::Parser::Perl58 manpage - A subclass of Regexp::Parser
supporting
Perl 5.8 regular expression syntax.
the Regexp::Parser::JavaScript manpage - A subclass of Regexp::Parser
supporting JavaScript regular expression syntax.
These two modules above are available at http://suika.fam.cx/regexp/.
the Graph::Easy manpage. This module is available from CPAN.
CVS log: http://suika.fam.cx/regexp/lib/Regexp/Visualize/Simple.pm,cvslog.
Bug tracking system: http://manakai.g.hatena.ne.jp/task/7/.
Localization / customization support.
Wakaba <w@suika.fam.cx>.
Copyright 2008-2009 Wakaba <w@suika.fam.cx>.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.