07-Jul-2000           Marek Rouchal      <marek@saftsack.fs.uni-bayreuth.de>
 Version 1.16
 + included two subs suggested by Tim Jenness <t.jenness@jach.hawaii.edu>
   in Pod::Find (pod_where and contains_pod) and included a test in
 + updated Makefile.PL, CHANGES and TODO

 03-Jul-2000           Marek Rouchal      <marek@saftsack.fs.uni-bayreuth.de>
 Version 1.15
 + introduced -quiet option for Pod::Checker to suppress diagnostic
   output when Pod::Checker is used to eat POD and output text.
 + improved documentation in Pod::Checker
 + improved code coverage of t/pod/poderrs.t
 + updated TODO

 04-Jun-2000           Marek Rouchal      <marek@saftsack.fs.uni-bayreuth.de>
 Version 1.14
 + fixed wrong value in Pod::Parser concerning whitespace lines
 + added check in podchecker whether argument is a directory
 + introduce additional warning level: this suppresses the complaints
   about unescaped <>, but the check is enabled when the wrning level is
   increased: podchecker -warn -warn
   adapted documentation appropriately
 + Pod::Hyperlink now parses L<open(2)> again, but gives a warning. The
   calling programs have to check themselves for what to do with pages
   like open(2).
 + Changed POD of several modules so that they conform to podchecker :-)

 14-Mar-2000           Marek Rouchal      <marek@saftsack.fs.uni-bayreuth.de>
 16-Mar-2000           Brad Appleton                   <bradapp@enteract.com>
 Version 1.13
 + Improved support of Win32 and OS/2 platforms by using File::Spec in
 + strip .bat and .cmd on Win32 and OS/2, respectively
 + removed all tabs from Pod::Find and reviewed POD documentation
 + finally fixed t/pod/ptestpchk.pl to ignore any and all non-word-chars
   in pathnames. No more special casing filenames for MacOS, NT, VMS, etc
   just for the sake of passing the t/pod/poderrs.t test!

 11-Mar-2000           Brad Appleton                   <bradapp@enteract.com>
 Version 1.12
 + Sync-up with patches from the 5.6 core distribution
 + Require perl5.005 instead of 5.004 now that 5.6 is almost out
 + Removed the t/pod/xtra tests from the distribution
 + Ignore [\n\r] when looking for non-empty blank lines in Pod::Parser
 + Added VMS file-unixification to test scripts

 23-Feb-2000           Brad Appleton                   <bradapp@enteract.com>
                       Marek Rouchal      <marek@saftsack.fs.uni-bayreuth.de>
 Version 1.11
 + Fixed Pod::Parser warnings about non-empty blank lines in code
 + added note about extraction capabilities of Pod::Checker to README
 + added collection of index entries X<...> (Pod::Checker)
 + extended internal hyperlink node uniqueness check (Pod::Checker)
 + added documentation in Pod::Checker for built-in methods
   (nodes, hyperlinks, X<...> entries) 
 + minor cleanups (find_node in Pod::Cache::Item) and changed priority
   in parsing L<...> (Pod::ParseUtils)

 22-Feb-2000           Brad Appleton                   <bradapp@enteract.com>
 Version 1.10
 + bump up the version number to avoid confusion with a short-lived
   version of 1.093-beta

 21-Feb-2000           Brad Appleton                   <bradapp@enteract.com>
                       Marek Rouchal      <marek@saftsack.fs.uni-bayreuth.de>
 Version 1.093
 + Pod::Parser now warns about non-empty blank lines matching /^\s+$/
 + got rid of special handling of '=>' and '=>' inside C<..> and instead
   implemented the more general rules posted by Larry Wall on P5P allowing
   /[A-Z]<...>/ and /[A-Z]<[<:]\s+...\s+[:>]>/ to deal with things like
   embedded '->' and '=>' using whitespace, as in: C<< <=> >> and I<< <> >>.
 + added proposals by Wolfgang Laun to Pod::Checker (more errors and 
    - removed qr// so that code runs with Perl 5.004 
    - POD files can include '.' in the name.
    - L<DBI(3)> now causes an error, correct is: L<DBI>

 03-Jan-2000           Marek Rouchal      <marek@saftsack.fs.uni-bayreuth.de>
 Version 1.092
 + added the Pod::Cache and Pod::Cache::Item code to Pod::ParseUtils.
 + modified the README file.

 15-Dec-1999           Marek Rouchal      <marek@saftsack.fs.uni-bayreuth.de>
 Version 1.091
 + cleaned up Pod::Checker, especially documentation, updated test
 + moved helper code to new module Pod::ParseUtils, added documentation
 + added Pod::Find, along with a test

 22-Oct-1999           Marek Rouchal      <marek@saftsack.fs.uni-bayreuth.de>
 Version 1.090
 + Added several additional checks to Pod::Checker
 + Pod::Checker detects files with no POD
 + Pod::Checker prints warnings about inproper style
 + Modified podchecker to use the -warnings option and the "empty POD"
 + Added Pod::Hyperlink (internal in Pod::Checker for now) that parses
   the L<> sequence into alttext, page and section
 + Updated documentation
 + Started adding callbacks so that Pod::Checker can be used also for
   single-pass POD translators in the future

 25-Sep-1999           Brad Appleton                   <bradapp@enteract.com>
 Version 1.085
 + Added a section on tree-based parsing to the PODs for Pod::Parser
 + Added '-expand_text" callback-option to Pod::Parser::parse_text()
 + Added ability to specify contents for Pod::InteriorSequence::new
 + Added the notion of "parse-options" to enable/disable certain
   parsing behaviors  (see the section on "PARSING OPTIONS"
   in the documentation for Pod::Parser)
 + Added Pod::Parser::parseopts()
 + Added the '-want_nonPODs' parse-option
 + Added the '-process_cut_cmd' parse-option
 + Fixed the '*child2parent*' functions in InputObjects so that they
   dont invoke "can" or "isa" for unblessed scalar-refs.

 03-Sep-1999           Brad Appleton                   <bradapp@enteract.com>
 Version 1.084
 + Added Russ Allbery's Pod::PlainText re-write
 + Added some tests contributed by Russ Allbery
 + Fixed Makefile.PL to install the supplied scripts
 + Updated copyright messages
 + Added an error/warning callback function to Pod::Parser. When specified,
   it will call the user-provided function instead of "warn" when printing
   error messages (This makes it easier for things like Pod::Checker to
   capture and/or redirect error output). See Pod::Parser::errorsub().

 28-Jun-1999           Brad Appleton                   <bradapp@enteract.com>
 Version 1.083
 + Fixed problem with not defaulting to STDIN in parse_from_filehandle
   (thanks to Russ Allbery for the patch)
 + Fixed problem with != and -= (and <op>= in general) processing
   inside of C<...> (thanks to Russ Allbery for this patch too)

 28-Apr-1999           Brad Appleton                   <bradapp@enteract.com>
 Version 1.082
 + Fixed portability problems with Makefile.PL on MSWin32 systems
   (thanks to Jan Dubois for showing how to do this!)

 08-Apr-1999           Brad Appleton                   <bradapp@enteract.com>
 Version 1.081
 + Fixed warning message in Pod::Parser::parse_text when $expand_seq is undef.
 + Fixed another problem with ignoring the contents of an interior sequence
   if it was nothing but ')' inside the angle brackets (e.g. C<0>).
 + Moved test files under t/ to t/pod, and added a subdirectory t/pod/xtra
   for the extra tests that involve "included" files and processing its
   own source (the "xtra" files are *not* part of what comes with the CORE
   in Perl 5.006)
 + Munged the Makefile.PL to be able to set TEST_FILES to t/pod/*.t and
   t/pod/xtra/*.t (if it exists). This requires File::Spec so now you
   need either File::Spec or Perl 5.005 or later to install this.

 01-Mar-1999           Brad Appleton                   <bradapp@enteract.com>
 Version 1.08
 + Fixed a bug in obtaining options-hash in pod2usage()
 + Modified test suite & tools to run as expected on more platforms
   (the .t scripts now do a zero-exit if $ENV{ACTIVE_HARNESS} is set)
 + Some more portability fixes for searching file-paths in Pod::Usage
   (thanks to Chris Nandor)
 + Changed the distribution directory structure a little bit. Instead
   of all the scripts and modules at the top level directory, the scripts
   are now in the 'scripts/' subdirectory and the modules are now in the
   'lib/Pod/' subdirectory.

 16-Jan-1999           Brad Appleton                   <bradapp@enteract.com>
 Version 1.07
 + Added Pod::Checker and podchecker.PL
 + Fixed line-counting errors in Pod::Parser::parse_from_filehandle()
 + Added raw_text method for Pod::ParseTree
 + Documented optional hash-ref arg to Pod::Parser::parse_text and replaced
   '-expand' with '-expand_seq' and '-expand_ptree'
 + parse_text now has sequences point to the parents they are nested inside
   of as soon as they are created (instead of after they are appended to
   the parent, which may occur *after* expansion)
 + Added the regression test-suite to the distribution in the t/ subdirectory.
   Its not very exhaustive, but its a start.
 + Now uses File::Spec, which is bundled with perl 5.005 and later, but if
   you have perl 5.004 you may need to download File::Spec from CPAN

 09-Nov-1998           Brad Appleton                   <bradapp@enteract.com>
 Version 1.061
 + Minor additions to v1.06
   * Pod::InteriorSequence::nested was buried inside POD directives.
     I had to add the `=cut' between the subroutine docs and its code.

   * Removed some of the documentation for things in Pod::Parser and
     Pod::Input object that the user probably doesnt need to know.

   * Split out "CHANGES" and "TODO" into separate files from the README

 22-Oct-1998           Brad Appleton                   <bradapp@enteract.com>
 Version 1.06
   * Pod::InputObjects::ParseTree object ADDED. This object corresponds
     to a parse-tree of parsed pod paragraph text. Every node in the
     parse-tree is either a text-string, or a Pod::InteriorSequence
     that has yet to be expanded.

   * Pod::Parser::parse_text ADDED!!! This routine parses some pod input
     text and returns a parse-tree as the result. This is VERY useful for
     people who cant rely on strict bottom-up expansion of interior
     sequences. Now they can get the parse-tree and expand sequences
     themselves in whatever order they require.

   * Pod::Parser::interpolate PARAMETER CHANGE, it *no* *longer* takes a
     regexp as its second parameter!!!  It used to accept a regular
     expression signifying the end of parsing conditions and pass it to
     _interpolate_bottom_up.  It now takes a line-number as the second

   * Pod::Parser::_interpolate_bottom_up has been *REMOVED*!! Pod::Parser
     no longer uses a recursive routine to parse interior sequences.

   * The following Pod::Parser subroutines now take the current line-number
     as an ADDITIONAL PARAMETER: command, textblock, verbatim, interpolate,
     preprocess_line, preprocess_paragraph, parse_paragraph.

   * REMOVED the Pod::Parser::total_lines method

   * ADDED the nested() method to Pod::InteriorSequence

   * REMOVED the following methods from Pod::InputSource: num_lines,
     file_line, and ADDED the method filename instead.

   * REMOVED the _CMD_SEQUENCES data-field and sequences() method from
     Pod::Parser.  If you need to know the parent of a nested interior
     sequence, then invoke the nested() method of that sequence.

   - Added the "-pathlist" options to Pod::Usage and pod2usage
   - Made Pod::Usage a tad more portable for DOS and MSWin32
   - Got rid of a rogue '#' in podselect that was in front of a needed
     "use" statement.
   - Fixed a bug in Pod::Parser::_interpolate_bottom_up that made it stop
     interpolating interior sequences after the first line of a paragraph.

 12-Feb-1998           Brad Appleton                   <bradapp@enteract.com>
 Version 1.05
 - Fixed a bug in Pod::Usage (it was using an obsolete name to access an
   attribute instead of using the new access method).
 - Removed the use of $`, $&, and $' throughout all modules in this package.
 Version 1.04
 22-Dec-1997           Brad Appleton                   <bradapp@enteract.com>
 Version 1.04
   * Created a Pod/InputObjects.pm and moved the details of input streams
     and interior sequences into appropriately named objects defined
     in this file.
   * Pod::PlainText now handles =for and =begin/=end
   * Added the curr_headings() method to Pod::Select
   * Fixed a few very simple but very stupid errors with improper version
     numbers in the .pm files.
   * Pod::PlainText now inherits from Pod::Select (instead of Pod::Parser)
     because it needs to use the curr_headings() method.

 24-Sep-1997           Brad Appleton                   <bradapp@enteract.com>
 Version 1.03 (major revision)
   * If a POD directive begins with '==' instead of '=', then that line
     is considered a paragraph by itself (you dont need a blank line
     before you begin the next paragraph). NOTE that this only works
     for the *beginning* of a paragraph!! If the '==' begins a line
     in the *middle* of a paragraph, then it receives no special treatment
     and is not considered to be the beginning of a new POD directive.
     If this added convenience seems confusing at first, just remember the
     following phrases:
        "LESS IS MORE" -- LESS equals signs need MORE newlines!
        "MORE IS LESS" -- MORE equals signs need LESS newlines!
     As long as you dont forget that the '=' on a POD directive always
     comes *before* the newline that ends the paragraph (so the '=' is
     associated with the first word of each phrase) you should be fine.

   * The '=pod' command *IS* *NOW* *PASSED* TO Pod::Parser::command()!

   * ALL INSTANCE DATA FIELDS HAVE BEEN RENAMED! Rather than using the new
     field names, you should use the newly provided field access methods to
     get/set private instance data. These are as follows:

         Accessor Method           Old Field Name
       -------------------      -------------------
         cutting()                   CUTTING
         output_file()               OUTFILE
         output_handle()             OUTPUT
         input_file()                INFILE
         input_handle()              INPUT
         total_lines()               LINE
         total_paragraphs()          PARAGRAPH
         input_streams()             INPUT_STACK
         top_stream()                INPUT_TOP
         sequence_commands()         SEQUENCES

   * The last parameter passed to the command() and interior_sequence()
     methods has changed. Please see the documentation!

   * The stack of interior sequences being processed is NO LONGER an
     array of text-strings. It is now an array of hash-refs!

   * Renamed my version of Pod::Text to Pod::PlainText to avoid some nasty
     problems it caused for CPAN.

   * The method Pod::Parser::interpolate() NO LONGER MODIFIES its first
     argument (which means the argument doesnt have to be an l-value)!
     This method is now a wrapper which invokes the new method named
     _interpolate_bottom_up(). This new method *is* recursive and *does*
     modify its first argument.

   * _interpolate_bottom_up() contains a small but ugly *hack* to allow
     '->' and '=>' to remain untouched inside of C<...> (without having
     to use the E<gt> escape sequence) PROVIDED THAT there is something
     to the left of it OTHER THAN another '-' or '='.

   * The 'select()' and 'want_section()' methods have moved from Pod::Parser
     into Pod::Select.

   * All callback and callback-related methods have moved into the new
     module Pod:::Callbacks (which is NOT YET FINISHED for this release).

 22-May-1997           Brad Appleton                   <bradapp@enteract.com>
 Version 1.02
 - Added the ability to register callbacks for =xxxx paragraphs and other
   paragraphs. This means that one could (for example) register a temporary
   callback after =item is seen to handle the very next paragraph and then
   unregister itself. The methods added were add_callbacks and rm_callbacks.
   Also, a private method invoke_callbacks was added to go about the business
   of invoking callbacks. The callback mechanism Ive implemented is extremely
   flexible and also way more complex than Id like (and hence requires lots
   more documentation than I would like). Also, the interfaces to add_callbacks
   and rm_callbacks tries to be very flexible in the number and type of
   arguments you can give it. This is probably too flexible to the point
   of being too difficult to figure out how to use. My callback mechanism
   is very powerful but I think the interface to it is lousy and far too
   complex. I am desperately in search of a way to make it smaller and
   simpler without removing too much functionality. If you have any ideas
   about how to do this PLEASE SHARE THEM WITH ME!

 - Got rid of =pod pragmas. P5P has decided to use =for, and =begin/=end
   instead and Ill just handle those like regular commands. NOTE THAT THIS

 - Expanded the documentation for Pod::Usage to be (hopefully) a little less
   confusing regarding the various different invocation styles. Many thanks
   to Steven McDougall <swmcd@world.std.com> for spending many hours of
   assistance toward this goal.

 - Fixed Pod::Text to use the proper indentation for nested '=item' lists
   and to handle consecutive =item paragraphs. (Thank you to Diab Jerious
   <djerius@cfa.harvard.edu> for helping me with this one.)

 - Fixed a bug in Pod::Parser that was causing the argument to =over to be
   a newline instead of the empty string when no "over count" was given.

 05-Sep-1996           Brad Appleton                   <bradapp@enteract.com>
 Version 1.01
 - Commented out "use diagnostics" in all modules
 - Made use of "use vars"
 - Added the instance variables $self->{INPUT_STACK} and $self->{INPUT_TOP}
   to Pod::Parser and made it possible to use the parse_from_file() and
   parse_from_filehandle methods() to process "included" files (in addition
   to normal pods that dont "include" other files).
 - Added MSG option/key to pod2usage().

 19-Aug-1996           Brad Appleton                   <bradapp@enteract.com>
 Version 1.00 (first "official" release):
  - Renamed Pod::Filter to Pod::Parser at Kenneth Albanowski's recommendation.
  - Moved podselect() into its own separate module Pod::Select to avoid
    unnecessary namespace pollution in Pod::Parser.
  - Renamed several methods and added another preprocessing method in
  - Pod::Parser now keeps track of the current line and paragraph number
    and the current input and output file names.
  - Fixed parse_from_filehandle() to recognize a line matching /^\s+$/ as a
    paragraph terminator.
  - Included Pod::Usage and Pod::Text as part of the PodParser distribution
    rather then packing and releasing each module separately.
  - Removed pod2text.PL and added pod2usage.PL

 07-Aug-1996           Brad Appleton                   <bradapp@enteract.com>
 Initial release of version 0.01 to garner some feedback. This release was
 actually three separate "initial" releases of Pod::Parser, Pod::Text, and
 Pod::Usage which were originally named Pod::Filter, Pod::PlainText, and
 Pod::Usage (respectively).