The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Changelog for Beam-Emitter

1.007     2017-01-29 01:43:15-06:00 America/Chicago

    [Fixed]

    - Passing in an overridden emitter when emitting an event no longer
      uses the emitter's boolean overload. This could cause the wrong
      emitter to be used in the event. Thanks @djerius (Github #25)

1.006     2016-11-23 22:35:48-06:00 America/Chicago

    [Added]

    - Added a couple more cookbook entries to show Beam::Emitter
      patterns

    [Fixed]

    - Events with no listeners now correctly return the Event object
      like they used to. This was a regression starting in v1.004.
      Thanks @eserte and CPAN Testers for the report (Github #24)

1.005     2016-11-22 12:56:41-06:00 America/Chicago

    [Fixed]

    - Custom listener classes are now loaded automatically. This
      prevents a very strange error about the unloaded class not
      inheriting from Beam::Listener, even though it does. Perl doesn't
      know that it does, because the class isn't loaded, and there's no
      good way to detect if a class is loaded or if it failed to load.
      So, to make it easier, Beam::Emitter now simply loads the class
      for you. Thanks @djerius (Github #23)

1.004     2016-11-17 17:28:01-06:00 America/Chicago

    [Added]

    - Allow the event's name to be overridden when emitting the event.
      This is a rare thing to want, but it makes some future cookbook
      items (like a catch-all '*' event) more useful.

    - Allow the event's emitter object to be overridden when emitting
      the event. This, too, is a rare thing to want, but it allows an
      object to more easily proxy the event emitter if needed. Thanks
      @djerius! (Github #19)

    - Added a Cookbook document (Beam::Emitter::Cookbook) to start
      demonstrating some useful patterns that aren't quite useful or
      generally-desired enough to be part of the main distribution
      always. Thanks @yanick for the help! (Github #12)

    - Enhanced how Beam::Emitter tracks listeners by creating
      Beam::Listener objects with the option of adding additional
      metadata to the listener by extending the Beam::Listener class.
      Thanks @djerius! (Github #16)

    - Added a method (`listeners()`) to list the current listeners
      (Beam::Listener objects) for an event. Thanks @djerius! (Github
      #16)

    [Fixed]

    - The Beam::Emitter role no longer pollutes the consumer's namespace
      with things from Types::Standard, Scalar::Util, and Carp. Thanks
      @kentnl! (Github #13)

      This could result in problems if you accidentally depended on this
      behavior. To fix these problems, please import the correct subs
      explicitly.

    - The Beam::Emitter role now allows composing classes to use method
      modifiers for the `subscribe` and `unsubscribe` methods.
      Previously, if the composing class overrode either of those
      methods, those changes would be ignored by the `on` and `un`
      aliases. Now, the `on` and `un` aliases use proper method
      resolution. This means that if you want to modify behaviors of
      your class on subscribe and unsubscribe, you must only modify the
      `subscribe` and `unsubscribe` methods. (Github #18)

1.003     2016-11-11 21:35:53-06:00 America/Chicago

    [Fixed]

    - Fix the unsubscribe callback (returned from the `subscribe`
      method) throwing an exception if the emitter object has already
      been destroyed. Since the unsubscribe callback has a weak
      reference to the emitter object, we have to make sure the
      reference still exists before using it to unsubscribe. Thanks
      @djerius! (Github #14)

    - Fix unsubscribing from an event during an event not firing all the
      rest of the events properly. When using the unsubscribe callback
      to create a one-time event handler, the emitter could miss the
      next event listener (since we were looping over the listeners
      array and modifying it in the loop). Now we loop over a copy of
      the listeners array so that the original can be modified to remove
      the listener we want. Thanks @djerius! (Github #15)

1.002     2016-09-02 18:58:23-05:00 America/Chicago

 - Update distribution settings

1.001 2016-07-19T16:51:49
 - use a better meta-syntactic variable
 - fix circular references in unsubscribe callback
 - return subref that removes the current subscriber
 - upgrade perl in travis config
 - remove ModuleBuild to prevent toolchain confusion

1.000 2015-05-08T04:34:31Z
 - fix typo in documentation
 - remove private attribute from public documentation

0.009 2015-05-08T04:34:01Z
 - fix typo in documentation
 - remove private attribute from public documentation

0.008 2015-03-02T02:33:00Z
 - add note about loading custom event classes
 - add dzil plugin for prereqs and compile tests
 - remove root dotfiles and root ini files from dist
 - switch to dzil Git::GatherDir
 - fix contributors dependency

0.007 2015-01-04T14:30:47Z
 - fix docs to remove return value from emit_args()
 - fix link text to read more like a paragraph
 - add tagline for advent article

0.006 2015-01-04T02:55:56Z
 - release v0.006
 - fix POD errors and add SEE ALSO sections

0.005 2015-01-04T02:46:14Z
 - release v0.005
 - add tutorial-style documentation
 - add link to #beam on irc.perl.org

0.004 2015-01-04T01:55:02Z
 - release v0.004
 - update Types::Standard to 0.008
 - update copyright year
 - add contributors dzil plugin for proper attribution
 - only ignore bundles in the dist root
 - only remove .ini files from the dist root
 - add dzil tag annotation with name, date, and changelog

0.003 2014-11-16T01:42:26Z
 - release v0.003
 - allow cpanfile to be dirty
 - add new build artifacts
 - fix dist.ini after copying from Beam-Wire
 - interleave and update documentation for weaving
 - clarify which method uses Beam::Event
 - add more missing dependencies
 - switch to Type::Tiny
 - add missing Test::More dependency
 - update dist.ini and add travis-ci
 - add emit_args to give args directly to listeners
 - update weaver.ini from new default skeleton
 - add Build.PL to the base repo
 - SurgicalPodWeaver -> PodWeaver

0.002 2013-04-18T01:08:23Z
 - update dist details to be higher kwalitee
 - Update lib/Beam/Emitter.pm

0.001 2013-02-15T07:47:31Z
 - add README for github
 - add dist directories to gitignore
 - basic event class and emitter role