Eric Wilhelm > dotReader-v0.11.2 > dtRdr::Book::ThoutBook_1_0::Base

Download:
dotReader-v0.11.2.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  2
Open  1
View/Report Bugs
Source  

NAME ^

dtRdr::Book::ThoutBook_1_0::Base - shared stuff

SYNOPSIS ^

Constructor ^

new

  my $book = dtRdr::Book::ThoutBook_1_0_subclass->new();

Methods ^

set_id

URI-escapes the id because Thout1.0 books didn't have a proper ID.

  $book->set_id($id);

_id_escape

  $id = $self->_id_escape($id);

set_base_dir

  $book->set_base_dir($dir);

find_toc

Overrides the dtRdr::Book method.

This is needed because Thout 1.0 implements a showpage instruction (a pseudo goto) and because loading a render="false" *root* node renders the first child.

  my $toc = $book->find_toc($id);

set_xml_content

  $self->set_xml_content($string);

setup_metadata

  my $meta = $self->setup_metadata(\%propsheet, \%xml_props);

load_properties

  my %props = $self->load_properties;

propify

Transform parsed info into properties hash.

  my %propinfo = $self->propify(%parse_info);

finish_load

  $self->finish_load;

reduce_word_scope

Returns a Range with the appropriate TOC node and start/end positions (in cache-coordinates.)

  my $range = $book->reduce_word_scope($node, $start, $end);

In our case, this involves checking each node along the way to ensure that we properly account for holes (renderchildren=0s' children and render=0s are holes.)

_RP_to_NP

Translate a rendered position to a node position.

  $self->_RP_to_NP($node, $pos);

_NP_to_RP

Translate the node position to a rendered position.

  my $render_pos = $self->_NP_to_RP($node, $node_position);

_node_holes

Gets the holes (nonrendered children) for a node. @holes will be a list of [$global_start, $global_stop] array-ref pairs.

  my @holes = $self->_node_holes($node);

Node Relations ^

Our rendered structure does not map directly onto the TOC structure.

We have to handle:

showpage - does nothing except give a different response for find_toc() -- therefore we ignore it in all node relations

render=0 - trim yourself

render="parent" - trim yourself

render_children=0 - trim all your children

root node - is a switcharoo to its first child when render=false

descendant_nodes

  my @nodes =  $book->descendant_nodes($node);

  render_children=0 - stop descending
  render=0 - bye
  showpage - not an issue

ancestor_nodes

Returns the node's ancestors, taking into account whether this node or one of it's parents is a hole.

  my @nodes =  $book->ancestor_nodes($node);

TOC handling ^

build_toc

Run through a sax parse to build-up a TOC tree and memorize some byte offsets and character positions, extract package info, file your taxes, etc.

  my %info = $self->build_toc;

Returns a hash of properties/metadata.

_get_toc_handlers

Gets the SAX parser handler subs.

  my $data = $self->_get_toc_handlers(%options)

  $parser->setHandlers(%{$data->{handlers}});
  ...
  return($data->{done}->());

Options: none for now

_load_cached_toc

  $self->_load_cached_toc($filename);

whitespace_before

  $book->whitespace_before($node);

get_content_by_id

Get the content for the $id (ala find_toc().)

  my $content = $book->get_content_by_id($id);

get_content

Gets trimmed, wrapped, and NBH'd content.

  my $content = $book->get_content($toc);

get_trimmed_content

  my $xml = $self->get_trimmed_content($toc);

_build_trim_plan

  @plan = $self->_build_trim_plan($node);

_append_trim_plan

  $self->_append_trim_plan($start, $stop, \@plan);

get_copy_content

  $book->get_copy_content($toc);

get_raw_content

  $book->get_raw_content($toc);

HTML formatting ^

TODO rework these

_fancy_html_lead

  $content = $self->_fancy_html_lead;

_html_lead

  $self->_html_lead;

_html_tail

  $self->_html_tail;

TOC-related Methods ^

These methods contain the rendering-order logic for this type of book. Goto and redirect constructs make this slightly different than the purely structural ordering of the TOC object.

next_node

Return the TOC object for the (linearly) next node. If there is none, returns undef.

  my $next = $book->next_node($toc);

prev_node

Return the TOC object for the (linearly) previous node.

  my $prev = $book->prev_node($toc);

searcher

Returns a subref for the quicksearch (first-pass.) See dtRdr::Search::Book for details.

  my $subref = $book->searcher($regexp);

AUTHOR ^

Eric Wilhelm <ewilhelm at cpan dot org>

http://scratchcomputing.com/

COPYRIGHT ^

Copyright (C) 2006-2007 Eric L. Wilhelm and OSoft, All Rights Reserved.

NO WARRANTY ^

Absolutely, positively NO WARRANTY, neither express or implied, is offered with this software. You use this software at your own risk. In case of loss, no person or entity owes you anything whatsoever. You have been warned.

LICENSE ^

The dotReader(TM) is OSI Certified Open Source Software licensed under the GNU General Public License (GPL) Version 2, June 1991. Non-encrypted and encrypted packages are usable in connection with the dotReader(TM). The ability to create, edit, or otherwise modify content of such encrypted packages is self-contained within the packages, and NOT provided by the dotReader(TM), and is addressed in a separate commercial license.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

syntax highlighting: