Class::Plain supports Role using Role::Tiny
Class::Plain was released at at 2022-09. This time, Class::Plain supports role using Role::Tiny at version 0.05.
use Class::Plain; role Some::Role { method foo { ... } method bar { ... } } class Some::Class : does(Some::Role) { method foo { ... } # baz is wrapped in the around modifier by Class::Method::Modifiers method baz { ... } }
See also the document of the role.
A role example is written in the cookbook.
Role - Cookbook of Class::Plain
Some role examples are written in the test codes.
Author's Comments in This Release
Currently I join the discussion of use feature 'class'
.
I asked a question. Is it possible to adjust the class syntax so that the method keyword works with existing codes?.
In this discuttion, Ovid said that
I've actually been watching the development of your Class::Plain module and I think when you can get roles and push it a bit further, that's a good compromise between Corinna syntax and hash-based objects. You've got something working, so I would encourage you to push forward on that. I suspect a lot of people might like that compromise.
So I started to search for the implementation of the role.
At first, I tried to implement it by myself, but I feel a little difficultness.
And I continue to search the web. I found Role::Tiny. I remember Mojolicious uses Role::Tiny.
I red the document of Role::Tiny and try it. I thought "this is good".
Role::Tiny's use Role::Tiny
is the same as the role
keyword in Corinna.
Role::Tiny's with
is the same as does
in Corinna.
Role::Tiny's requires
is the same as method foo;
in Corinna.
I only created the syntax suger of Role::Tiny using the spec of Corinna.
The role features of Class::Plain are completed!!!
Bug reports and opinions are here.
Leave a comment