File Coverage

lib/SIRTX/VM/Chunk/Type.pm
Criterion Covered Total %
statement 14 39 35.9
branch 0 10 0.0
condition n/a
subroutine 5 14 35.7
pod 5 5 100.0
total 24 68 35.2


line stmt bran cond sub pod time code
1             # Copyright (c) 2025 Philipp Schafft
2              
3             # licensed under Artistic License 2.0 (see LICENSE file)
4              
5             # ABSTRACT: module for interacting with SIRTX VM chunks
6              
7              
8             package SIRTX::VM::Chunk::Type;
9              
10 1     1   1693 use v5.16;
  1         4  
11 1     1   7 use strict;
  1         2  
  1         32  
12 1     1   6 use warnings;
  1         2  
  1         64  
13              
14 1     1   7 use Carp;
  1         2  
  1         103  
15              
16 1     1   13 use parent 'SIRTX::VM::Chunk';
  1         3  
  1         8  
17              
18             our $VERSION = v0.03;
19              
20             sub new {
21 0     0 1   my ($pkg, @opts) = @_;
22 0           my $self = $pkg->SUPER::new(@opts);
23 0           $pkg->_upgrade($self);
24 0           return $self;
25             }
26              
27             sub type {
28 0     0 1   my ($self, $n, @opts) = @_;
29              
30 0 0         croak 'Stray options passed' if scalar @opts;
31 0 0         croak 'Type is read only' if defined $n;
32              
33 0           return $self->SUPER::type($n, @opts);
34             }
35              
36             sub attach_data {
37 0     0 1   croak 'Cannot attach raw data on this type of chunk';
38             }
39              
40             sub write {
41 0     0 1   my ($self, @opts) = @_;
42 0 0         $self->_render unless $self->{no_render};
43 0           return $self->SUPER::write(@opts);
44             }
45              
46             sub read_data {
47 0     0 1   my ($self, @opts) = @_;
48 0 0         $self->_render unless $self->{no_render};
49 0           return $self->SUPER::read_data(@opts);
50             }
51              
52             # ---- Private helpers ----
53              
54             sub _upgrade {
55 0     0     my ($pkg, $self) = @_;
56 0           bless($self, $pkg);
57 0           $self->SUPER::type($self->_type);
58 0 0         unless (defined $self->{data}) {
59 0           $self->_create_data;
60             }
61              
62 0           local $self->{no_render} = 1;
63 0           $self->_parse;
64             }
65              
66             sub _create_data {
67 0     0     ...;
68             }
69              
70             sub _parse {
71 0     0     ...;
72             }
73              
74             sub _render {
75 0     0     ...;
76             }
77              
78             1;
79              
80             __END__
81              
82             =pod
83              
84             =encoding UTF-8
85              
86             =head1 NAME
87              
88             SIRTX::VM::Chunk::Type - module for interacting with SIRTX VM chunks
89              
90             =head1 VERSION
91              
92             version v0.03
93              
94             =head1 SYNOPSIS
95              
96             use SIRTX::VM::Chunk::Type;
97              
98             (experimental since v0.02)
99              
100             This package is an internal package.
101              
102             =head1 AUTHOR
103              
104             Philipp Schafft <lion@cpan.org>
105              
106             =head1 COPYRIGHT AND LICENSE
107              
108             This software is Copyright (c) 2025 by Philipp Schafft <lion@cpan.org>.
109              
110             This is free software, licensed under:
111              
112             The Artistic License 2.0 (GPL Compatible)
113              
114             =cut