Result:
found more than 602 distributions - search limited to the first 2001 files matching your query ( run in 1.922 )


Message-String

 view release on metacpan or  search on metacpan

lib/Message/String.pm  view on Meta::CPAN

        return wantarray ? %long_types : \%long_types;
    }

    # _update_type_on_id_change
    #   Check or change whether or not message types are set automatically
    #   when message ids are set. The cascade is enabled by default.
    my $auto_type = 1;

    sub _update_type_on_id_change
    {
        my ( $invocant, $value ) = @_;

lib/Message/String.pm  view on Meta::CPAN


    my $auto_level = 1;

    # _update_level_on_type_change
    #   Check or change whether or not message levels are set automatically
    #   when message types are set. The cascade is enabled by default.
    sub _update_level_on_type_change
    {
        my ( $invocant, $value ) = @_;
        return $auto_level
            unless @_ > 1;

 view all matches for this distribution


Meta

 view release on metacpan or  search on metacpan

Meta/Baseline/Cook.pm  view on Meta::CPAN

	for(my($i)=0;$i<$deps->node_size();$i++) {
		my($node)=$deps->nodes()->elem($i);
		my($out_edges)=$deps->edge_ou($node);
		# only if there are dependencies
		if($out_edges->size()>0) {
			print $file "cascade ".$node."=\n";
			for(my($j)=0;$j<$out_edges->size();$j++) {
				my($edge)=$out_edges->elem($j);
				print $file $edge."\n";
			}
			print $file ";\n";

Meta/Baseline/Cook.pm  view on Meta::CPAN

		my($io)=Meta::IO::File->new_reader($full);
		# read the first comment line.
		my($line)=$io->cgetline();
		# if we have dep information
		if(!$io->eof()) {
			# read the cascade line
			$line=$io->cgetline();
			my($new)=($line=~/^cascade (.*)=$/);
			#Meta::Utils::Output::print("inserting node [".$new."]\n");
			$deps->node_insert($new);
			while(!$io->eof()) {
				if($line ne ";") {
					if(!$deps->node_has($line)) {

 view all matches for this distribution


Method-Cascade

 view release on metacpan or  search on metacpan

lib/Method/Cascade.pm  view on Meta::CPAN


our $VERSION = '0.101';

require Exporter;
use base 'Exporter';
our @EXPORT = qw(cascade);


sub cascade {
  my $wrapped = shift;
  return bless { w => $wrapped, }, 'Method::Cascade::Wrapper'; 
}


lib/Method/Cascade.pm  view on Meta::CPAN

=head1 SYNOPSIS

    use Method::Cascade;
    use IO::Socket::INET;

    cascade(IO::Socket::INET->new('google.com:http'))
      ->timeout(5)
      ->setsockopt(SOL_SOCKET, SO_KEEPALIVE, pack("l", 1))
      ->print("GET / HTTP/1.0\r\n\r\n")
      ->recv(my $response, 4096);

lib/Method/Cascade.pm  view on Meta::CPAN


Method chaining is a very intuitive and convenient way to make sequential method calls on the same object.

Unfortunately, not all APIs support method chaining. In order for an API to be chainable, every method must return C<$self>. However often there are good reasons for an API to not return C<$self>. For instance, it can be useful for setter methods to ...

Method cascading is a feature borrowed from Smalltalk. Its advantage is that any API can be used in a chained fashion, even if the designers didn't plan or intend for it to be chainable. You, the user of the API, can choose if you care about the retu...


=head1 DESCRIPTION

This module exports one function: C<cascade>. You should pass it the object that you would like to chain/cascade method calls on. It will return a wrapper object that forwards all method calls to the object you passed in. After forwarding, it returns...

Because return values are ignored (the methods are in fact called in void context), method cascading is most useful when used with APIs that throw exceptions instead of returning error values. For instance, with L<DBI>, as long as C<RaiseError> is tr...

    cascade($dbh)->do("INSERT INTO admins (name) VALUES (?)", undef, $user)
                 ->do("DELETE FROM users WHERE name=?", undef, $user)
                 ->commit;



lib/Method/Cascade.pm  view on Meta::CPAN


=head1 SEE ALSO

L<The Method::Cascade github repo|https://github.com/hoytech/Method-Cascade>

L<Method Cascades in Dart|http://news.dartlang.org/2012/02/method-cascades-in-dart-posted-by-gilad.html>

L<Wikipedia entry on Method Cascading|https://en.wikipedia.org/wiki/Method_cascading>

L<IO::All> - I/O library that makes heavy use of chaining

 view all matches for this distribution


Minion-Backend-Pg91

 view release on metacpan or  search on metacpan

t/pg91.t  view on Meta::CPAN

use Mojo::Util 'dumper';

# Isolate tests
require Mojo::Pg;
my $pg = Mojo::Pg->new($ENV{TEST_ONLINE});
$pg->db->query('drop schema if exists minion_test cascade');
$pg->db->query('create schema minion_test');
my $minion = Minion->new(Pg91 => $ENV{TEST_ONLINE});
$minion->backend->pg->search_path(['minion_test']);

# Nothing to repair

t/pg91.t  view on Meta::CPAN

  'right structure';
$_->unregister for $worker, $worker2;
ok !$minion->backend->broadcast('test_id', []), 'command not sent';

# Clean up once we are done
$pg->db->query('drop schema minion_test cascade');

done_testing();

 view all matches for this distribution


Module-Generic

 view release on metacpan or  search on metacpan

lib/Module/Generic/File/Magic.pm  view on Meta::CPAN


=encoding utf-8

=head1 NAME

Module::Generic::File::Magic - File type and MIME detection with 3-level backend cascade

=head1 SYNOPSIS

    use Module::Generic::File::Magic qw( :flags );

lib/Module/Generic/File/Magic.pm  view on Meta::CPAN


    v0.2.0

=head1 DESCRIPTION

C<Module::Generic::File::Magic> detects file types and MIME types using a three-level cascade, automatically selecting the best available backend:

=over 4

=item B<Level 1 - xs> (preferred)

lib/Module/Generic/File/Magic.pm  view on Meta::CPAN


=head1 METHODS

=head2 backend

Returns the name of the active backend: C<"xs">, C<"json">, or C<"file">. Note that the reported value is the I<top-level> configured backend; the actual detection at runtime may cascade through multiple levels.

=head2 check

    $magic->check( [ $filename ] );

 view all matches for this distribution


Module-MetaInfo

 view release on metacpan or  search on metacpan

lib/Module/MetaInfo.pm  view on Meta::CPAN

  my $return=undef;
 FINDER: foreach my $mod (@{$self->{metafinders}}) {
    print "try $sub in " . ref ($mod) . "\n" if ${$self->{'_verbose'}};
    if (  $mod->can($sub) ) {
      $tried++;
      #how should I cascade the effect of wantarray efficiently?
      my $return=$mod->$sub();
      if (defined $return) {
	my $ref=ref $return;
	if ($ref) {
	  die "meta info functions should only return array refs"

 view all matches for this distribution


Mojo-Pg-Che

 view release on metacpan or  search on metacpan

t/07-base-crud.t  view on Meta::CPAN

# Isolate tests
#~ my $pg = Mojo::Pg::Che->new($ENV{TEST_ONLINE})->search_path(['mojo_crud_test']);
my $pg = Mojo::Pg::Che->connect($dsn, $user, $pw, {PrintWarn => 0,}, search_path=>['mojo_crud_test'])
  ->pg;#max_connections=>20
#~ is_deeply $pg->options, {}, 'right options';
$pg->db->query('drop schema if exists mojo_crud_test cascade');
$pg->db->query('create schema mojo_crud_test');

my $db = $pg->db;
$db->query(
  'create table if not exists crud_test (

t/07-base-crud.t  view on Meta::CPAN

  ->hashes->to_array,
  [{id => 1, test1 => 'hello', test2 => 'world', test3 => 'hello'}],
  'right structure';

# Clean up once we are done
$pg->db->query('drop schema mojo_crud_test cascade');

done_testing();

 view all matches for this distribution


MojoMojo

 view release on metacpan or  search on metacpan

script/util/delete_inactive_users.pl  view on Meta::CPAN

            print "User ", $user->name, "has been disabled, and they edited ", scalar @user_pages, " pages:\n";
            print map {'    ' . $_->path . "\n" } @user_pages;
            print "Delete this user? ('yes'/anything else) ";
            my $answer = <STDIN>; chomp $answer;
            if ($answer eq 'yes') {
                # this nicely cascades to delete the revisions authored by the user in Content, 
                # and the Page and PageVersion if they are left without any Content revision
                $user->delete;  
                $users_deleted++;
            }
        }

 view all matches for this distribution


Mojolicious-Plugin-Angular-MaterialDesign

 view release on metacpan or  search on metacpan

lib/Mojolicious/Plugin/Angular/MaterialDesign/js/angular-material.min.js  view on Meta::CPAN

}return{restrict:"E",controller:n,scope:{mdOnLayout:"&"},link:a}}function n(e){this.layoutInvalidated=!1,this.tilesInvalidated=!1,this.$timeout_=e.nextTick,this.layoutDelegate=t.noop}function o(e){function n(t,n){var o,a,d,s,c,l;return s=e.time(funct...
this._$q.when(this);var t=this;return this._$q(function(n){var o=t._done(n,t),i=function(){t._$log.warn("MdPanel Animations failed. Showing panel without animating."),o()};e.animateOpen(t._panelEl).then(o,i)})},o.prototype._animateClose=function(){va...
return["$mdUtil","$window",function(n,o){return{restrict:"A",multiElement:!0,link:function(i,r,a){var d=i.$on("$md-resize-enable",function(){d();var s=r[0],c=s.nodeType===o.Node.ELEMENT_NODE?o.getComputedStyle(s):{};i.$watch(a[e],function(e){if(!!e==...
this.repeatListExpression=t.bind(this,this.repeatListExpression_),this.container.register(this)},r.prototype.cleanupBlocks_=function(){t.forEach(this.pooledBlocks,function(e){e.element.remove()})},r.prototype.readItemSize_=function(){if(!this.itemSiz...
return"md-chips>*["+e+"]"}).join(","),p=i(m)||u.remove,h=l||u["default"],f=i("md-chips>md-autocomplete")||i("md-chips>input")||u.input,g=r.find("md-chip");return r[0].querySelector("md-chip-template>*[md-chip-remove]")&&d.warn("invalid placement of m...
},function(e){e&&(l.updateErrorState(),f())})}}}function o(e,n,o,i,r,a,d,s,c,l,m){this.$window=i,this.dateLocale=s,this.dateUtil=c,this.$mdConstant=r,this.$mdUtil=d,this.$$rAF=l,this.documentElement=t.element(document.documentElement),this.ngModelCtr...
}return i.$modelValue}function n(e){e?c.off("click",l):c.on("click",l)}var o=this,i=this.ngModel,r=this.$scope,a=this.$attrs,d=(this.$element,this.mode);this.handleClick=t.bind(this,this.handleClick);var s=this.iconEl,c=t.element(this.buttonEl),l=thi...
}()}(window,window.angular),window.ngMaterial={version:{full:"1.1.0"}};

 view all matches for this distribution


Mojolicious-Plugin-Check

 view release on metacpan or  search on metacpan

MANIFEST  view on Meta::CPAN

t/011_undef.t
t/012_no_over.t
t/020_stashless.t
t/030_save.t
t/040_under.t
t/041_cascade.t
t/050_undef_pattern.t
t/080_noconflict.t
t/090_manifest.t
t/091_pod.t
META.yml                                 Module YAML meta-data (added by MakeMaker)

 view all matches for this distribution


Mojolicious-Plugin-DBViewer

 view release on metacpan or  search on metacpan

lib/Mojolicious/Plugin/DBViewer/public/js/jquery-1.9.1.js  view on Meta::CPAN


		values[ index ] = jQuery._data( elem, "olddisplay" );
		display = elem.style.display;
		if ( show ) {
			// Reset the inline display of this element to learn if it is
			// being hidden by cascaded rules or not
			if ( !values[ index ] && display === "none" ) {
				elem.style.display = "";
			}

			// Set elements which have been overridden with display: none

 view all matches for this distribution


Mojolicious-Plugin-DbicSchemaViewer

 view release on metacpan or  search on metacpan

lib/Mojolicious/Plugin/DbicSchemaViewer.pm  view on Meta::CPAN

                $condition =~ s{\n\s*?no feature.*?\n}{\n}g;
                $condition =~ s{\n\s{3,}\}}{\n\}};
                $condition =~ s{\n\s{8,8}}{\n    }g;
            }

            my $on_cascade = [ sort map { $_ =~ s{^cascade_}{}rm } grep { m/^cascade/ && $relation->{'attrs'}{ $_ } } keys $relation->{'attrs'}->%* ];

            # do not reorder
            my $relation_type = $relation->{'attrs'}{'accessor'} eq 'multi' ? 'has_many'
                              : $relation->{'attrs'}{'is_depends_on'}       ? 'belongs_to'
                              : exists $relation->{'attrs'}{'join_type'}    ? 'might_have'

lib/Mojolicious/Plugin/DbicSchemaViewer.pm  view on Meta::CPAN

            push $source->{'relationships'}->@* => {
                name => $relation_name,
                class_name => $class_name,
                clean_name => lc $class_name =~ s{::}{_}rg,
                condition => $condition,
                on_cascade => $on_cascade,
                $relation->%*,
                relation_type => $relation_type,
                has_reverse_relation => keys $rs->reverse_relationship_info($relation_name)->%* ? 1 : 0,
            };
        }

 view all matches for this distribution


Mojolicious-Plugin-Fondation-MigrationDBIx

 view release on metacpan or  search on metacpan

lib/Mojolicious/Plugin/Fondation/MigrationDBIx/Command/db.pm  view on Meta::CPAN

the already-configured C<schema_class> if the backend defines one.

=item C<--backend name>

Backend name to reference in the post-creation instructions. When omitted,
resolves via C<default_backend_name> (same cascade as other C<db> commands:
explicit C<Fondation::MigrationDBIx> C<backend> config -> DBIx::Async
C<default_backend> -> first backend).

=item C<--force>

 view all matches for this distribution


Mojolicious-Plugin-Fondation-Model-DBIx-Async

 view release on metacpan or  search on metacpan

t/01-model-helper.t  view on Meta::CPAN


# 5. Error on unknown model
eval { $c->model('nonexistent') };
like($@, qr/is not configured/, 'dies on unknown model');

# 6. default_backend_name helper — cascade tests
# 6a. No explicit, no default_backend config → first backend
is($c->default_backend_name, 'main', 'default_backend_name falls back to first backend');

# 6b. Explicit param wins over everything
is($c->default_backend_name('custom'), 'custom',

 view all matches for this distribution


Mojolicious-Plugin-Fondation-OpenAPI

 view release on metacpan or  search on metacpan

lib/Mojolicious/Plugin/Fondation/OpenAPI.pm  view on Meta::CPAN


=head2 Perl 5.40 Incompatibility

On Perl E<gt>= 5.40, L<Net::IDN::Encode> (a dependency of JSON::Validator
5.17+) fails to compile because its XS code calls C<uvuni_to_utf8_flags>,
removed from the Perl C API in 5.40. This cascades:

  Net::IDN::Encode → compile FAIL (Perl ≥ 5.40)
    → JSON::Validator 5.17+ → blocked by cpanm
      → Mojolicious::Plugin::OpenAPI 5.12 → blocked

 view all matches for this distribution


Mojolicious-Plugin-Fondation-Setup

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN


0.08      2026-07-14 17:30:11+02:00 Europe/Paris
    - Foundation::SessionStore is required

0.07      2026-07-14 17:24:15+02:00 Europe/Paris
    - Fix dependency cascade: aggressive uncheck + dev deps extraction
    - use Foundation::SessionStore dependency to pass the 4kb limit via cookies

0.06      2026-07-14 13:38:09+02:00 Europe/Paris
    - delete 'Mojolicious::Plugin::Fondation::Workflow' dependency

 view all matches for this distribution


Mojolicious-Plugin-Fondation

 view release on metacpan or  search on metacpan

lib/Mojolicious/Plugin/Fondation.pm  view on Meta::CPAN


=over 4

=item * Recursive plugin loading via C<dependencies>

=item * Configuration cascade: direct > app config > plugin defaults

=item * Automatic discovery and registration of C<share/templates>

=item * Application-level C<share/templates> have priority

lib/Mojolicious/Plugin/Fondation.pm  view on Meta::CPAN

    plugin 'Fondation';   # reads dependencies from config

=head1 CONFIGURATION PRIORITIES

Each plugin receives a merged configuration built from three sources,
combined with L<Hash::Merge>. The cascade priority is:

=head3 1. Direct configuration (passed in C<dependencies> array)

    plugin 'Fondation' => {
        dependencies => [

 view all matches for this distribution


Mojolicious-Plugin-GitConfig

 view release on metacpan or  search on metacpan

lib/Mojolicious/Plugin/GitConfig.pm  view on Meta::CPAN

  my $file = $conf->{file} || $ENV{MOJO_CONFIG} || "config";

  # if we use the git configuration files we have to do something a bit different
  if ($conf->{git})
  {
    $self->configdata(Mojolicious::Plugin::GitConfig::Config->new(confname=>"config",compatible => 1, cascade => 1));
    $self->configdata()->load();
    $app->log->info("git configuration files loaded");
  }
  else
  {

 view all matches for this distribution


Mojolicious-Plugin-Materialize

 view release on metacpan or  search on metacpan

lib/Mojolicious/Plugin/Materialize/js/materialize.js  view on Meta::CPAN

    calendarItem[ ( type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type ) ] = calendar.queue[ type ].split( ' ' ).map( function( method ) {
        value = calendar[ method ]( type, value, options )
        return value
    }).pop()

    // Check if we need to cascade through more updates.
    if ( type == 'select' ) {
        calendar.set( 'highlight', calendarItem.select, options )
    }
    else if ( type == 'highlight' ) {
        calendar.set( 'view', calendarItem.highlight, options )

 view all matches for this distribution


Mojolicious-Plugin-MySQLViewerLite

 view release on metacpan or  search on metacpan

lib/Mojolicious/Plugin/MySQLViewerLite/public/js/jquery-1.9.1.js  view on Meta::CPAN


		values[ index ] = jQuery._data( elem, "olddisplay" );
		display = elem.style.display;
		if ( show ) {
			// Reset the inline display of this element to learn if it is
			// being hidden by cascaded rules or not
			if ( !values[ index ] && display === "none" ) {
				elem.style.display = "";
			}

			// Set elements which have been overridden with display: none

 view all matches for this distribution


Mojolicious-Plugin-RevealJS

 view release on metacpan or  search on metacpan

share/public/revealjs/plugin/highlight/highlight.js  view on Meta::CPAN

	}
})();
// END CUSTOM REVEAL.JS INTEGRATION

/*! highlight.js v9.11.0 | BSD3 License | git.io/hljslicense */
!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(e){function n(e){return e.r...
c:[{cN:"comment",b:/\(\*/,e:/\*\)/},e.ASM,e.QSM,e.CNM,{b:/\{/,e:/\}/,i:/:/}]}});hljs.registerLanguage("roboconf",function(a){var e="[a-zA-Z-_][^\\n{]+\\{",n={cN:"attribute",b:/[a-zA-Z-_]+/,e:/\s*:/,eE:!0,starts:{e:";",r:0,c:[{cN:"variable",b:/\.[a-zA...

 view all matches for this distribution


Mojolicious-Plugin-RoutesAuthDBI

 view release on metacpan or  search on metacpan

lib/Mojolicious/Plugin/RoutesAuthDBI/Schema.pm  view on Meta::CPAN

  status int not null, --- http
  elapsed numeric not null ---seconds  from mojo.timer
);

@@ drop
--drop table "{%= $schema %}"."{%= $tables->{refs} %}" cascade;
--drop table "{%= $schema %}"."{%= $tables->{logins} %}" cascade;
--drop table "{%= $schema %}"."{%= $tables->{profiles} %}" cascade;
--drop table "{%= $schema %}"."{%= $tables->{roles} %}" cascade;
--drop table "{%= $schema %}"."{%= $tables->{routes} %}" cascade;
--drop table "{%= $schema %}"."{%= $tables->{controllers} %}" cascade;
--drop table "{%= $schema %}"."{%= $tables->{actions} %}" cascade;
--drop table "{%= $schema %}"."{%= $tables->{namespaces} %}" cascade;
--drop table "{%= $schema %}"."{%= $tables->{oauth_sites} %}" cascade;
--drop table "{%= $schema %}"."{%= $tables->{oauth_users} %}" cascade;

drop schema "{%= $schema %}" cascade;
drop sequence {%= $sequence %};

@@ flush
delete from "{%= $schema %}"."{%= $tables->{refs} %}";
delete from "{%= $schema %}"."{%= $tables->{logins} %}";

 view all matches for this distribution


Mojolicious-Plugin-SQLiteViewerLite

 view release on metacpan or  search on metacpan

lib/Mojolicious/Plugin/SQLiteViewerLite/public/js/jquery-1.9.1.js  view on Meta::CPAN


		values[ index ] = jQuery._data( elem, "olddisplay" );
		display = elem.style.display;
		if ( show ) {
			// Reset the inline display of this element to learn if it is
			// being hidden by cascaded rules or not
			if ( !values[ index ] && display === "none" ) {
				elem.style.display = "";
			}

			// Set elements which have been overridden with display: none

 view all matches for this distribution


Mojolicious

 view release on metacpan or  search on metacpan

lib/Mojolicious/resources/public/mojo/bootstrap/bootstrap.min.css.map  view on Meta::CPAN

{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","dist/css/bootstrap.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_color-mode.scss","../../scss/_reboot.scss","../../scss/mixins/_border-radius.scss","../../scss...

 view all matches for this distribution


MongoDBx-Class

 view release on metacpan or  search on metacpan

lib/MongoDBx/Class/Document.pm  view on Meta::CPAN


=head2 remove()

Both methods are equivalent. They are shortcut methods for invoking the
collection's C<remove()> method on this document only. So, umm, they remove
the document. But note that this operation does not cascade, so documents
which are considered dependant on this document (such as those that reference
it with C<belongs_to>) will not be removed too.

=cut

 view all matches for this distribution


Mongoose

 view release on metacpan or  search on metacpan

lib/Mongoose/Engine.pm  view on Meta::CPAN

    }

    return undef;
}

#sub delete_cascade {
#   my ($self, $args )=@_;
#   #TODO delete related collections
#}

sub db {

 view all matches for this distribution


Monitoring-GLPlugin

 view release on metacpan or  search on metacpan

lib/Monitoring/GLPlugin/SNMP/MibsAndOids/EMDMIB.pm  view on Meta::CPAN

  deviceInetIPAddress => '1.3.6.1.4.1.13742.8.1.1.1.10',
  deviceInetNetmask => '1.3.6.1.4.1.13742.8.1.1.1.11',
  deviceInetGateway => '1.3.6.1.4.1.13742.8.1.1.1.12',
  serverCount => '1.3.6.1.4.1.13742.8.1.1.1.13',
  model => '1.3.6.1.4.1.13742.8.1.1.1.14',
  cascadedDeviceConnected => '1.3.6.1.4.1.13742.8.1.1.1.15',
  logConfiguration => '1.3.6.1.4.1.13742.8.1.1.2',
  dataLogging => '1.3.6.1.4.1.13742.8.1.1.2.1',
  measurementPeriod => '1.3.6.1.4.1.13742.8.1.1.2.2',
  measurementsPerLogEntry => '1.3.6.1.4.1.13742.8.1.1.2.3',
  logSize => '1.3.6.1.4.1.13742.8.1.1.2.4',

 view all matches for this distribution


Monitoring-Livestatus-Class-Lite

 view release on metacpan or  search on metacpan

t/20-complex_filter.t  view on Meta::CPAN

        "Filter: state = 1",
        "Or: 2",
        "Filter: group >= linux",
    ],

    # cascaded query
    [
        -and => [
            -or => [
              state => { '='  => 0 },
              state => { '='  => 1 },

 view all matches for this distribution


Monitoring-Livestatus-Class

 view release on metacpan or  search on metacpan

t/20-complex_filter.t  view on Meta::CPAN

        "Filter: state = 1",
        "Or: 2",
        "Filter: group >= linux",
    ],

    # cascaded query
    [
        -and => [
            -or => [
              state => { '='  => 0 },
              state => { '='  => 1 },

 view all matches for this distribution


MooX-PluginKit

 view release on metacpan or  search on metacpan

lib/MooX/PluginKit/Consumer.pm  view on Meta::CPAN

    has_pluggable_object foo_bar => (
        class => 'Foo::Bar',
    );

This function acts like L<Moo/has> but adds a bunch of functionality,
making it easy to cascade the creation of objects which automatically
have applicable plugins applied to them, at run-time.

In the above C<foo_bar> example, the user of your class can then specify
the C<foo_bar> argument as a hashref.  This hashref will be used to
create an object of the C<Foo::Bar> class, but not until after any

 view all matches for this distribution


( run in 1.922 second using v1.01-cache-2.11-cpan-e7c6538aa59 )