#!/usr/bin/env perl
#
#  This file is part of WebDyne.
#
#  This software is copyright (c) 2026 by Andrew Speer <andrew.speer@isolutions.com.au>.
#
#  This is free software; you can redistribute it and/or modify it under
#  the same terms as the Perl 5 programming language system itself.
#
#  Full license text is available at:
#
#  <http://dev.perl.org/licenses/>
#


#
#  Dump the compiled version of WebDyne HTML scripts, as stored in the cache dir
#
use strict qw(vars);
use vars   qw($VERSION);


#  Use the base module
#
use WebDyne::Util;


#  External modules
#
use Getopt::Long;
use Pod::Usage;
use Data::Dumper;
use Storable;
use FindBin qw($RealBin $Script);
$Data::Dumper::Indent=1;
$Data::Dumper::Sortkeys=1;


#  Version Info, must be all one line for MakeMaker, CPAN.
#
$VERSION='2.075';


#  Run main
#
exit ${&main(\@ARGV) || die errdump()};


#============================================================================


sub main {


    #  Get argv array ref
    #
    my $argv_ar=shift();


    #  Get command line options
    #
    my %opt;
    GetOptions(\%opt, 'help|?', 'man', 'version') ||
        pod2usage(2);
    pod2usage(-verbose => 99, -sections => 'SYNOPSIS|OPTIONS', -exitval => 1) if $opt{'help'};
    pod2usage(-verbose => 2)                                                  if $opt{'man'};
    $opt{'version'} && do {print "$Script version: $VERSION\n"; exit 0};

    #  Get srce file
    #
    my $srce_pn=$argv_ar->[0] ||
        pod2usage("$Script: no source file specified !");


    #  Retrieve
    #
    my $data_ar=Storable::retrieve($srce_pn);


    #  Dump
    #
    print Data::Dumper::Dumper($data_ar);


    #  Done
    #
    return \undef;


}

__END__





=pod

=head1 wddump(1)

=head1 NAME

wddump - dump the data structure of a WebDyne page in the cache directory

=head1 SYNOPSIS

C<<<< wddump [OPTIONS] FILE >>>>

=head1 Description

The  C<<<< wddump >>>>  command displays internal the data structure of a compiled WebDyne psp file from the WebDyne cache directory. The  C<<<< wddump >>>>  utility is of limited diagnostic use - the  C<<<< wdcompile >>>>  tool is more suitable for troubleshooting HTML tree errors.

C<<<< wddump >>>>  can be useful to see a picture of the final data structure looks like on complex pages built via many filters, combining static and dynamic blocks etc.

=head1 Options

=over

=item * B<<< -h, --help >>>

Show brief help message.

=back

=head1 Examples

    # Display the data structure from a compiled, cached webdyne time.psp file. File name and location
    # will vary depending on your configuration 
    #
    $ wdrender /var/webdyne/cache/26f2c4edc8bfd52fbde915290db96779
    
    $VAR1 = [
      '<!DOCTYPE html><html lang="en"><head><title>Untitled Document</title><meta charset="UTF-8"><meta content="width=device-width, initial-scale=1.0" name="viewport"></head>
    <body><p>The current server time is: ',
      [
        'perl',
        {
          'inline' => 1,
          'perl' => ' localtime() '
        },
        undef,
        undef,
        2,
        2,
        \'time.psp'
      ],
      '</p></body></html>'
    ];

=head1 Author

Written by Andrew Speer,  <andrew@webdyne.org>

=head1 LICENSE and COPYRIGHT

This file is part of WebDyne.

This software is copyright (c) 2026 by Andrew Speer L<mailto:andrew.speer@isolutions.com.au>.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

Full license text is available at:

L<http://dev.perl.org/licenses/>

=cut