MooX-Press ========== Created: 2019-10-22 Home page: <> Bug tracker: <> Maintainer: Toby Inkster (TOBYINK) <tobyink@cpan.org> 0.083 2020-11-06 - Updated: Special support for default=>Ask::Q(...) 0.082 2020-10-13 - Allow certain features previously only supported in classes and roles (`with`, `extends`, `can`, `constant`, `multimethod`, `symmethod`) to work for the factory itself. 0.081 2020-10-10 - Added: Support for Sub::SymMethod. - When MooX::Press attempts to build a child class before a parent class, it will now notice and hopefully build the parent class first. 0.080 2020-10-09 - Updated: Support for Sub::MultiMethod 0.901+. 0.079 2020-09-30 [ Bug Fixes ] - Fix for Type::Registry->for_class being called before Type::Registry was loaded. 0.078 2020-09-23 - Added: Factories now have get_class() and get_role() methods. 0.077 2020-09-23 [ Bug Fixes ] - Correct a couple of typos in code. 0.076 2020-09-23 - MooX::Press now supports a `definition_context` in class/role/attribute/method specs. - Zydeco::Lite `class`, `role`, `interface`, `abstract_class`, `has`, `method`, `factory`, `multi_method`, and `multi_factory` keywords now include a `definition_context` in the specs they generate. 0.075 2020-09-19 [ Bug Fixes ] - Prevent type library from complaining about type constraints for 'tag' roles being added multiple times. 0.074 2020-09-18 [ Documentation ] - Add Zydeco::Lite extended example. - Update Zydeco::Lite formal syntax. [ Packaging ] - Dynamically calculate dependency list during build process. [ Other ] - MooX::Press will load MooseX::NonMoose when it's needed. - MooX::Press will load MouseX::Foreign when it's needed. - MooX::Press will load UNIVERSAL::DOES on Perl older than v5.10. - Zydeco::Lite allows apps, classes, roles, abstract classes, and interfaces to take a scalar reference as their name, like methods can. 0.073 2020-09-18 - MooX::Press now creates type constraints for 'tag' roles. 0.072 2020-09-17 - Added: Zydeco::Lite now supports anonymous methods. 0.071 2020-09-17 [ Bug Fixes ] - Fix occasional errors figuring out the type name for classes named with a leading + sign. 0.070 2020-09-17 [ Bug Fixes ] - Generator packages if called with leading :: should strip it before continuing. 0.069 2020-09-17 [ Documentation ] - Documentation of scoping in Zydeco::Lite. [ Other ] - Allow many keywords to appear outside an app in Zydeco::Lite. - MooX::Press->patch_package now supports `extends`. 0.068 2020-09-16 [ Bug Fixes ] - MooX::press now strips leading `main::` when generating type constraint names. [ Documentation ] - Better documentation of `coerce` in Zydeco::Lite. - Document importing functions from Zydeco::Lite. [ Other ] - MooX::Press now forbids roles from having a multifactory. (They could already not have factories, so this was an inconsistency.) - Zydeco::Lite's before_apply and after_apply now get passed 'role' or 'class' as an argument indicating what kind of package the role is being applied to. 0.067 2020-09-15 - Added: MooX::Press::make_absolute_package_name() function. - Treat leading `main::` like leading `::`. 0.066 2020-09-15 [ Bug Fixes ] - Ensure Moose/Mouse classes are mutable before attempting to add attributes to them. [ Test Suite ] - Fix for Perl 5.8. [ Other ] - Refactor code for run-time modification of packages, moving code from Zydeco::Lite to MooX::Press so it can be shared with Zydeco. 0.065 2020-09-14 - Added: Brand new Zydeco::Lite module. - Added: Factory packages now support before/after/around. - Added: Multi factories are now supported. 0.064 2020-09-03 - Added: Class and role generators can generate multimethods. - Added: Role generators can generate before_apply/after_apply hooks. - Refactor how :coerce / :coercion attributes are handled. - Refactor how factory methods are installed. 0.063 2020-09-01 - Added: Factories are now exporters and can export factory methods on request. The exported subs curry the invocant so are not called as methods. 0.062 2020-08-25 - Added: Support :coerce / :coercion attributes on methods, multimethods, and factory methods to also install them as a coercion. 0.061 2020-04-28 [ Bug Fixes ] - Fix regexps for extracting method bodies. 0.060 2020-04-25 [ Bug Fixes ] - Eliminate closure warnings. - Eliminate printf warnings. - Stop wrapping method bodies in do blocks because it conflicts with lvalue methods in versions of Perl too old to optimize the do block away. 0.059 2020-04-25 - Use MooX::TypeTiny again, but only versions 0.002001 and higher. 0.058 2020-04-08 - Stop using MooX::TypeTiny for now; it introduces some weird coercion bugs. 0.057 2020-02-24 - Eliminate some warnings when `make_attribute` is called to add an attribute to an existing class. 0.056 2020-02-24 - The `is` option for attributes now defaults to 'ro', but you can change the default using a `default_is` option. 0.055 2020-02-20 [ Bug Fixes ] - Eliminate 'used only once' warning from some roles. [ Packaging ] - Require latest stable Type::Params. 0.054 2020-02-18 - Refactoring of `_make_package` to split out attribute handling into a separate `install_attributes` method. 0.053 2020-02-18 - Added: Role::Hooks support. - MooX::Press now throws an error if you use certain options in classes that make no sense, like `requires`. - The `begin` and `end` options are now allowed to be arrayrefs. 0.052 2020-02-17 - Added: The factory package now has a %PACKAGES variable. 0.051 2020-02-17 [ Bug Fixes ] - Remove a debugging line that was included in 0.049. [ Other ] - Allow multiple `use MooX::Press` statements to have the same prefix. 0.050 2020-02-16 - MooX::Press will now interpret `handles => ARRAYREF` as if the array were a hash, instead of relying on the underlying delegation implementation to interpret it. - Public attribtues can now have private (lexical) accessors and delegations. 0.049 2020-02-16 - Module::Runtime and Import::Into were already dependencies, so make more use of them instead of just putting `use` statements in stringy eval. 0.048 2020-02-15 - Don't issue warning about 'Local' factory if it was specified explicitly; assume they know what they're doing. 0.047 2020-02-15 - Improve defaults of `prefix` and `factory_package`, especially when caller is `main`. 0.046 2020-02-14 [ Packaging ] - Require Lexical::Accessor 0.012 to avoid Hash::FieldHash requirement. - Require Moo 2 because Moo 1 is just so old. 0.045 2020-02-14 - Added: Integrate Lexical::Accessor support. 0.044 2020-02-12 [ Packaging ] - Bump minimum required version of Sub::HandlesVia. - Make Sub::MultiMethod required rather than an optional dependency, so that other modules using MooX::Press and MooX::Pression don't need to depend on it explicitly. 0.043 2020-02-12 [ Bug Fixes ] - If methods or method modifiers were given as a hashref rather than a coderef, MooX::Press would assume that meant there was a signature and later complain about the signature being undef, but there are other reasons to sometimes give a method or method modifier as a hashref, so this assumption is no longer made. [ Test Suite ] - Test that bare attributes work. [ Other ] - Added: MooX::Press::keywords now exports `bare` like `rw`, `ro`, `rwp`, and `lazy`. 0.042 2020-02-11 - If a signature includes `head` and `tail` options, reify any string type constraints found there. This feature assumes you're using Type::Params 1.009002 or above. - The `confess` exported by MooX::Press::Keywords no longer passes a single argument through sprintf; only calling sprintf when multiple arguments are given. 0.041 2020-02-09 - Added: Factory packages now have a `qualify` method allowing them to translate unprefixed class names to fully-qualified ones. - Added: MooX::XSConstructor is loaded and used if it's installed. 0.040 2020-02-01 [ Bug Fixes ] - Remove some Data::Dumper stuff mistakenly included in last release. 0.039 2020-02-01 [ Bug Fixes ] - In the last few releases (since 0.032?), method signatures were mistakenly being recompiled every method call, which was SLOW. 0.038 2020-02-01 - Abstract base classes throw exceptions from `BUILD` instead of `new`. 0.037 2020-01-31 - Process `with` much later to ensure that methods (including accessors, delegated methods, multimethods, and constants) have been installed which might be needed to satisfy role requirements. 0.036 2020-01-31 - Added: Abstract base classes. - Added: Interfaces. - Using class-specific things like `factory` in a role now results in an error instead of being silently ignored. 0.035 2020-01-28 [ Bug Fixes ] - Don't install multimethod dispatchers into roles. 0.034 2020-01-28 [ Bug Fixes ] - Skip trying to just-in-time look for a role definition if the role ends in a question mark; that role will already be built just-in-time. 0.033 2020-01-28 - Added: Sub::MultiMethod support (optional dependency). - Added: Support `overload` in classes. - Build roles in an intelligent order. - Process role generators before class generators. 0.032 2020-01-24 - Added: MooX::Press->wrap_coderef utility. 0.031 2020-01-23 [ Bug Fixes ] - Fix broken signatures-as-coderefs feature. [ Documentation ] - Document signatures-as-coderefs feature. [ Other ] - Added: Add `optimize` feature for method signatures. 0.030 2020-01-23 [ Bug Fixes ] - Bugfix for `import`. 0.029 2020-01-23 - Allow `import` option to apply to class/role generators. - Removed: MooX::Press::Keywords no longer imports Try::Tiny for you. 0.028 2020-01-23 [ Packaging ] - Require Sub::HandlesVia 0.004. [ Other ] - Added: Add an `import` option. - Smooth over differences between `has` in Moo, Moose, and Mouse. 0.027 2020-01-21 - Added: Support for Sub::HandlesVia. 0.026 2020-01-18 [ Bug Fixes ] - Fix `has` for Moose/Mouse classes and roles. [ Other ] - Better handling of type lookups from class/role generators. 0.025 2020-01-17 - Saner API for slurpies in signatures. 0.024 2020-01-17 - Added: Class and role generators now have generate_bleh methods in the factory. 0.023 2020-01-17 - Added: class_generator and role_generator. 0.022 2020-01-16 - Added: Integration with MooX::Enumeration/MooseX::Enumeration. - Added: Roles now have `requires`. 0.021 2020-01-15 [ Bug Fixes ] - Prevent global options from overriding per-package options. [ Other ] - Added: Method modifiers now support signatures. - String 'from' types in coercions are now interpreted as type names instead of class/role names. This is for consistency with signatures. 0.020 2020-01-13 - Added: Provide a `begin` option to run callback early in class/role definition. - Smarter Type::Registry stuff. 0.019 2020-01-10 [ Documentation ] - Better type constratin documentation. [ Other ] - Added: Method signatures. - Allow roles listed under `with` to be suffixed with a question mark. - Default `factory_package` to `prefix` instead of `caller`. 0.018 2020-01-08 [ Documentation ] - Fix typo. 0.017 2020-01-08 - Added: MooX::Press::Keywords 0.016 2020-01-08 [ Documentation ] - Documentation of @ and % sigils for `isa`. - Other improvements to type constraint related documentation. [ Other ] - Added: factory_package_can - Added: type_library_can 0.015 2020-01-07 [ Bug Fixes ] - Fix interaction of automatic package prefixes and sigils. 0.014 2020-01-07 - Added: Allow type names given as strings to be prefixed with @ or % to indicate ArrayRef of or HashRef of. 0.013 2019-11-06 - Added: Allow classes to have multiple factories to create them. 0.012 2019-11-06 [ Bug Fixes ] - Fix for newer versions of Moo::Role. 0.011 2019-11-05 Treason - Added: Support `type` in attribute specs. 0.010 2019-11-05 Gunpowder [ Bug Fixes ] - Fixes for methods being redefined in subclasses. [ Other ] - Added: Allow coderefs to be used to modify multiple methods in before/after/around, like Moo does. - Added: Top-level shortcuts for creating classes and roles. - Internal cleanups. 0.009 2019-10-31 [ Documentation ] - Fix tree/leaf example. 0.008 2019-10-30 - Added: Give each class a FACTORY method to return the factory package name. - Added: Give the factory package a type_library method to return the type library name. 0.007 2019-10-25 [ Bug Fixes ] - Fixes for Moo 2.003_005 which changes how Moo's keyword subs are tracked. 0.006 2019-10-24 [ Documentation ] - Document that multiple inheritance is supported. - Fix example in pod. [ Other ] - Less hacky way of calling Moo's has, extends, and with functions. - Throw an error if people try to use extends in roles. - You can now add a '+' before a class name to indicate that it should be prefixed by the parent class name. 0.005 2019-10-24 [ Bug Fixes ] - Fixes for undef type_library. [ Documentation ] - Bundle a simple example, HTTP::Tiny::Objects. [ Other ] - Suppress loading MooX::TypeTiny if it's not needed. 0.004 2019-10-23 [ Packaging ] - Declare dependency on namespace::autoclean. [ Other ] - Added: Set $VERSION and $AUTHORITY in generated packages. - Better handling of caller option. 0.003 2019-10-23 [ Packaging ] - Remove old test script from tarball. 0.002 2019-10-23 [ Bug Fixes ] - Fix syntax for Perl < 5.22. 0.001 2019-10-23 Initial release