File Coverage

blib/lib/Gherkin/AstNode.pm
Criterion Covered Total %
statement 22 24 91.6
branch 2 2 100.0
condition 4 6 66.6
subroutine 8 9 88.8
pod 0 6 0.0
total 36 47 76.6


line stmt bran cond sub pod time code
1             package Gherkin::AstNode;
2             $Gherkin::AstNode::VERSION = '39.0.0';
3 1     1   9 use strict;
  1         2  
  1         48  
4 1     1   6 use warnings;
  1         2  
  1         114  
5              
6 1     1   6 use Class::XSAccessor accessors => [ qw/rule_type/, ];
  1         2  
  1         12  
7              
8             sub new {
9 39     39 0 106 my ( $class, $rule_type ) = @_;
10 39         245 bless { rule_type => $rule_type, _sub_items => {} }, $class;
11             }
12              
13             sub add {
14 69     69 0 19828 my ( $self, $rule_type, $obj ) = @_;
15 69   100     109 push( @{ ( $self->{'_sub_items'}->{$rule_type} ||= [] ) }, $obj );
  69         812  
16             }
17              
18             sub get_single {
19 78     78 0 150 my ( $self, $rule_type ) = @_;
20 78         158 my $items = $self->{'_sub_items'}->{$rule_type};
21 78 100       370 return $items unless $items;
22 39         151 return $items->[0];
23             }
24              
25             sub get_items {
26 21     21 0 43 my ( $self, $rule_type ) = @_;
27 21   100     108 return $self->{'_sub_items'}->{$rule_type} || [];
28             }
29              
30             sub get_token {
31 21     21 0 49 my ( $self, $token_type ) = @_;
32 21         51 return $self->get_single($token_type);
33             }
34              
35             sub get_tokens {
36 0     0 0   my ( $self, $token_type ) = @_;
37 0   0       return $self->{'_sub_items'}->{$token_type} || [];
38             }
39              
40             1;