#!/usr/bin/perl
# Copyright (C) 2006 Eric L. Wilhelm, OSoft
use warnings;
use strict;
=head1 NAME
dump_toc - a tool
=cut
package bin::dump_toc;
use warnings;
use strict;
use lib 'lib';
use dtRdr::Book;
use dtRdr::Plugins;
dtRdr::Plugins->init;
local $SIG{__WARN__};
sub main {
my (@args) = @_;
my $freezefile;
my $dumpfile;
my $yamlfile;
my $syckfile;
if(@args > 1) {
require Getopt::Helpful;
my $hopt = Getopt::Helpful->new(
usage => 'CALLER [options] <bookfilename>',
['freeze=s', \$freezefile, '<freezefile>', 'file to make frozen version'],
['yaml=s', \$yamlfile, '<yamlfile>', 'file to make YAML dump'],
['syck=s', \$syckfile, '<yamlfile>', 'file to make YAML dump'],
['dump=s', \$dumpfile, '<dumpfile>', 'file to make Data::Dumper dump'],
'+help',
);
$hopt->Get_from(\@args);
if($freezefile) { require Storable; }
}
my $uri = shift(@args);
(-e $uri) or die 'no $uri';
my $book = dtRdr::Book->new_from_uri($uri);
$book or die;
warn $book;
if($freezefile) {
open(my $fh, '>', $freezefile);
warn "freezing now";
#print $fh $book->toc->freeze;
print $fh Storable::freeze($book->toc->_unhook);
}
elsif($dumpfile) {
require Data::Dumper;
open(my $fh, '>', $dumpfile);
warn "freezing now";
my $dump;
my $toc = $book->toc->_while_gutted(sub {
my $dumb = shift;
$dump = Data::Dumper::Dumper($dumb);
});
warn "and dumping";
print $fh $dump;
}
elsif($yamlfile) {
require YAML;
open(my $fh, '>', $yamlfile);
warn "freezing now";
my $yaml;
my $toc = $book->toc;
$toc->_while_gutted(sub {
my $dumb = shift;
$yaml = YAML::Dump($dumb);
});
warn "and dumping";
print $fh $yaml;
}
elsif($syckfile) {
require YAML::Syck;
open(my $fh, '>', $syckfile);
warn "freezing now";
my $yaml;
my $toc = $book->toc;
$toc->_while_gutted(sub {
my $dumb = shift;
$yaml = YAML::Syck::Dump($dumb);
});
warn "and dumping";
print $fh $yaml;
}
else {
print join("\n", $book->toc->_dump), "\n";
}
}
package main;
if($0 eq __FILE__) {
bin::dump_toc::main(@ARGV);
}
# vi:ts=2:sw=2:et:sta
my $package = 'bin::dump_toc';