Graph-Undirected-Hamiltonicity
view release on metacpan or search on metacpan
lib/Graph/Undirected/Hamiltonicity/Output.pm view on Meta::CPAN
package Graph::Undirected::Hamiltonicity::Output;
use Modern::Perl;
use Carp;
use Exporter qw(import);
our @EXPORT_OK = qw(
&output
&output_graph_svg
&output_image_svg
&output_adjacency_matrix_svg
);
our %EXPORT_TAGS = ( all => \@EXPORT_OK, );
##############################################################################
sub output {
my ($input) = @_;
my $format = $ENV{HC_OUTPUT_FORMAT} || 'none';
return if $format eq 'none';
if ( $format eq 'html' ) {
if ( ref $input ) {
output_image_svg(@_);
} else {
say $input;
}
} elsif ( $format eq 'text' ) {
if ( ref $input ) {
### Print the graph's edge-list as a string.
say "$input";
} else {
### Strip out HTML
$input =~ s@<LI>@* @gi;
$input =~ s@<BR/>@@gi;
$input =~ s@</?(LI|UL|OL|CODE|TT|PRE|H[1-6])>@@gi;
$input =~ s@<HR[^>]*?>@=================@gi;
say $input;
}
} else {
croak "Environment variable HC_OUTPUT_FORMAT should be "
. "one of: 'html', 'text', or 'none'\n";
}
}
##########################################################################
sub output_image_svg {
my ( $g, $hash_ref ) = @_;
my %params = %{ $hash_ref // {} };
my $image_size = $params{size} || 600;
say qq{<div style="height: 600px; width: 1000px;">};
### Output image
say qq{<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
( run in 1.503 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )