Revision history for Perl extension Net::Gopher.

0.95 - Fixed the test server and added some major POD updates.
0.94 -

       (1) 
           The Net::Gopher::MenuItem accessor methods are now  get/set  instead
           of just being get.

       (2) 
           Added the Net::Gopher::Response  has_block()  method  to  see  if  a
           particular block is in the response.

       (3) 
           You can now prepend dashes to the front of all named parameters  and
           put underscores in them too.

       (4) 
           The test  suite  tests  the  Net::Gopher::Response::InformationBlock
           methods much better.

0.93 -

       (1) 
           The information block method attributes_as_hash() has  been  renamed
           get_attributes().

       (2) 
           Added the new information block method get_attribute() that  returns
           a single block attribute, and has_attribute() to check to see  if  a
           block has a particular attribute.

       (3) 
           Added the Net::Gopher::Response get_block()  method  to  retrieve  a
           single block.

       (4) 
           Infromation block methods warn and die much more.

0.92 - (Gone from CPAN?)

       (1) 
           Build.pl: you can  use  Module::Build  to  install  now  instead  of
           MakeMaker.

       (2) 
           A new, much improved, much enhanced test  suite  complete  with  its
           own (almost) functional server.

       (3) 
           Net::Gopher now fully supports  (experimentally)  Unicode.  Selector
           strings,  attributes,  data  blocks--everything--can   now   contain
           multi-byte UTF-8 characters.

       (4) 
           Net::Gopher now dies and warns much, much more and with  much,  much
           more detailed messages (using carp() and croak(), but this  behavior
           can be controlled with the options listed next).

       (5) 
           Named parameters are now case-insensitive.

       (6) 
           The   Net::Gopher   constructor   takes   several   new   arguments:
           WarnHandler, DieHandler, Silent, and LogFile.

       (7) 
           The request() method option "Callback" has been renamed "Handler".

       (8) 
           User-defined response handler subs  for  the  request()  method  now
           receive the following arguments in this order: the  raw,  unmodified
           buffer; the request object; the response object.

       (9) 
           Net::Gopher::Response   has   three   new   methods:   error_code(),
           error_admin(), and error_message() to parse Gopher+ errors.

       (10) 
           The extract_menu_items() method has been renamed extract_items().

       (11) 
           The    extract_administrator()    method    has     been     renamed
           extract_admin(),  and   extract_ask_queries()   has   been   renamed
           extract_queries().

0.90 - First beta release:
       (1) 
           Added     a     new     class     for     menu     items      called
           Net::Gopher::Response::MenuItem  with  methods   to   retrieve   the
           tab-delimited fields of a menu  item,  convert  a  menu  item  to  a
           Gopher URL,  and  convert  the  item  into  a  request  object.  The
           as_menu() has been renamed extract_menu_items(), and it now  returns
           a list containing Net::Gopher::Response::MenuItem objects  for  each
           item.

       (2) 
           item_blocks(), directory_blocks(), and as_blocks(),  are  all  gone,
           for good. The names were never that descriptive or well-thought  out
           in the first place, and their  functionality  was  easily  condensed
           into one new method: get_blocks().

       (3) 
           The   Net::Gopher::Response::Blocks   class   has    been    renamed
           Net::Gopher::Response::InformationBlock. In  addition,  its  methods
           have been renamed, removed, and replaced. Where possible,  they  now
           return a list of elements, or the first element from the  list.  The
           old hash-based behavior was long since made  antiquated  by  changes
           to  the  info  block  code.   Also,   this   class   now   overloads
           stringification so block objects can be treated  as  simple  scalars
           containing block values.

       (4) 
           The items and their attribute  information  block  objects  are  now
           stored internally as an array of arrays.

       (5) 
           Added the as_xml() method to Net::Gopher::Response, which  generates
           XML  for  item/directory  attribute  information  requests,   Gopher
           menus, and other non-menu text items.

       (6) 
           A new module, Net::Gopher::Constants has been added,  which  exports
           on demand constants for every known item type, constants to  compare
           against the value  returned  by  request_type(),  and  constants  to
           compare against the value returned by status().

       (7) 
           Added the as_url() method to Net::Gopher::Request,  which  generates
           a Gopher URL using the request object.

       (8) 
           The  Net::Gopher::Response  as_string()  method  has  been   renamed
           raw_response(). Even if as_string() is the current president set  by
           LWP and others, I don't think it's descriptive enough.
       
       (9) 
           The attribute information block methods  as_string()  and  content()
           have been replaced with raw_value() and value() respectively, and  a
           new method, name(), has been added.
       
       (10) 
           %GOPHER_ITEM_TYPES  and  %GOPHER_PLUS_ITEM_TYPES  have  been  merged
           into %ITEM_DESCRIPTIONS.

0.80 - Many more POD changes.

0.78 - POD changes in each module.

0.77 - This version incorporates a wealth of new functionality into
       Net::Gopher, including:
       (1)
           A new class, Net::Gopher::Request, is used to encapsulate  requests.
	   This class has accessor methods to modify every relevant aspect of a
	   Gopher/Gopher+ request, as well as named constructors you can import
	   for each type of request.

       (2)
           The Net::Gopher connect() and disconnect()  methods  are  gone.  The
           request() method now takes care of connecting and  disconnecting  by
           itself.

       (3)
           The request() method now takes a Net::Gopher::Request object as  its
           first argument. In addition, it  takes  the  parameters  "File"  and
           "Callback," with the first specifying  a  file  where  the  response
           content should be outputted to, and the other, a reference to a  sub
           that will be called as the response is collected.

       (4)
           The request_url() method is gone.

       (5)
           Net::Gopher  now  has  the  Net::Gopher::Request  shortcut   methods
           gopher(), gopher_plus(), item() and directory().

       (6)
           _get_buffer() is gone, replaced with _read() to do all reading,  and
           a new function, _write(), used to do all writing.

       (7)
           The code to generate the request string from the parameters or  from
           a URL has been moved to Net::Gopher::Request.

       (8)
           All   response   content-modifying   code   has   been   moved    to
           Net::Gopher::Response,    which    means    _unescape    is    gone.
           Net::Gopher::Response now has the  methods  _convert_newlines()  and
           _clean_period_termination() to do that work.

       (9)
           Net::Gopher::Response  now  has  the   convenient   is_gopher_plus()
           method and the is_text() method.

       (10)
           Added check_params()  routine  to  Net::Gopher::Utility.  This  will
           ensure that param names are not misspelled, raising an error if  the
           user supplies an invalid parameter name when calling a method.

0.57 - Added new Net::Gopher::Response::Blocks class and moved all block  value
       manipulation methods  to  there.  All  newlines  are  now  converted  to
       standard Unix linefeed characters in the response content.

0.47 - Removed  the  ADMIN,  ASK,  INFO,  and  VIEWS  block  parsing  from  the
       _parse_blocks() method and  put  them  into  separate  as_admin_block(),
       as_ask_block(),    as_info_block(),    and    as_views_block()   methods
       respectively. Also, changed the key for  Gopher+  strings  in  the  hash
       returned by as_menu() from 'gopher+' to 'gopher_plus'.

0.43 - You can now specify a which item  you  want  for  directory_blocks()  by
       its selector, hostname, port, etc., in addition to its number. Fixed the
       typo in request_url() for the default scheme, and changed  request_url()
       to die when you specify an invalid scheme.

0.40 - The Net::Gopher::Response attribute information methods now  also  parse
       Gopher+ +ASK blocks. The is_menu() method  is  now  far  more  accurate.
       Also, request() now defaults to item type 1 (menu) if you don't  specify
       the 'Type' named parameter.

0.37 - Added  named  parameters  to  the  Net::Gopher  constructor: BufferSize,
       GopherPlus, and Debug. Added  debugging,  which  causes  Net::Gopher  to
       print out various diagnostic messages at different times. Also  added  a
       corresponding  debug()  method.  The  POD  has  also  been substantially
       improved. Also refractored request(), and improved the error checking.

0.35 - Improved the error checking  in  request().  Also,  request()  now  more
       efficiently handles Gopher+ responses  with  content  lengths (a  number
       denoting the length of the response in bytes as opposed to -1 or -2).

0.34 - The request() method now removes the period on a line by itself  in  the
       response content if Type is supplied and isn't 0  or  1.  Also,  periods
       escaped by adding and extra period (e.g., '..' instead of '.'), are  now
       unescaped in the response content.

0.33 - The request_url() now properly returns a Net::Gopher::response object if
       if fails to connect to the server. Also fixed a typo in  the  POD  which
       had (until now) gone unnoticed.

0.32 - Added new is_menu() and is_blocks() methods.

0.30 - Removed as_block() and replaced it with item_blocks(), and added the new
       directory_blocks()  and  as_blocks()  methods.  Also   refractored   the
       request_url() method.

0.27 - Refractored  request()  and   removed   the  _get_gopher_response()  and
       _get_gopher_plus_response() methods.
