The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Graph::Reader::UnicodeTree - Perl class for reading a graph from unicode tree text format.

SYNOPSIS

 use Graph::Reader::UnicodeTree;

 my $obj = Graph::Reader::UnicodeTree->new;
 my $graph = $obj->read_graph($unicode_tree_file);

METHODS

new

 my $obj = Graph::Reader::UnicodeTree->new;

Constructor. This doesn't take any arguments.

Returns Graph::Reader::UnicodeTree object.

read_graph

 my $graph = $obj->read_graph($unicode_tree_file);

Read a graph from the specified file. The argument can either be a filename, or a filehandle for a previously opened file.

Returns Graph object.

UNICODE TREE FILE FORMAT

 Vertices are simple text.
 Edges are '─┬─' or '───' in main line and ' ├─' or ' └─' in other lines.
 Example:
 1─┬─2
   ├─3───4
   ├─5
   ├─6─┬─7
   │   ├─8
   │   └─9
   └─10

EXAMPLE1

 use strict;
 use warnings;

 use Encode qw(decode_utf8 encode_utf8);
 use Graph::Reader::UnicodeTree;
 use IO::Barf qw(barf);
 use File::Temp qw(tempfile);

 # Example data.
 my $data = decode_utf8(<<'END');
 1─┬─2
   ├─3───4
   ├─5
   ├─6─┬─7
   │   ├─8
   │   └─9
   └─10
 END

 # Temporary file.
 my (undef, $tempfile) = tempfile();

 # Save data to temp file.
 barf($tempfile, encode_utf8($data));

 # Reader object.
 my $obj = Graph::Reader::UnicodeTree->new;

 # Get graph from file.
 my $g = $obj->read_graph($tempfile);

 # Clean temporary file.
 unlink $tempfile;

 # Print to output.
 print $g."\n";

 # Output:
 # 1-10,1-2,1-3,1-5,1-6,3-4,6-7,6-8,6-9

EXAMPLE2

 use strict;
 use warnings;

 use Graph::Reader::UnicodeTree;

 if (@ARGV < 1) {
         print STDERR "Usage: $0 data_file\n";
         exit 1;
 }
 my $data_file = $ARGV[0];

 # Reader object.
 my $obj = Graph::Reader::UnicodeTree->new;

 # Get graph from file.
 my $g = $obj->read_graph($data_file);

 # Print to output.
 print $g."\n";

 # Output like:
 # 1-10,1-2,1-3,1-5,1-6,3-4,6-7,6-8,6-9

DEPENDENCIES

Encode, Graph::Reader, Readonly.

SEE ALSO

Graph::Reader

base class for Graph file format readers

Task::Graph::Reader

Install the Graph::Reader modules.

REPOSITORY

https://github.com/michal-josef-spacek/Graph-Reader-UnicodeTree

AUTHOR

Michal Josef Špaček mailto:skim@cpan.org

http://skim.cz

LICENSE AND COPYRIGHT

© Michal Josef Špaček 2013-2021

BSD 2-Clause License

VERSION

0.03