The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for Devel::Examine::Subs

1.74    2021-10-11
    - Added CI and coverage badges

1.73    2021-10-11
    - Add heading to forgotten example in SYNOPSIS
    - Re-layout Changes file

1.72    2021-10-11
    - Migrated from Travis CI to Github Actions
    - Added section headers for POD in SYNOPSIS

1.71    2020-12-04
    - fixes #31; unlink temporary file in _read_file() after we're done
      with it. Without unlink, we were leaking temporary files
    - add rw(), provides an interface to the internal File::Edit::Portable
      object
    - add tempfile(), provides an interface to the internal File::Temp
      object
    - added $ENV{ISSUE_31_TEST}, and modified _read_file() to allow tests
      to skip the recsep checks for testing against issue #31
    - updated file count tests to properly deal with the new test files
    - added t/58-tempfile_unlink_bug.t, which tests against the problem
      identified in issue #31
    - in POD, move description section above synopsis (closes #30)
    - fix misleading/incorrect comment (fixes #28)

1.70    2018-10-24
    - clean up code in respect to specific layouts (closes #18)
    - efficiency change in the core _proc() sub. We now check for existence
      before comparison (fixes #20)
    - cleaned up all instances of eval() (closes #22)
    - apply Pull Request that disables the win32 line-ending tests (t/41)
      that caused the test suite to hang on some non-Win32 platforms
      (thanks Slaven Rezić for the report, and thanks to Steve Dondley for
      the PR) (fixes #25)

1.69    2017-02-03
    - no operational/functional changes
    - forgot to add the t/57-heredoc-bug.t test file to MANIFEST, and this
      caused off-by-one test failures on Testers

1.68    2017-02-01
    - merge pull request #13, changes PPIs "content" with "serialize", as
      the former can mangle heredocs (thanks Varadinksy)
    - migrated the test files accompanying the PR into the normal test suite
    - added check in _read_file() to see if the file is a proper file
    - merged in PR #14 and PR #15 with some minor changes. Both PRs dealt
      with POD fixes and clarifications (thanks Anthony Brummett (brummett))

1.67    2016-03-14
    - bump version of File::Edit::Portable prereq to v1.24 due to bug fixes
      in previous versions of that module (File::Edit::Portable #35)
    - corrected logic in t/05-object.t tests and verified with accuracy
      that all tests are correct and working (fixes #11)
    - fixed test in t/21-core_dump.t to accommodate FEP updates

1.66    2016-02-23
    - order() dies if it's called on a directory structure, as opposed to a
      single file (closes #9)
    - changed all croak()s to confess() for better diagnostic output
    - POD fixes (closes #8)
    - bumped prereq of Mock::Sub to 1.06
    - bumped prereq of File::Edit::Portable to 1.19

1.65    2016-02-07
    - bumped prereq ver of File::Edit::Portable to 1.18

1.64    2016-02-04
    - removed erroneous build requirement that negated the File::Edit::Portable
      prereq_pm version update, allowing tests to continue to fail on some
      versions of FreeBSD

1.63    2016-02-03
    - added backup(), set/get status of _read_file() creating a '.bak' copy
      of each file on every read. Defaults to disabled (0) (fixes #7)
    - _read_file() now compares the file's line endings with that of the
      platform, and skips creating a tempfile if they match (performance).
      (fixes #4)
    - re-implemented t/002-critic.t, if RELEASE_TESTING is enabled, and
      Perl::Critic is installed
    - cosmetic changes to tests and test data files to satisfy critic
    - module() now checks to see if a module is already loaded, and then
      unloads it if it wasn't (fixes #5)


1.62    2016-01-26
    - we now require File::Edit::Portable v1.17, due to an issue in the
      previous version where an flock() problem in FBSD 10.1 and 9.2 amd64
      was causing tests to fail on those platforms

1.61    2016-01-18
    - _write_file() was breaking with file is a dir param and no copy param
      was sent in (closes #3)

1.60    2016-01-16
    - no functional changes
    - POD updates

1.59    2016-01-14
    - 100% test coverage!
    - when file param is a directory, we now use the copy param as a dir,
      create that dir, and copy all the files in the file param to it, and
      operate on those (in operations that write to files)
    - add_functionality() now checks to see if the sub being added already
      exists (closes #2)
    - true value at end of module remains in the correct place (closes #1)

1.58    20151230
    - _proc() now sets $p->{order}, which keeps track of the original order
      of subs in the file being worked on
    - added order(), returns the list of sub names in the order they appear
      in the file
    - fixed minor issues in a couple of unit test files (file cleanup on
      windows wasn't working correctly)
    - removed 'blead' from travis
    - win32 tests in CPAN Testers should be ok again after last dev version
    - re-enable t/24-preproc (seems to be working on win32 again)

1.57_01   20151120
    - certain deprications will be necessary after the rest of the module
      is rewritten to use PPI where it currently isn't
    - reworked _read_file(), it now populates $self->{params}{file_contents}
      from a PPI doc
    - _proc() modified to use PPI to get the sub code from the file,
      instead of extracting it out manually out of an array slice by
      counting line nums
    - $subs struct no longer has a copy of the entire file contents in each
      sub. This reduces the size of the data and all objects significantly

1.56    20151029
    - no noticeable functional changes
    - most examples have been removed as unnecessary
    - extra check put in before we clobber *trace() in BEGIN

1.55    20151022
    - no functional changes
    - runs down to perl v5.8
    - removed all features beyond 5.8 (defined-or, each on array etc)

1.53    20151019
    - reorganized tests as extensions.t was breaking on windows due to
      the same number of files not being used

1.52    20151016
    - inject() with line_num param now uses File::Edit::Portable::splice()
    - inject() w/ inject_use param uses the same as inject() w/ line_num

1.51    20151015
    - API CHANGE: extensions param changed to accept what
      File::Find::Rule::name takes, as opposed to just the extensions less
      the dot
    - _run_directory() now uses File::Edit::Portable::dir() for finding
      files
    - Travis-CI integration
    - inject() now allows a line_num param along with a code param, will
      inject the block of code in the array ref immediately after the
      line number in the file
    - File::Find prereq removed, we now use File::Edit::Portable for
      everything
    - add_functionality() now injects the new sub, updates the dispatch
      table in all three core phases (pre_proc, engine, post_proc)

1.46    20150930
    - renamed everything from pre_filter to post_proc
    - removed test that was failing across platforms (t/24)

1.45    20150930
    - module() now allows just a single string param
      "$des->module('Data::Dumper')". Backwards compatibility has remained
    - _read_file() now uses File::Edit::Portable read()
    - _write_file() now uses File::Edit::Portable write()
    - internally, _subs() has been renamed to _proc()
    - reduced the size of the data and instance by ~50% (according to
      core_dump)
    - new prereq: File::Basename (fixes bug where module file bak couldn't
      be saved)
    - fixed "use Symbol;" to import 'delete_package'
    - re-enabled t/24-pre-proc tests

1.43    20150923
    - search_replace() now takes a coderef that encompasses the
      substitution regex info
    - new replace() method, similar to search_replace(), but works on
      entire file. See examples/ver.pl
    - added/updated tests

1.41    20150922
    - fix problems with forcing CPAN Testers to honour perl v5.012
    - disabled t/24 preproc tests

1.39    20150921
    - Tie::File no longer needed, we have our own built-in read/write
      methods
    - upon reading in a file, the line endings are saved, then completely
      removed
      prior to the file array being populated. Upon write, the saved line
      endings are added back in to each line
    - hundreds of new tests across numerous files
    - fixed a couple bugs in inject_after() relating to Tie::File removal
    - modules now have their version applied in the 'package' line
    - min perl version is 5.012;

1.35    20150917
    - reworked Makefile.PL, allows tests on MSWin32 to pass
    - we now look in all files to determine and set line-ending
      characters program-wide
    - added a '\r\n' file and added a test

1.33    20150916
    - re-added Devel::Trace::Subs integration in a way that the module
      won't break install if DTS isn't installed

1.32    20150915
    - moved repo from bitbucket to https://github.com/stevieb9/devel-examine-subs
    - removed Devel::Trace::Subs integration... breaks CPAN install because
      of the circular dependency

1.31    20150915
    - Devel::Trace::Subs has been introduced. See DEBUGGING in
      'perldoc Devel::Examine::Subs'
    - code injection now has much more reliable indenting

1.30    20150914
    - inject_after() no longer adds a new empty line after code is
      inserted
    - fixed bug where Module::Name wasn't being required properly
    - added 'inject_after_sub_def' param to inject() preproc

1.29    20150913
    - added inject(), with 'inject_use' parameter
    - added remove(), which operates at the file level
    - fixed a couple of undef warnings in inject_after()

1.28
    - Data::Compare to compare for caching
    - cache is now working again
    - added cache (default off) persistent param
    - added cache_dump transient param
    - all public methods (less run()) now take a hash as params
      (as opposed to hash ref).
    - pre_filters are now accepted in an aref if there are more than one:
      ['string', $cref, 'string'] etc.

1.27    20150813
    - 'regex' param now enabled by default
    - new 'objects_as_hash' param

1.24    20150812
    - fixes bug 54: implement _clean_config()
    - fixes bug 56: allow 'file' param to be a module name
    - params are separated into persistent and transient
    - all params are now validated
    - transient params get reset after each run()
    - added valid_params()
    - major pod rework

1.23    20150811
    - removed all traces of cache
    - dependency fixes
    - cleaned up POD
    - fixed typos and PPI var names
    - added POD for Engine and Prefilter
    - ./Build dist

1.20_01 20150723
    - engine framework in place
    - uses pre_proc, pre_filter and engine callbacks
    - callbacks can be sent in by user code
    - search uses optional regex
    - directory or file can be sent in
    - refined objects, they now have 'lines'
    - began making things more generic
    - can search/replace and inject code
    - can cache results in directory searching
    - countless bug fixes

1.17    20150715
    - implemented PPI sub checking, much safer
    - removed the old _subs() that was not PPI-based
    - most everything is OO based now
    - all core parameters are set into $self through _config()
    - basic consolidation of error checking in _config()
    - extensive refactoring to make tests pass
    - separate out the ::Sub.pm module into its own file
    - bug 12 fix: new() now sets $self->{file} for use by other methods
    - bug 14 fix: add file validation: done in _config()
    - bug 13 fix: new() now accepts 'file' param
    - new test for 'search'
    - many other test additions/updates
    - test for ::Sub
    - test for _config()

    To consider:
    - need to sort out esc/unescape for 'search'

1.11    20150714
    - fixed bug where only one line was being added for has_lines

1.10    20150714
    - added bool 'lines' param to has()
    -- returns hash of arrays of hashes
    - updated POD
    - new tests for has() (lines)

1.09    20150714
    - added module()
    -- return all subs found in a running module
    - cleaned up POD/Readme

1.07    20150630
    - added sublist()
    - similar to line_numbers(), but returns a list of
      objects that have start(), stop(), name() and count()
      methods

0.14    20150624
    - added line_numbers()
    - retrieves line numbers for the start and end of each
      function

0.07    20120330
    - fixes bug 11
    - add new() method and allow object method calls

0.06    20120330
    - changed name of project from Devel::ExamineSubs
      to Devel::Examine::Subs

0.05    20120330
    - changed API to all public calls to use href params

0.02    20120330
    - added tests
    - dies() if number of params is not correct (consider
      changing this internally)
    - created repository on bitbucket

0.01    20120330
    First version, released on an unsuspecting world.