The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for Perl extension Prog.

0.01  Tue Nov 22 21:54:37 2005
	- original version; created by h2xs 1.22 with options
		-XA -n Prog

0.02	POD fixes
        added merge() add() and mv() methods to S::P::Index
          and t/3merge.t and t/4add.t
        added 2 more test docs
        added format() accessor to S::P::Index
        changed S::P::I to use Class::Accessor::Fast
          since we don't need to override get/set
        S::P now always inits an indexer even if fh=>0
        added private _index_methods to S::P


0.03    * removed all mentions of SWISH3
        * test indexes are removed as part of 'make clean'
        * switched from Data::Dumper to Data::Dump
        * added new SWISH::Prog::Object example
        * fixed bug in SWISH::Prog::Headers to test defined() 
          rather than simply eval true/false
        * fixed bug in SWISH::Prog::DBI with accepting DBI handle
          in init()
        * changed to using IO::All instead of File::stat and File::Slurp
          for better UTF8 support
        * changed default order of init() and init_indexer() to work
          more intuitively. Fixed S::P::DBI accordingly.
          To prevent an indexer from being init'd (as in 0.02) simply
          override init_indexer() and don't call SUPER::init_indexer().
        * new feature: SWISH::Prog::Find
        * renamed meta() to table_meta() in SWISH::Prog::DBI for clarity.
        * S::P::Config now always handles config params as arrays
        * Config metanames() propertynames() and propertynamesnostripchars() 
          are no longer available 
        * S::P::Config now requires IO::All and Config::General; added read2() method.
        * new feature placeholder: SWISH::Prog::Spider
        
0.04    * S::P::DBI no longer calls disconnect() on db handle in DESTROY
        * fixed bug with auto-defining metanames
        * S::P::Config always returns arrayref on directive method calls
        * use MIME::Types instead of File::Type
        * S::P::Find now uses File::Find instead of Path::Class::Iterator
        * S::P::Object obj_filter() must return an object of some kind
        * S::P::Object will not dump() scalar strings, thus avoiding extra quotes
        * S::P::Config added stringify() method and reverted from IO::All to File::Slurp
        * S::Prog added elapsed() method
        * S::Prog new() verbose now defaults to 1

0.05    * S::P::Object now uses JSON or YAML to serialize values instead of Data::Dump
          This change is sync'd with SWISH::API::Object 0.0.6

0.06    * S::P::Object now defers to explicit 'config' passed in new().

0.07    * S::P::Object iterator now uses more idiomatic while/next algorithm.

0.08    22 Nov 2007
        * added S::P::Mail class and example swishmail.pl script
        * sync all $VERSION vars to same value
        * allow for non-standard docclass names


0.20    23 April 2008
        * complete rewrite of the API for Swish3 development

0.21    31 Oct 2008
        * fix tests to skip correct numbers if swish-e not installed
        * change to JSON::XS and make json default format in Aggregator::Object
        * add perl_to_xml() in Utils
        * change t/04 to manually create dirs at test time

0.22    10 Dec 2008
        * added support for SWISH::Prog::DBI
        * use SWISH::3 for slurping files, if available.
        * fix bug in SWISH::Prog::Utils->perl_to_xml where hash refs were not getting
          tagged.

0.23    11 Dec 2008
        * properly clean up temp Config files

0.24    20 Jan 2009  (Happy Obama Day!)
        * add base Searcher, Results and Result classes
        * refactor QueryParser to use Search::QueryParser::SQL
        * flesh out the InvIndex::Meta class, adding XML::Simple dependency
        * IMPORTANT: rename Native classes to match naming convention
 
0.25    26 Jan 2009
        * added more features to example/swish3
        * add missing test file to MANIFEST
        * tests clean up after themselves wrt swish.xml header files

0.26    26 Feb 2009
        * fix off-by-one error in skip test count in t/03-object.t

0.27    28 Sep 2009
        * make QueryParser and Query part of the official install,
          even though there are still TODO items
        * add all_metanames() method to Config
        * refactor to use Search::Tools and Rose::ObjectX::CAF
          instead of Class::Accessor::Fast

0.28   30 Sept 2009
        * add some missing calls to SUPER::init()

0.29   8 Nov 2009
        * add strip_plural option to Utils->perl_to_xml()
        * add count attribute to arrayref values of hashrefs in perl_to_xml()
        * fix method/param name strictness bug revealed by Rose::ObjectX::CAF 0.03. 
          This mostly required internal param name changes to official method names.

0.30   29 Nov 2009
        * change KinoSearch to KSx in implementation registry
        * fix bug in base Searcher where InvIndex class was not loaded.

0.31   1  Dec 2009
        * POD fixes
      
0.32   12 Dec 2009
        * Config->ver2_to_ver3() method now supported.
        * fix bug in Prog.pm to allow Config passed in aggregator
          and Indexer passed in aggregator
        * removed dependency on Class::Accessor for Config.pm
        * refactor internal handling of Config object so there is only ever one
          per Prog instance
        * refactor internal handling of Config to support SWISH::3::Config
        * FileRules support now in Aggregator::FS

0.33    02 Jan 2010
        * fix bug where SWISH::3->slurp was being called with out binmode flag
          and .gz files were getting their NUL bytes stripped.
        * add test_mode feature (set with SWISH_TEST env var)
        * fix some memory leaks
        * fix JSON::XS dependency (JSON required, not JSON::XS).

0.34    07 Jan 2009
        * fix mem leak test to include only those outside our control.
        * add version() to SWISH::Prog::Doc to pick header style per instance.

0.35    09 Jan 2009
        * fix bug in Config where $append flag was being interpreted as a MetaName/Property
        * fix bug in Config where ver2_to_ver3 was calling $self->new instead of $class->new
          when passed a filename.
        * fix bug in Spider where filter was not being passed correctly.

0.36    12 Jan 2009
        * fix Config bug where StoreDescription was ignored in ver2_to_ver3()
        * switch to Module::Install 
        * updates to example/swish3
        * fix t/03_object.t to test for JSON not YAML::Syck (see RT#53275)

0.37    01 Feb 2010
        * add -D '\x03' to the Native::Indexer exec command. This mimics libswish3.
        * examples/swish3 now installed by default with usual make install.
        * added -N option to swish3, along with ok_if_newer_than feature in Aggregator.
        * added dependency on Rose::DateTime.
        * Native Indexer can now merge() and add().
        * -l and -M options now supported in swish3
        * yank Query.pm and QueryParser.pm. They weren't used and the idea is now fleshed
          out in Search::Query if we ever need it.
        * Searcher may now take an array of invindex values, and always returns an array ref of values.

0.38    05 Feb 2010
        * add support for 'order', 'limit', 'start', 'max' and 'rank_scheme' in Native::Searcher.
        * Utils->perl_to_xml() moved to Search::Tools::XML (where it really belonged).
        * enable more options to swish3

0.39    07 Feb 2010
        * add fix for systems using Swish-e 2.6, which doesn't create a index.swish-e file.
        * remove the requires_external_bin from Makefile.PL since KSx and Xapian do not require
          swish-e but do require SWISH::Prog. Fix tests (which also check for swish-e) to SKIP
          the correct number of tests.

0.40    09 Feb 2010
        * make -D '\x03' optional in Native::Indexer based on which version of swish-e
          is available. The -D feature is only in 2.4.8 or newer.

0.41    10 Feb 2010
        * fix the check_swish() feature in Native::Indexer to only return the version number,
          not the whole output of swish-e -V (fixes the -D fix in 0.40).

0.42    27 Feb 2010
        * add invindex format to search output headers in swish3
        * add parsed query to search output headers in swish3; add query() method to base Results class.
        * add progress_size to Aggregator and implement in FS.

0.43    19 Mar 2010
        * remove docs and method for 'sort_order' in abstract Searcher class. No subclass uses it,
          deferring to 'order' in the search() method opts.
        * FS->crawl now returns count
        * add MailFS aggregator class

0.44    19 Mar 2010
        * register MailFS aggregator as 'mailfs' for use with swish3 -S

0.45    08 May 2010
        * fix swish3 to allow "swishrank" as -x option
        * enable -H option in swish3
        * SWISH::3->slurp optimization now uses transparent gunzip feature. Requires SWISH::3 >= 0.06.
        * fix backcompat for DefaultContents config in Config->ver2_to_ver3()

0.46    22 June 2010
        * add dep on Search::Query
        * add default_boolop feature to Native::Searcher
        * fix IncludeConfigFile recursionin Config->ver2_to_ver()

0.47    25 July 2010
        * add Search time to swish3 (3.0.7)
        * fix bug in Native::Searcher affecting fieldtypes

0.48    03 Nov 2010
        * added progress() feature to Aggregator classes, and 'expected' param to swish3.
        * add CascadeMetaContext config option for Swish3 compatibility
        * bump SWISH::3 (optional) dependency to 0.09
        * fix MailFS aggregator to preserve filesystem paths as Doc url

0.49    07 Jan 2011
        * refactor FileRules feature into File::Rules module

0.50    22 Feb 2011
        * make swish3 -N flag argument optional, defaulting to indexdir/swish_last_start
        * error check in base Indexer for valid invindex param
        * misc doc fixes

0.51    28 June 2011
        * add 'Lucy' backend

0.52    26 Sept 2011
        * add support for IndexFile config option
        * add --lucy_highlightable option to swish3
        * new class SWISH::Prog::ReplaceRules for backcompat
        * add get_stemmer_lang() method to Config class for Snowball stemmer forward-compat.

0.53    09 Oct 2011
        * fix DBI Aggregator to make code support docs for swishtitle and swishdescription.
          Bug reported by Logan Bell.
        * fix FS Aggregator behavior to work like 2.x and not skip files with no extension.
        * fix bug in swish3 where index dir is not created before swish_last_start is touched.
        * confess() when swish.xml does not exist
        * base Aggregator class no longer requires an indexer in new().

0.54    14 Oct 2011
        * $SWISH::Prog::Utils::DefaultExtension now let's you configure default file extension
        * fix SWISH::Prog::Config->new() to support perldoc's claims of passing in a hashref
          or named attribute pairs.

0.55    6 Nov 2011
        * fix skip test count in t/15

0.56    2 Apr 2012
        * make swish3 stdin/stdout utf8 safe

0.57    7 May 2012
        * change default max_depth in Spider to 1 (makes it actually work by default)

0.58    26 June 2012
        * fix Config class for FuzzyIndexingMode conversion to XML (ver3)

0.59    26 July 2012
        * add FollowXInclude support for Swish3

0.60    28 July 2012
        * add *_property methods to InvIndex::Meta
        * SWISH::3 now required dependency
        * added use_quotes and quote_char features to Aggregator::DBI, inspired by patch from
          Miko O'Sullivan.

0.61    23 Aug 2012
        * swish3 now catches exceptions and re-throws errors
        * swish3 now passes --debug flag into Searcher->new
        * base Indexer now performs check on existing indexes to verify that you aren't trying
          to run one format's Indexer against a different format's index.
        * swish_last_start file now created by base Indexer class, not swish3 cli.

0.62    3 Sept 2012
        * support subclassing of Indexer in start() sanity check introduced in 0.61
        * add InvIndex->meta_file method and avoid referring to swish.xml directly

0.63    11 Sept 2012
        * add TagAlias support to Config. TagAlias is a Swish3 feature.
        * improve SWISH::Prog documentation
        * add --doc_filter to swish3, to allow for set_filter to work from an external Perl file.

0.64    12 Oct 2012
        * add --aggregator_opts to swish3 and SWISH::Prog
        * add looks_like_feed() to Spider, and add dependency on XML::Feed
        * switch Spider::UA parent class to WWW::Mechanize::GZip

0.65    5 Nov 2012
        * add more tests for MailFS aggregator
        * all Aggregators now set content-type to valid MIME instead of custom Swish types
        * Aggregator->set_parser_from_type() will now not override a defined Doc->parser() value 

0.66    8 Dec 2012
        * yanked redundant test t/09 as it is now part of Search::Tools
        * fix t/05 spider to warn on correct missing module; fix spider count

0.67    19 Jan 2013
        * Spider now uses LWP::RobotUA to respect robots.txt. Dependency on WWW::Mechanize is
          removed.
        * Spider authorization features now work. Added bona fide test suite for spidering.
        * expand Queue API to add remove() and clean() and internal locking on get()
        * Spider->modified_since feature to allow for incremental crawls
        * Added new class SWISH::Prog::Aggregator::Spider::Response, refactoring appropriate UA methods
          into Response class since WWW::Mechanize was intentionally blurring the logical distinction.
        * Spider->file_rules (new feature) follows same code path as Aggregator::FS.
        * added Utils::write_log and ::write_log_line methods for standardizing debug output

0.68    23 Jan 2013
        * fix failing test t/17-spider-server with 'use base' vs '@ISA'
        * force URI objects to stringify when passing in/out of cache

0.69    05 Feb 2013
        * fix documentation for SWISH::Prog::InvIndex::Meta, add data() accessor method.

0.70    10 Feb 2013
        * add tests for Utils class.
        * Utils extension regex now matches \w+ rather than hardcoded document extensions.

0.71    1 Aug 2013
        * add --null_term feature to swish3 example
        * add sitemap support to Spider
        * swish3 -W <n> sets SWISH_PARSER_WARNINGS env var