10
votes

Comment puis-je prolonger les exportations de pragma automatiques de Moose?

Vous savez comment Moose allume automatiquement strict et avertissements pendant l'importation? Je souhaite étendre ce comportement en allumant autodie et Utiliser la fonctionnalité ': 5.10' dans mes classes de mon orose.

J'ai suivi là où l'orose est-ce, dans Moose :: Exporter , qui assemble une importation de personnalisée SUB pour l'orignal qui appelle strict-> importation et avertissements-> importer pour la classe d'appel.

Cependant, je ne peux pas comprendre un moyen d'étendre cette méthode d'importation dans une voie d'orignal-ish.

Comment dois-je gérer cela?

http://www.friedo.com/bullwinkle.gif


0 commentaires

4 Réponses :


1
votes

Vous devez définir une sous-intitulée Importer dans votre colis et importer toutes les autres choses là-bas.

Un exemple de moderne :: Perl (un autre module de stratégie que vous pourriez regarder): P>

use 5.010_000;

use strict;
use warnings;

use mro     ();
use feature ();

sub import {
     warnings->import();
     strict->import();
     feature->import( ':5.10' );
     mro::set_mro( scalar caller(), 'c3' );
}


0 commentaires

5
votes

Mon approche résout le problème à l'envers.

Pourquoi ne pas utiliser Toolset pour créer un groupe de Utiliser les instructions qui inclut Moose , ainsi que vos pragmas supplémentaires?

Le code doit ressembler à quelque chose comme: xxx < / Pré>

Je n'ai pas testé cela. Franchement, je viens de trouver Toolset Il y a quelques jours, et je n'ai pas eu la chance de l'essayer encore. FWIW, les critiques sont positives.


1 commentaires

Merci pour la suggestion. Je n'avais pas entendu parler de l'outil d'outils; Je l'enquête maintenant.



2
votes

Comme il existe de nombreuses façons, un module peut exporter ses fonctions dans l'espace de noms code> user code>, vous devrez peut-être faire creuser un code de code afin de mettre en œuvre chaque bibliothèque souhaitée. Ce que vous demandez n'est rien de spécifique à Moose, vous pouvez donc écrire votre meilleur module de pratique de votre entreprise qui configurera un groupe de normes pour que vous puissiez travailler avec, par exemple

package OurCompany::BestPractices::V1;

use strict;
use warnings;
use feature (':5.10');
require Fatal;
require Moose;

# Required for straight implementation of autodie code
our @ISA;
push @ISA, qw(
   Fatal
);

sub import {
   my $caller = caller;
   strict->import;
   warnings->import;
   feature->import( ':5.10' );
   Moose->import ({into => $caller});

   #autodie implementation copied from autodie source
   splice(@_,1,0,Fatal::LEXICAL_TAG);
   goto &Fatal::import;
}

1;


1 commentaires

J'ai fini par utiliser une variante de cette idée.



2
votes

Moose :: Exportateur vous permettra de définir une méthode Custom Importer pour une classe de sucre que vous utilisez. Moosex :: Poe Utilisez une version de cela pendant des années, mais le fait dans ce que je considère une mode "pirate". En regardant la documentation de Moose :: exportateur Les éléments suivants doivent être à peu près ce que vous demandez xxx

ceci peut ensuite être utilisé comme < Pré> xxx


1 commentaires

Merci! Je vais donner cela un coup de feu plus tard aujourd'hui et voir si je peux lui donner un sens.