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
LICENSE AND COPYRIGHT
© Michal Josef Špaček 2013-2021
BSD 2-Clause License
VERSION
0.03