Filename | /Users/ether/.perlbrew/libs/36.0@std/lib/perl5/Data/Perl/Collection/Array/MooseLike.pm |
Statements | Executed 11 statements in 655µs |
Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
---|---|---|---|---|---|
1 | 1 | 1 | 527µs | 715µs | BEGIN@7 | Data::Perl::Collection::Array::MooseLike::
1 | 1 | 1 | 61µs | 189µs | BEGIN@5 | Data::Perl::Collection::Array::MooseLike::
1 | 1 | 1 | 17µs | 43µs | BEGIN@8 | Data::Perl::Collection::Array::MooseLike::
0 | 0 | 0 | 0s | 0s | __ANON__[:20] | Data::Perl::Collection::Array::MooseLike::
Line | State ments |
Time on line |
Calls | Time in subs |
Code |
---|---|---|---|---|---|
1 | package Data::Perl::Collection::Array::MooseLike; | ||||
2 | 1 | 0s | $Data::Perl::Collection::Array::MooseLike::VERSION = '0.001009'; | ||
3 | # ABSTRACT: Collection::Array subclass that simulates Moose's native traits. | ||||
4 | |||||
5 | 3 | 111µs | 3 | 317µs | # spent 189µs (61+128) within Data::Perl::Collection::Array::MooseLike::BEGIN@5 which was called:
# once (61µs+128µs) by Module::Runtime::require_module at line 5 # spent 189µs making 1 call to Data::Perl::Collection::Array::MooseLike::BEGIN@5
# spent 95µs making 1 call to strictures::import
# spent 33µs making 1 call to strictures::VERSION |
6 | |||||
7 | 2 | 343µs | 2 | 752µs | # spent 715µs (527+188) within Data::Perl::Collection::Array::MooseLike::BEGIN@7 which was called:
# once (527µs+188µs) by Module::Runtime::require_module at line 7 # spent 715µs making 1 call to Data::Perl::Collection::Array::MooseLike::BEGIN@7
# spent 37µs making 1 call to Exporter::import |
8 | 2 | 190µs | 2 | 69µs | # spent 43µs (17+26) within Data::Perl::Collection::Array::MooseLike::BEGIN@8 which was called:
# once (17µs+26µs) by Module::Runtime::require_module at line 8 # spent 43µs making 1 call to Data::Perl::Collection::Array::MooseLike::BEGIN@8
# spent 26µs making 1 call to Exporter::import |
9 | |||||
10 | 1 | 1µs | 1 | 4.22ms | with 'Data::Perl::Role::Collection::Array'; # spent 4.22ms making 1 call to Role::Tiny::With::with |
11 | |||||
12 | around 'splice' => sub { | ||||
13 | my $orig = shift; | ||||
14 | my @res = $orig->(@_); | ||||
15 | |||||
16 | # support both class instance method invocation style | ||||
17 | @res = blessed($res[0]) && $res[0]->isa('Data::Perl::Collection::Array') ? $res[0]->flatten : @res; | ||||
18 | |||||
19 | wantarray ? @res : $res[-1]; | ||||
20 | 1 | 4µs | 1 | 299µs | }; # spent 299µs making 1 call to Class::Method::Modifiers::around |
21 | |||||
22 | 1 | 6µs | 1; | ||
23 | |||||
24 | =pod | ||||
25 | |||||
26 | =encoding UTF-8 | ||||
27 | |||||
28 | =head1 NAME | ||||
29 | |||||
30 | Data::Perl::Collection::Array::MooseLike - Collection::Array subclass that simulates Moose's native traits. | ||||
31 | |||||
32 | =head1 VERSION | ||||
33 | |||||
34 | version 0.001009 | ||||
35 | |||||
36 | =head1 SYNOPSIS | ||||
37 | |||||
38 | use Data::Perl::Collection::Array::MooseLike; | ||||
39 | |||||
40 | my $array = Data::Perl::Collection::Array::MooseLike->new(qw/a b c d/); | ||||
41 | |||||
42 | my $scalar_context = $array->splice(0, 2); # removes and returns b | ||||
43 | |||||
44 | my @list_context = $array->splice(0, 2); # returns and removes (b, c) | ||||
45 | |||||
46 | =head1 DESCRIPTION | ||||
47 | |||||
48 | This class provides a wrapper and methods for interacting with an array. All | ||||
49 | methods are written to emulate/match existing behavior that exists with Moose's | ||||
50 | native traits. | ||||
51 | |||||
52 | =head1 DIFFERENCES IN FUNCTIONALITY | ||||
53 | |||||
54 | =over 4 | ||||
55 | |||||
56 | =item B<splice($args, ...)> | ||||
57 | |||||
58 | Just like Perl's builtin splice. In scalar context, this returns the last | ||||
59 | element removed, or undef if no elements were removed. In list context, this | ||||
60 | returns all the elements removed from the array. | ||||
61 | |||||
62 | This method requires at least one argument. | ||||
63 | |||||
64 | =back | ||||
65 | |||||
66 | =head1 SEE ALSO | ||||
67 | |||||
68 | =over 4 | ||||
69 | |||||
70 | =item * L<Data::Perl> | ||||
71 | |||||
72 | =item * L<Data::Perl::Role::Collection::Array> | ||||
73 | |||||
74 | =back | ||||
75 | |||||
76 | =head1 AUTHOR | ||||
77 | |||||
78 | Toby Inkster <tobyink@cpan.org> | ||||
79 | |||||
80 | =head1 COPYRIGHT AND LICENSE | ||||
81 | |||||
82 | This software is copyright (c) 2020 by Matthew Phillips <mattp@cpan.org>. | ||||
83 | |||||
84 | This is free software; you can redistribute it and/or modify it under | ||||
85 | the same terms as the Perl 5 programming language system itself. | ||||
86 | |||||
87 | =cut | ||||
88 | |||||
89 | __END__ |