File Coverage

lib/Acpi/Class.pm
Criterion Covered Total %
statement 18 45 40.0
branch n/a
condition n/a
subroutine 6 11 54.5
pod 5 5 100.0
total 29 61 47.5


line stmt bran cond sub pod time code
1             package Acpi::Class;
2             {
3             $Acpi::Class::VERSION = '0.003';
4             }
5             # ABSTRACT: Inspired in Acpi::Battery, this module gets the contents of the directory '/sys/class' in terms of 'classes' (ArrayRef of directories in /sys/class), 'devices' (ArrayRef of subdirectory in class) and 'attributes' (HashRef attributes => values, from the contents of devices directory).
6              
7             # Modules {{{
8 1     1   5444 use 5.012;
  1         4  
  1         41  
9 1     1   7 use strict;
  1         2  
  1         34  
10 1     1   5 use warnings;
  1         6  
  1         39  
11 1     1   680 use Acpi::Class::Devices;
  1         3  
  1         8  
12 1     1   1169 use Acpi::Class::Attributes;
  1         2  
  1         10  
13 1     1   1075 use Object::Tiny::RW qw( class device );
  1         444  
  1         7  
14             # }}}
15              
16             sub g_classes #{{{ List directories (ArrayRef)
17             {
18 0     0 1   my $self = shift;
19 0           my $devices = Acpi::Class::Devices->new( dir => "/sys/class", pattern => qr/\w/x )->devices;
20 0           return $devices;
21             } #}}}
22              
23             sub g_devices #{{{ List directories (ArrayRef)
24             {
25 0     0 1   my $self = shift;
26 0           my $class = $self->class;
27 0           my $elements = Acpi::Class::Devices->new( dir => "/sys/class/$class", pattern => qr/\w/x )->devices;
28 0           return \@$elements;
29             }#}}}
30              
31             sub g_values #{{{ filenames = attributes, content = values (HashRef)
32             {
33 0     0 1   my $self = shift;
34 0           my ($class, $device) = ($self->class, $self->device);
35 0           my $values = Acpi::Class::Attributes->new( 'path' => "/sys/class/$class/$device" )->attributes;
36 0           return $values;
37             }#}}}
38              
39             sub p_device_values #{{{
40             {
41 0     0 1   my $self = shift;
42 0           my ($class, $device) = ($self->class, $self->device);
43 0           my $values = $self->g_values;
44 0           say "Device '$device': ";
45 0           foreach my $key (keys %$values)
46             {
47 0           my $value = $values->{$key};
48 0           say " ...$key = $value";
49             }
50 0           return 1
51             }#}}}
52              
53             sub p_class_values #{{{
54             {
55 0     0 1   my $self = shift;
56 0           my $class = $self->class;
57 0           say "Class '$class': ";
58 0           my $all_devices = $self->g_devices;
59 0           foreach my $dev (@$all_devices)
60             {
61 0           $self->device($dev);
62 0           $self->p_device_values;
63             }
64 0           return 1
65             }#}}}
66              
67             1;
68              
69             # pod {{{
70              
71             __END__