role Metamodel::Versioning { ... }
Warning: this role is part of the Rakudo implementation, and is not a part of the language specification.
Metamodel role for (optionally) versioning metaobjects.
When you declare a type, you can pass it a version, author, and/or API and get them, like so:
class Versioned:ver<0.0.1>:auth<github:Kaiepi>:api<1> { } say Versioned.^ver; # OUTPUT: «v0.0.1» say Versioned.^auth; # OUTPUT: «github:Kaiepi» say Versioned.^api; # OUTPUT: «1»
This is roughly equivalent to the following, which also sets them explicitly:
BEGIN { class Versioned { } Versioned.^set_ver: v0.0.1; Versioned.^set_auth: 'github:Kaiepi'; Versioned.^set_api: <1>; } say Versioned.^ver; # OUTPUT: «v0.0.1» say Versioned.^auth; # OUTPUT: «github:Kaiepi» say Versioned.^api; # OUTPUT: «1»
Methods§
method ver§
method ver($obj)
Returns the version of the metaobject, if any, otherwise returns Mu
.
method auth§
method auth($obj)
Returns the author of the metaobject, if any, otherwise returns an empty string.
method api§
method api($obj)
Returns the API of the metaobject, if any, otherwise returns an empty string.
method set_ver§
method set_ver($obj, $ver)
Sets the version of the metaobject.
method set_auth§
method set_auth($obj, $auth)
Sets the author of the metaobject.
method set_api§
method set_api($obj, $api)
Sets the API of the metaobject.