From Fedora Project Wiki
(→Needed: add catalyst, metaclass) |
(add first runthrough of table) |
||
Line 24: | Line 24: | ||
#* CONS: may fail for a variety of reasons | #* CONS: may fail for a variety of reasons | ||
# Should we try to normalize the versions? | # Should we try to normalize the versions? | ||
{| | |||
|'''Requirement'''||'''Example'''||'''Current'''||'''Target'''||'''Compat?'''||'''Comment''' | |||
|- | |||
|<code>use base</code> constructs correctly evaluated||<pre>use base 'XXX';</pre>||<pre>perl(base)</pre>||<pre>perl(base) | |||
perl(XXX)</pre>|| ||Need also to correctly evaluate <code>use parent ...</code>, etc. | |||
|- | |||
|''No duplicate provides''|| || || || ||We often see duplicate requires. These are harmless, except in the case where one requires is versioned and another unversioned.<br><br>This might need to be addressed at a higher level than perl.prov. | |||
|- | |||
|Mo*se subclassing||<pre>extends 'Some::Class';</pre>|| ||<pre>perl(Some::Class)</pre>|| || | |||
|- | |||
|Mo*se roles||<pre>with 'Some::Class';</pre>|| ||<pre>perl(Some::Class)</pre>|| || | |||
|- | |||
|Mo*se traits||...in an attribute specification:<pre>... | |||
traits => [ 'X', 'Y' ]</pre>|| ||<pre>perl(Moose::Meta::Custom::Trait::X) | |||
perl(Moose::Meta::Custom::Trait::Y)</pre>|| ||This is going to be tricky. | |||
|- | |||
|Mo*se metaclasses|| || || || || | |||
|- | |||
|Catalyst and other plugin syntax|| || || || || | |||
|- | |||
|Ability to include/exclude|| || || || || | |||
|} |
Revision as of 11:55, 18 February 2009
Brain dump. Comments welcome and appreciated, on the talk page.
Current Flaws
Needed
- Understands "use base", "use parent", etc, constructs.
- Understands Moose
- "extends" - subclassing
- "with" - roles
- "metaclass" - metaclasses
- "traits" - metaclass roles
- Understands Catalyst plugin speficication syntax
- This should be extensible to other module classes
- Doesn't generate duplicates. e.g.: perl(Foo) and perl(Foo) >= 1.9
- Better able to deal with the wonders of Perl versioning; e.g.
- 1.20a stays 1.20a
- 1.20 becomes 1.020000 (version triplet)
Questions
- Should we attempt to compile? (a la
perl -wc
or Module::ScanDeps)- PROS: highly accurate
- CONS: may fail for a variety of reasons
- Should we try to normalize the versions?
Requirement | Example | Current | Target | Compat? | Comment |
use base constructs correctly evaluated |
use base 'XXX'; |
perl(base) |
perl(base) perl(XXX) |
Need also to correctly evaluate use parent ... , etc.
| |
No duplicate provides | We often see duplicate requires. These are harmless, except in the case where one requires is versioned and another unversioned. This might need to be addressed at a higher level than perl.prov. | ||||
Mo*se subclassing | extends 'Some::Class'; |
perl(Some::Class) |
|||
Mo*se roles | with 'Some::Class'; |
perl(Some::Class) |
|||
Mo*se traits | ...in an attribute specification:... traits => [ 'X', 'Y' ] |
perl(Moose::Meta::Custom::Trait::X) perl(Moose::Meta::Custom::Trait::Y) |
This is going to be tricky. | ||
Mo*se metaclasses | |||||
Catalyst and other plugin syntax | |||||
Ability to include/exclude |