Revision history for App-SimpleScan
2.00  Wed Sep 20 14:06:09 PDT 2006
	- First refactoring: substitution engine extracted
	  -- Added App::SimpleScan::Substitution and
	           App::SimpleScan::Substitution::Lines
          -- Added associated tests
          -- Variables now substitute in the order you specified, rather
	     than in alphabetical order
          -- Dependencies and substitutions are now handled by
	     completely separate sections of code
          -- "cross-product" bugs (caused by resubstitution of an
             already-resolved variable) have been fixed. This was
             the problem which led to the refactoring effort.

1.23  Thu Aug 31 13:10:02 PDT 2006
	- fix for "Use of uninitialized value in join or string" error in 
	  App::SimpleScan::TestSpec -  added explicit check for malformed URL 
	  schemes. This often happens when one of the '%' signs is left off a 
	  pragma.

1.22  Wed Aug 30 17:10:33 PDT 2006
	- fix double-quote expansion to work as expected
	  (variables inside double-quotes are now expanded, and *all*
          of the possible values of the expression are returned).

1.21  Thu Aug 24 17:07:20 PDT 2006
	- enable dynamic creation of variable *names*
          %%foo bar baz
          %%<foo>_value "is <foo>"
          
          # Defines <bar_value> as "is bar" and <baz_value> as "is baz"

1.20  Wed Aug 23 13:58:31 PDT 2006
	- worked out the funky kinks in nested substitutions by a major 
	  simplification of the substitution logic. 
	- dependency logic now *only* worries about keeping loops out of
	  dependencies; substitution handles all the discovery and resolution
	  of dependent variables.
	- removed several methods that are no longer needed (in particular,
	  _all_dependencies)

1.19  Fri Aug 18 15:34:55 PDT 2006
	- Support for variable substitutions inside variables themselves;
	  allows variable names to be constructed dynamically.

1.18  Thu Aug 17 13:37:48 PDT 2006
	- *Always* give us the syntax warning when we have a bad input line.

1.17  Wed Aug  9 12:37:35 PDT 2006
	- Fixed subtle bug in expand_backticked: if the characters 'tr' 
          (unquoted) appeared in a variable definition, expand_backticked
          parsed this as beginning a tr/.../. Threw out Text::Balanced and
	  used a pattern from Friedl to do the job instead. Bonus: speed gain!
        - Made simple_scan always stack a failing test if it encountered
	  a bad line.
	- (Finally!) Complete overhaul of dependencies to use Graph.pm, thereby
	  making it easy to streamline the substitution calculations for cases
	  where you have many variables, but are only substituting in one or
	  two. The new code eliminates checks on the variables you don't care
	  about, radically speeding up this case.

1.16  Fri Jul 28 11:15:06 PDT 2006
	- Add input hook support for include-style plugins
	- move init() call for plugins to _load_plugins. init()
	  was called only if the plugin installed pragmas, which 
	  is non-intuitive.
	- Reorder operations in new() so that the object is filled in
	  as much as possible before loading and initializing plugins.

1.15  Wed Jul 19 16:24:42 PDT 2006
	- reorder the creation of the test boilerplate to avoid 
	  ordering errors with the new Include plugin

1.14  Mon Jul 17 16:56:52 PDT 2006
	- changes to conform to Perl::Critic recommendations

1.13  Wed Jul 12 11:52:33 PDT 2006
	- contributed fix: allow non-http URLs to be tested
	  (from bbking@checkfree.com)
	- Clarified App::SimpleScan docs: this is not useful to
	  read if you want to run simple_scan; only useful if
	  you're subclassing this class (or writing your own app)
	- Addded PLUGINS section to simple_scan doc.

1.12  Wed Jul  5 12:40:18 PDT 2006
        - fixed pattern interpolation into the comment section of
	  the generated code so Perl wouldn't complain about bad
	  character escapes in the string.

1.11  Fri Jun 23 17:41:22 PDT 2006
	- expand_backticked was changed to a method to allow it
	  to more easily emit warnings for mismatched quotes.
	- mismatched quotes are now explicitly diagnosed. Formerly,
	  there'd be a !!THISISGARBAGE!! in the output. Not right.

1.10  Fri Jun 23 12:53:33 PDT 2006
	- Unicode works!
  	  - accented character tests gone. 
	  - Non-Latin test patches welcome.

1.09  Mon Jun 19 12:07:25 PDT 2006
	- Add test run status reporting to simple_report -status

1.08  Thu Jun  8 16:35:15 PDT 2006
	- Fix Makefile.PL so simple_report gets installed.

1.07  Wed May 31 16:53:06 PDT 2006
	- Changed simple_report to send the status messages (x% done)
	  to STDERR

1.06  Tue May  2 15:31:41 PDT 2006
 	- Changed status reporting leader chars to make them easier to spot
	  (and strip out)
	- removed "Running" status - that's what 'ok'/'not ok' is for

1.05  Fri Apr 28 17:00:27 PDT 2006
	- added --status and tests for it

1.04  Thu Apr 27 17:17:04 PDT 2006
	- fixed tests failing on Solaris (left off specific
	  path to simple_scan - d'oh!)

1.03  Tue Apr 11 14:17:13 PDT 2006
	- mysterious 08cache.t test failure solved!
	- began work on substitution optimization
	- suppressed (finally) the Text::Balanced warnings

1.02  Mon Apr 10 09:51:38 PDT 2006
	- Initial upload failed; trying again

1.01  Fri Mar 31 13:06:43 PST 2006
	- Changed shebang line to use /usr/bin/env
	  (not /home/y, d'oh).

1.00  Fri Mar 17 12:25:43 PST 2006
	- New interfaces deserve a full version update.
	- current_line method added to allow plugins to
	  spy on the input line if they want to.
	- All plugins now converted to use output filters
	  instead of hooking stack_test.
        - More documentation of the base simple_scan 
          program.

0.34  Mon Mar 13 16:21:56 PST 2006
	- totally reorganized variable substitution to fix
	  nested variable substitution problems; variable
	  substitution now returns only the unique tests
	  generated by substituting variables
	- replace per_test with a more flexible filtering
	  architecture
	- dependencies code still under development, so
	  it's still possible to set up an infinite 
          substitution loop, like
             %%foo <bar>
             %%bar <foo>
             <foo>
	  To be fixed in an upcoming release.

0.33  Thu Mar  2 13:57:46 PST 2006
	- expose expand_backticked method
	- reorganize module documentation

0.32  Wed Feb 22 15:47:10 PST 2006
	- Add input queue manipulation to set up for macro-like
	  pragmas and simpler input handling for test spec
	  expansion
	- internal topological sort to resolve possible
	  circular dependencies:
	    %%foo this is <bar>
            %%bar this is <foo>
        - Add code to save current test spec (useful if 
          an overridden method needs to see the current spec)

0.31  Mon Feb 13 13:02:04 PST 2006
	- document that %ENV variables work in substitution pragmas

0.30  Fri Feb 10 15:32:13 PST 2006
	- Change all test and code stacking in App::SimpleScan::Testspec
	  to use stack_test and stack_code so this is consistent
          across core code and plugins.

0.29  Mon Feb  6 16:20:09 PST 2006
        - expanded plugin documentation
	- expanded tests to match new docs

0.28  Mon Feb  6 12:18:21 PST 2006
	- fixed missing default agent_alias

0.27  Thu Jan 26 12:49:14 PST 2006
	- added simple_report to this distribution

0.26  Thu Jan 12 12:05:05 PST 2006
	- added support for backticked and quoted substitutions

0.25  (unreleased)
	- added --no_agent command line option

0.24  (unreleased) 

0.23  Tue Dec  6 17:10:59 PST 2005
	- Reordered code generation so that per_test
	  plugin code gets called every time a test is stacked
        - Added test plugin (t/lib/App/SimpleScan/Plugin/Test_Expand)
	  to properly test substitution expansion
	- Added substitution expansion test to fix a bug
	  that emitted per_test code only for the last test in
	  a set that was created by substitution expansion

0.22  Mon Nov 28 11:01:37 2005
	- Missing prereqs in Makefile.PL corrected

0.21  Mon Nov 21 17:14:07 2005
	- Move test count initialization to prevent an 
	  uninitialized variable warning if a test is stacked by
	  a plugin during the options processing phase. (Is that
	  a specific enough bug or what?)

0.20  Mon Nov 21 17:03:24 2005
  	- Move pragma installation earlier so plugins can find pragma
	processors

0.19  Mon Nov 21 16:09:28 2005 
	- Expose the pragma() method for use by plugins

0.18  Mon Nov 21 14:25:24 2005
	- Made sure that validate_options gets the App::SimpleScan 
	  object

0.17  Fri Nov 18 18:10:34 2005
	- Added conditional callback to validate_options()
	  in plugins; allows plugins to make sure that 
	  command-line option values are indeed valid.

0.16  Fri Nov 18 17:29:12 2005
	- Moved plugin loading into separate private method
	- made stack_tests and stack_code public methods
	  since they were being used publically anyway
	- aliased to _stack_code and _stack_tests until all
	  plugins have time to catch up

0.15  Fri Nov 18 13:39:34 2005
	- Changed the per_test call in App::SimpleScan::Testspec
	  to stack the code *after* the generated test. Note that
	  if a per_test plugin really needs to stack code before
          generated tests by calling _stack_code.

0.14  Fri Nov 18 11:59:58 2005
	- fixed plugin code to only call pragmas() if the plugin
	  can('pragmas'); allows development of options-only plugins

0.13  Thu Nov 17 17:52:43 2005
	- added --autocache option: turn on caching at the beginning
	  of a run

0.12  Tue Nov  8 11:28:14 2005 
	- More changes for accented characters. Now handles either
          UTF-8 or Latin-1. 
	- Eliminated double fetch for accented character tests.

0.11  Wed Oct 26 16:15:52 2005
	- Temporary fix for TODO test until I can figure out
	  why I need to do it at the moment.

0.10  Wed Oct 26 15:29:17 2005
	- Extracted execution of tests into execute() method - 
	  this will allow plugins to override the simple 'eval'
	  with something more interesting
	- fix a quoting error in TY and TN tests

0.09  Wed Oct 26 14:48:27 2005
	- Added --define, --override, --defer, and --debug switches
	- debug is pretty preliminary, but the methods are there now
	- can now define substitutions on the command line, and 
	  choose to have them override or defer to substitutions
	  in input files

0.08  Wed Oct 26 11:37:45 2005
	- Added _delete_substitution to support the %%forget pragma.

0.07  Tue Oct 25 14:37:00 2005
	- Changed match for accented characters to .*? instead
	  of . to make it work consistently on 5.6

0.06  Mon Oct 24 16:24:20 2005
	- fixed "@accents" vs. "$accent[...}" in generated code

0.05  Mon Oct 24 15:55:58 2005
	- Added a missing semicolon on the generated code for the
	  accent extraction line. 

0.04  Mon Oct 24 14:42:38 2005
	- changed 8-bit-character checks; test process seems to nuke
	  the $1, $2, etc. variables, so I can't check them back in
	  the tests itself. Now done via an array of matched-out 
	  characters.
	- Systematized test counting to make sure counts were right
	- Tests now "use strict;"
	- Regex flags handled properly
	- _regex_render added to centralize regex fixups
	- Removed duplicate bottm-out test in substitution recursion
	- Updated tests

0.03  Wed Oct 19 12:22:18 2005
	- altered test spec parsing to properly handle missing comments
	- added tests for this code

0.02  Wed Oct 12 13:55:39 2005
	- Fixed accented character cleanup - wasn't using the
          cleaned-up version of the regex

0.01  Fri Sep 16 11:49:25 2005
	- Initial release.

