Perl-Toolchain-Gang / Module-Metadata

Gather package and POD information from perl module files
http://metacpan.org/release/Module-Metadata/
Other
8 stars 16 forks source link

M-M confused by Object::Pad's `class` syntax #33

Open leonerd opened 4 years ago

leonerd commented 4 years ago

Object::Pad provides a new syntax for declaring packages that provide an object class, using the class keyword. This can also set the $VERSION of the package.

class Module::Name 1.23 {
   ...
}

class Another::Module 4.56;
...

Currently Module::Metadata does not understand this syntax and fails to extract versions.

A workaround is to provide both a package and a class declaration, because doing so will not confuse Object::Pad but does mean the version is correctly extracted. E.g. see https://metacpan.org/source/PEVANS/Device-Chip-CC1101-0.03/lib/Device/Chip/CC1101.pm#L9-12:

package Device::Chip::CC1101 0.03 { } 

class Device::Chip::CC1101
   extends Device::Chip;
leonerd commented 4 years ago

PR #34 attempts to implement this

leonerd commented 4 years ago

While this is still outstanding I have documented suggestions to module authors at

https://metacpan.org/pod/Object::Pad#$VERSION-declaration

jonassmedegaard commented 1 year ago

Should that pod note perhaps be changed, now that the syntax is supported in Module-Metadata? Or is it still recommended to declare both package and class for backwards compatibility?