File Coverage

blib/lib/Iterator/Flex/Role/Rewind/Closure.pm
Criterion Covered Total %
statement 30 30 100.0
branch n/a
condition n/a
subroutine 9 9 100.0
pod 1 1 100.0
total 40 40 100.0


line stmt bran cond sub pod time code
1             package Iterator::Flex::Role::Rewind::Closure;
2              
3             # ABSTRACT: Implement rewind as a closure stored in the registry
4              
5 41     41   186210 use v5.28;
  41         176  
6 41     41   188 use strict;
  41         60  
  41         950  
7 41     41   147 use warnings;
  41         54  
  41         2223  
8              
9             our $VERSION = '0.34';
10              
11 41     41   580 use Iterator::Flex::Base ();
  41         76  
  41         863  
12 41     41   131 use Iterator::Flex::Utils qw( :default REG_ITERATOR REG_ITER_REWIND );
  41         58  
  41         4738  
13 41     41   220 use Role::Tiny;
  41         62  
  41         233  
14 41     41   8387 use experimental 'signatures';
  41         96  
  41         241  
15              
16 41     41   4904 use namespace::clean;
  41         119  
  41         264  
17              
18              
19              
20              
21              
22              
23              
24              
25              
26              
27              
28 89     89 1 22147 sub rewind ( $self ) {
  89         111  
  89         112  
29              
30 89         341 $self->_apply_method_to_depends( 'rewind' );
31              
32 89         427 $REGISTRY{ refaddr $self }[REG_ITERATOR][REG_ITER_REWIND]->( $self );
33 89         197 $self->_clear_state;
34              
35 89         200 return;
36             }
37             *__rewind__ = \&rewind;
38              
39              
40             requires '_clear_state';
41              
42             1;
43              
44             #
45             # This file is part of Iterator-Flex
46             #
47             # This software is Copyright (c) 2018 by Smithsonian Astrophysical Observatory.
48             #
49             # This is free software, licensed under:
50             #
51             # The GNU General Public License, Version 3, June 2007
52             #
53              
54             __END__