File Coverage

blib/lib/Tie/Hash/HashData.pm
Criterion Covered Total %
statement 6 38 15.7
branch 0 8 0.0
condition n/a
subroutine 2 12 16.6
pod n/a
total 8 58 13.7


line stmt bran cond sub pod time code
1             package Tie::Hash::HashData;
2              
3 1     1   326630 use strict;
  1         2  
  1         38  
4 1     1   4 use warnings;
  1         2  
  1         468  
5              
6             our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
7             our $DATE = '2024-01-22'; # DATE
8             our $DIST = 'Tie-Hash-HashData'; # DIST
9             our $VERSION = '0.001'; # VERSION
10              
11             sub TIEHASH {
12 0     0     require Module::Load::Util;
13              
14 0           my $class = shift;
15 0           my ($hashdata) = @_;
16              
17 0 0         die "Please specify a HashData module to instantiate (string or 2-element array)" unless $hashdata;
18 0           my $hdobj = Module::Load::Util::instantiate_class_with_optional_args({ns_prefix=>"HashData"}, $hashdata);
19              
20 0           return bless {
21             _hdobj => $hdobj,
22             }, $class;
23             }
24              
25             sub FETCH {
26 0     0     my ($self, $key) = @_;
27 0 0         if ($self->{_hdobj}->has_item_at_key($key)) {
28 0           $self->{_hdobj}->get_item_at_key($key);
29             } else {
30 0           undef;
31             }
32             }
33              
34             sub STORE {
35 0     0     my ($self, $key, $value) = @_;
36 0           die "Not supported";
37             }
38              
39             sub DELETE {
40 0     0     my ($self, $key) = @_;
41 0           die "Not supported";
42             }
43              
44             sub CLEAR {
45 0     0     my ($self) = @_;
46 0           die "Not supported";
47             }
48              
49             sub EXISTS {
50 0     0     my ($self, $key) = @_;
51 0           $self->{_hdobj}->has_item_at_key($key);
52             }
53              
54             sub FIRSTKEY {
55 0     0     my ($self) = @_;
56 0           $self->{_hdobj}->reset_iterator;
57 0 0         if ($self->{_hdobj}->has_next_item) {
58 0           my $res = $self->{_hdobj}->get_next_item;
59 0           $res->[0];
60             } else {
61 0           undef;
62             }
63             }
64              
65             sub NEXTKEY {
66 0     0     my ($self, $lastkey) = @_;
67 0 0         if ($self->{_hdobj}->has_next_item) {
68 0           my $res = $self->{_hdobj}->get_next_item;
69 0           $res->[0];
70             } else {
71 0           undef;
72             }
73             }
74              
75             sub SCALAR {
76 0     0     my ($self) = @_;
77 0           $self->{_hdobj}->get_item_count;
78             }
79              
80             sub UNTIE {
81 0     0     my ($self) = @_;
82             #die "Not supported";
83             }
84              
85             # DESTROY
86              
87             1;
88             # ABSTRACT: Access HashData object as a tied hash
89              
90             __END__