File Coverage

blib/lib/Astro/SkyX/Application.pm
Criterion Covered Total %
statement 11 37 29.7
branch 0 10 0.0
condition 0 6 0.0
subroutine 4 8 50.0
pod 0 2 0.0
total 15 63 23.8


line stmt bran cond sub pod time code
1             package Astro::SkyX::Application;
2              
3 1     1   24 use 5.006001;
  1         3  
4 1     1   5 use strict;
  1         2  
  1         32  
5 1     1   5 use warnings;
  1         2  
  1         271  
6             require IO::Socket;
7             require Exporter;
8             require Astro::SkyX;
9              
10             #use vars qw( $SkyXConnection $_count );
11             our @ISA = qw(Exporter );
12              
13             # Items to export into callers namespace by default. Note: do not export
14             # names by default without a very good reason. Use EXPORT_OK instead.
15             # Do not simply export all your public functions/methods/constants.
16             our ($AUTOLOAD);
17             # This allows declaration use SkyX ':all';
18             # If you do not need this, moving things directly into @EXPORT or @EXPORT_OK
19             # will save memory.
20             our %EXPORT_TAGS = ( 'all' => [ qw(
21             new connect Send Get
22             ) ] );
23              
24             our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } );
25              
26             our @EXPORT = qw(
27             );
28              
29             our $VERSION = '0.11';
30             our @FUNCTIONS = qw( );
31              
32             # Preloaded methods go here.
33              
34             ##---##
35              
36             sub new {
37 0     0 0   my ($caller, %arg) = @_;
38 0           my $caller_is_obj = ref($caller);
39 0   0       my $class = $caller_is_obj || $caller;
40 0           my $self = bless {
41             _debug => $_[1],
42             }, $class;
43             # Private count increment/decrement methods
44             # $self->_incr_count();
45 0           return $self;
46             }
47              
48             sub AUTOLOAD ($;$) {
49 1     1   5 no strict "refs";
  1         2  
  1         520  
50 0     0     my ($self, @newval) = @_;
51 0           my $newtext = '';
52 0           my $js = "/* Java Script */ \r\n";
53 0 0         if ($AUTOLOAD =~ /.*::(.*::.*)/) {
54 0           my $method = $1;
55             # Let's build the javascript
56 0 0         $newtext = join ',', map{ /^[0-9.-]*$/ ? $_ : qq/'$_'/ }@newval;
  0            
57 0           $method =~ tr/::/./s;
58              
59 0           my ($package, $propertyName) = $AUTOLOAD =~ m/^(.+::)(.+)$/;
60 0 0 0       if(haveFunction($propertyName)){
    0          
61 0           $js .= $method . "(" . $newtext . ");\r\n";
62             } elsif(length($propertyName) and length($newtext) ){
63 0           $js .= $method . ' = ' . $newtext . ";\r\n";
64             } else {
65 0           $js .= $method . ";\r\n";
66             }
67 0           Astro::SkyX::Send($self,$js);
68 0           return Astro::SkyX::Get($self);
69             }
70 0           die "No such method: $AUTOLOAD";
71             }
72              
73             sub haveFunction{
74 0     0 0   my ($value) = @_;
75 0           for my $function (@FUNCTIONS){
76 0 0         if($function eq $value){
77 0           return "1";
78             }
79             }
80 0           return undef;
81             }
82              
83       0     sub DESTROY {
84             # $_[0]->_decr_count();
85             }
86              
87             1;
88             __END__