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 )