Revision history for TAP-DOM

0.97      2022-06-15
        - fix replacement tap pragma line for 'noempty_tap' situation

0.96      2022-06-15
        - avoid accidental Perl 5.10+ idiom

0.95      2022-06-14
        - reuploads are my new hobby

0.94      2022-06-14
        - tweak handling of empty TAP(::Archive) documents, so far only
          when option 'noempty_tap' is provided to not trigger surprises.

0.93.2    2021-06-21
        - re-upload(?)

0.93.1    2021-06-14
        - fix test to work on windows

0.93      2021-06-05
        - provide mnemonics table for severity
        - evaluate TAP::DOM-specific pragma +tapdom_error
        - new option 'noempty_tap' to put in replacement lines with a
          '+pragma tapdom_error' which can be better evaluated by its
        - TAP::DOM::Archive allows filehandle as 'source'
          (requires new dependency to Scalar::Util)

0.92      2020-11-09
        - introduce 'severity' level to represent the combination of
          ok/notok and todo/skip as one ordinal number.
        - more complete information in non-test lines (plan, pragma)

0.91      2020-06-30

          This release contains several changes towards a more
          consistent data handling. For casual users nothing
          substantially should change. But if you are one of the
          power users out there (I'm looking at you, Amzn), then
          read this changelog carefully.

        - fix argument handling: pass-through to TAP::DOM, delete
          newly introduced 'disable_global_kv_data'

        - TAP::Archive reading skips nonexistent files from meta.yml

        - to_tap() works with unblessed inner elements (though the
          TAP::DOM itself needs bless to call ->to_tap method)

        - new option 'document_data_prefix' to specify the prefix in
          '# Test-key: value' lines

        - Experimental: Allow TAP preprocessing
          This can help to reduce the tap line count before it hits
          the TAP parser, assuming regex processing is faster.

        - Incompatible change: de-confuse 'parse_errors'
          * it now also contains the count of parse errors not the
            actual messages anymore - those are now in

        - new option 'document_data_ignore' to not cover certain fields

        - new option 'put_dangling_kv_data_under_lazy_plan' to
          fix a gap when 'disable_global_kv_data' is set.

        - new option 'trim_fieldvalues' to trim trailing whitespace
          from document_data/kv_data fields

        - new option 'dontignorelines' (HIGHLY EXPERIMENTAL!) to
          define exceptions from the 'ignorelines' regex.

        - tapdom_config covers all options now

0.14      2017-02-17
        - new module TAP::DOM::Archive to extract TAP::Archive files
          into a multi-document super DOM

        - Store "# Test-key: value" entries also as 'kv_data' under
          their parent ok line.

          Please note, this creates redundancy with global
          'document_data' as it still stores entries there. This is to
          keep backwards compatibility with existing TAP documents'

          If you want clear separation between global 'document_data'
          from #Test-key:value entries not belonging to a test
          ok/notok line and 'kv_data' entries, then set option

0.13      2016-02-26
        - add forgotten 'planned' attribute from ::Aggregator

0.12      2015-09-16
        - generate "document_data" key/value entry in the TAP-DOM
          from hot comments of the form: # Test-<key>: <value>

0.11      2014-03-14
        - assume TAP version 13 if TAP::Parser supports this (v3.22+)
        - TAP-DOM "reverse": to_tap() produces TAP from a TAP::DOM
        - distro polishing (misc & rt#90178)
        - Дист::Зилла roundhouse kick

2010-08-26  Steffen Schwigon  <>

	* 0.10

	* New option "usebitsets":
	- When creating a TAP::DOM with new(usebitsets => 1) then all
	  the 'has_*' and 'is_*' attributes are stored in a common
	  bitset entry 'is_has' with their respective bits set.
	  This reduces the size of a TAP::DOM remarkably (by ~40%
	  for a large TAP-DOM) and is meant as an optimization
	  option for memory constrained problems.

	* Additional entry "tapdom_config" to store parse options

	* Data structure now with classes and accessors:
	- TAP::DOM::Entry -- all 'lines' entries
	  (with 'is_*' and 'has_*' attributes correctly handling bitsets)
	- TAP::DOM::Summary -- the aggregated 'summary' part
	- TAP::DOM::Config -- the 'tapdom_config' part

	* More tests and benchmarks for evaluating speed/memory footprint

2010-04-19  Steffen Schwigon  <>

	* 0.07

	* Bummer! I shouldn't work too late at night... Using
	  Test::Harness features from the future is too bleading edge.

2010-04-16  Steffen Schwigon  <>

	* 0.06

	* New option "ignorelines" to strip unneccessary lines from the
 	  TAP that would otherwise just blow-up memory in the DOM.

	* distribution maintenance

2009-09-24  Steffen Schwigon  <>

	* 0.05

	* Allow to create more terse DOMs by accepting an "ignore" option
	  to declare items that should not be included.

2009-05-18  Steffen Schwigon  <>

	* 0.04

	* Fix error with comment lines before everything else

2009-04-17  Steffen Schwigon  <>

	* 0.03

	* support for summary results from TAP::Parser::Aggregator

2009-03-08  Steffen Schwigon  <>

	* 0.02

	* yaml and comment lines are now assigned to the line before
	  under the key {_children}

	* improved documentation

	* less redundant test suite to better serve as documentation

2009-02-13  Steffen Schwigon  <>

	* 0.01

	* initial version

	* just a data structure and docs