The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
The following logs changes for the CPAN distribution Template::Pure

0.033   26 January 2017
       - Copyright updates
       - coderef data values can now return an arrayref, which will be considered
         as subdirectives under the current DOM match point and data path.

0.032   22 December 2016
       - Fixed distribution metadata that prevented correct installation :(

0.031   22 December 2016
       - Allow a loop to assign directly to a coderef or another Template::Pure
         instance.
       - When loop is assigning directly to a datapath, respect existing scope
         on the CSS match.
        - Memoize most of the parsing, should be a speed boost for repeated
          renders on the same template.

0.030   13 September 2016
       - Fixed regression in interator introduced by last release

0.029   12 September 2016
       - Fixed a bug when the value returned by an iterator is undef

0.028   31 August 2016
       - If your match specification does not match anything in the template, you now
         get an error.
       - The iterator modifiers filter, grep, order_by can now take a scalar that is
         a path to an anonymous subroutine on the data context.

0.027   28 August 2016
        - Fixed bug in data path specifications with placeholders that caused the
          final character to be deleted in some cases.
        - !!BREAKING CHANGE!!: On iterator, the special key 'filter' is now 'grep', to
          match inconsistent docs.  Special key 'grep' does what 'filter' used to do
          which is to allow or skip a row in the iterator based on some logic.  However
          we also have now in addition to the new 'grep' a new 'filter', which is used
          to filter or transform the iterator row in some way.  Docs and tests updated.
          Should be a simple search and replace for you if you are using iterators with
          the old 'filter' keyword.
        - !!BREAKING CHANGE!!  We documented the old 'filter' (now 'grep') iterator
          keyword to say that the anonymous subroutine received the $pure object as its
          first argument.  This was not the case.  Code has been fixed to match the
          documented behavior, but if you relied on the previous code you will need to
          make some minor changes.
        - New Filter: 'cond'.  Basically a filter tha works like the conditional operator
          (?).  See docs.  Added this to save myself having to drop to a coderef so much.
        - Test case around when you want to match several specs to a single action.

0.026   25 August 2016
        - Fixed bug where in a loop and using a prepend or append match specification
          the values aggregate rather than replace.
        - Allow a new shorthand syntax in a loop when you are just doing a simple
          one value replacement of the current matched node.
        - Allow you to set the current data context directly in a loop 
        - More tests to stress loops inside of loops.
        - Minor improvements to error warnings
        - POD fixes

0.025   17 August 2016
        - Updated dependencies
        - fixed typo in code that does error messages.  Should improve messaging.
        - More undocumented work on components / custom tags

0.024   08 August 2016
        - Regexp patch to silence warnings (zostay++)
        - Allow one to indicate an action is a literal string

0.023   29 July 2016
        - New Processing Instruction: Filter.  Takes a node as its source template.
        - I no longer consider this module a wild alpha version.  I will only break
          the existing test suite and documented behavior if I have obsolutely not
          other path forward.  See main docs for blockers on removing 'early access'
          status.

0.022   20 July 2016
        - Some error messages around missing data paths are now more useful. Requires
          Class::MOP (which is not listed as a dependency, you should install it for
          debugging in development).

0.021   18 July 2016
        - Fixed processing instruction include when listing arguments
        - Updated some dependency requirements

0.020   13 July 2016
        - Bugfixes for object iterator
        - When the matchspec is 'append' or 'prepend' and the target action
          is undef we no longer delete the matched node.
        - If an action with a template that contains literals and placeholders
          has a trailing filter(s) we now apply the filters.

0.019   07 July 2016
        - You may now use a data placeholder in a match specification
        - You may now pass a coderef to replace a match => action pair
          for custom or speciality processing.

0.018   27 June 2016
        - Fixed VERSION typo preventing properly upgrade installation.
        - Components now are responsible for adding any styles and scripts
          to the DOM root.
        - New component hook to modify setup parameters.
        - Components now can override how the render callback is created.

0.017   22 June 2016
        - Use Digest::MD5 instead of the pure Perl version since its actually
          bundled with older Perls anyway.
        - Methods that return a coderef can now return an object as well as a
          scalar from the coderef.

0.016   17 June 2016
        - 'Dark launch' of new components feature.  No docs, but you can look
          at the test case (t/components.t) and at Template::Pure::Component
          source code for the idea.  Docs to come.

0.015   10 June 2016
        - Code is considered less experimental than before and I am moving toward
          feeling committed to the current test suite and documentation.
        - Corrected Changed document.
        - POD Fixes
        - New test case that combines looping with a processing instruction
        - Fixed bug where passing parameters to a processing instruction
          did not work as documented.

0.014   19 April 2016
        - Migration from DOM::Tiny to Mojo::DOM58.  This is just a namespace change
          it does not add Mojolicious as a dependency to the application.  This
          could also be a breaking change for you if you are hardcoding instances
          of Mojo::DOM58.  Should be a simple search and replace job.  I did warn you
          this is experimental code right :)
        - Fixed a bug where you could not delete an attribute by setting it to undef.
        - New Feature: Template processing instructions.  Lets the template author
          embed processing instructions into the HTML so that she can have easier control
          over the template structure without needing to learn Perl and the Template::Pure
          API.  

0.013   11 April 2016
        - We now expose 'self', the current instance of the Pure object in your
          data context.  This makes it easier to follow the new best practice
          recommendation of using a subclass to encapsulate your view logic and
          view related data.
        - Using 'data_at_path' is now required in coderef actions where you are
          pulling values out of the data context.  This could be a breaking change
          if you did not follow the recommended best practice.

0.012   25 March 2016
        - Require the newest version of Mojo::DOM58
        - You may now set the target of an action to a Mojo::DOM58 object instance.

0.011   22 March 2016
        - Now if the result of a scalar action is an object that does 'TO_HTML' we
          process the object rather than stringify it.

0.010   21 March 2016
        - I'm setting the minimum Perl version to 5.10.0 since we are using
          some regular expression constructs that only work on 5.10+ and its making
          the testing reports noisy.  I'd love to support 5.8.8 if I could, if anyone
          is a regexp ninja and wants to help, the issue is in Template::Pure::ParseUtils
          where I am using named/number capture buffers (that requires 5.10+).  If we can
          redo that regexp to not use those features that would grant us 5.8 compatibility.

0.009   17 March 2016
        - Make sure templates state is properly reset.

0.008   17 March 2016
        - Fixed issue with wrapper templates
        - New Feature: you may now set a template object in the data section
          and expect it to render.

0.007   16 March 2016
        - You may now assign the value of an action to any object that does
          a method called 'TO_HTML'.

0.006   15 March 2016
        - Removed some testing code accidentally left in the distribution
          in the last release

0.005   14 March 2016
        - pod tests and pod fixes (manwar++)
        - Setup for Travis CI
        - Tweaked some regular expressions for compatibility with more
          versions of Perl
        - new feature: let you assign a the target of a data context directly
          to a sub template.

0.004   14 March 2016
        - Rename Utils to ParseUtils
        - Fixed some reported errors

0.003   12 March 2016
        - Fixes for code actions and filters when the match css matches
          more than on node.

0.002   11 March 2016
        - Fix to properly mark scalar ref actions as encoded

0.001   11 March 2016
        - First usable version, with caveats (its still earlly access)