Revision history for Web-DataService

0.42	2018-12-19

- Added method 'select_output_block' to request classes.
- Added hook 'before_record_hook'.

0.41    2018-09-26

- Added methods 'validate_params', 'param_given', 'raw_body', 'decode_body', 'exception',
  'skip_output_record', 'add_error', 'errors', 'add_caution', 'cautions' to request
  classes.
- Added attribute 'http_method' to request classes.
- Regularized hooks.

0.3     2016-01-13

- Pod parser has been rewritten as a subclass of Pod::Simple.  If you are upgrading
  from an earlier version of Web::DataService you should update doc_defs.tt and dsdoc.css.
  Note that this new parser requires all command paragraphs to be preceded and followed by
  blank lines, whereas the earlier version was looser about it.
- New Pod directives "=for wds_pod on", "=for wds_pod off" can be used to bracket content
  that should be included if the target format is Pod and ignored for other formats such
  as HTML.
- New option 'diag' for running on the command line, 

0.261   2015-06-22

- Documentation nodes are now automatically auto-instantiated if a template file
  exists.  No need to explicitly create a node for each file.
- New Pod directive "=for wds_node ..." sets node attributes, title in particular.  This
  must appear in the first 2048 bytes of the template file.
- Output fields with data_type => 'str' are now quoted in JSON output even if the
  value looks like a number.
- Output records of type 'select' can now have an 'if_block' attribute.
- Auto-generated links now default their link text to the node path without the base.
- Bug fix: output plugin method 'emit_empty' was being called when it shouldn't have been.

0.26    2015-06-17

- Miscellaneous bug fixes:
  - Eliminated unnecessary dependency on $ENV{PWD}, which was causing problems
    because this variable is not always available.
  - URL generation in documentation pages now works properly with Pod format.
  - Fixed a bug that was causing links to be generated incorrectly if the link
    text was '0'.
  - Output block inclusion now works recursively.
  - Output fields with the 'dedup' option set now get a blank value in text output
    records.
  - You can now set 'doc_string' directly when defining set values.

- New request method 'param_keys', which returns a list of keys corresponding
  to the parameters given in this request.
- New request method 'exception', which generates an exception object.  This
  can be passed to die() instead of a string.
- Output plugins now include the method 'emit_empty', which is called if no
  output records were generated.

0.254   2015-03-18

- It is now possible to add aliases for the special parameters.
- In Text format output, the field name "Starting Index" has been replaced by
  "Record Offset".
- The following field names in Text format output no longer are followed by colons:
  "Records Found", "Records Returned", "Elapsed Time".

0.253   2014-12-21

- Added method 'delete_output_field' to remove a field from the output.  This can
  be used by operation methods to remove fields that are determined to be unnecessary.
  This is especially useful for text-format output.
- Fixed a bug that was causing single quotes to be improperly doubled in CSV output.

0.252   2014-11-07 

- You can now specify a summary block for any operation, with the node attribute 'summary'
- This block will be included in the output header, before any records are output
- New request method 'document_summary' to document the list of fields
- New request method 'summary_data' which takes a hash of fields with which the
  block will be filled in.
- You can now specify extended documentation for a node, with the method 'extended_doc'.
  This can be used to specify the documentation that will appear at the top of an
  operation page, without having to create a custom template.
- Added method 'map_value' which transforms a set value to its 'maps_to' value
- The 'set_values' method now throws an exception if given an invalid set name
- Fixed a bug that would wipe out the field lists of configured blocks if one bad
  block name was passed to 'configure_boock'.

0.251   2014-10-17

- Fixed a bug that was causing text output not to be properly encoded in some circumstances
- Added format attribute 'encode_as_text'
- Fixed a bug that caused the 'Access-Control-Allow-Origin' header to not be sent under some circumstances
- Improved the documentation of the configuration process

0.25    2014-10-16

- Added documentation files that were accidentally left out of 0.24
- Added one missing module that was accidentally left out of 0.24
- The method 'generate_url' can now take a string instead of a hashref
- Note: there were several incompatible changes between 0.23 and 0.24, so be
  careful if you are updating to this version from 0.23 or prior

0.24    2014-10-15

- Added Perl version check to Build.PL.  The minimum version of Perl is 5.012
- There are several changes to this version that are not compatible with 0.23
- Changed the template element names for documentation sections (incompatible)
- Added documentation for node lists
- Reorganized the configuration documentation
- Added node attribute 'place', and methods 'list_node', 'get_nodelist', 'document_nodelist'
- Renamed method 'has_output_block' to 'has_block' (incompatible)
- Renamed method 'response_format' to 'output_format' (incompatible)
- Renamed method 'response_vocab' to 'output_vocab' (incompatible)
- Renamed method 'response_linebreak' to 'output_linebreak' (incompatible)
- Added method 'substitute_select'
- Usage examples are now strings (incompatible)
- Fixed bug that was ignoring ordinary paragraphs in ruleset documentation
- Fixed bug that was causing documentation strings to be inherited

0.23    2014-10-03

- Improved the documentation some more
- Removed spurious use of Sub::Identify
- Fixed bug in evaluating set attributes starting with + or -
- Fixed bug that prevented multiple validators in a parameter rule
- Added set_foundation class method to set the foundation framework, removed the foundation_plugin attribute.

0.22    2014-10-02

- Fixed bad tests and improved the documentation.
- new_request and execute_request can now be called as class methods.

0.21    2014-10-01

- First release that actually works and is fully documented.