File Coverage

blib/lib/Finance/SE/OMX.pm
Criterion Covered Total %
statement 29 85 34.1
branch 4 40 10.0
condition 1 5 20.0
subroutine 7 9 77.7
pod 3 4 75.0
total 44 143 30.7


.*?(.*?)<\/TR>.*?<\/tbody>/si) { (.*?)<\/tbody>/si) { (.*?)<\/TR>/gs) { isn't a stock
line stmt bran cond sub pod time code
1             package Finance::SE::OMX;
2 1     1   28996 use strict;
  1         3  
  1         56  
3 1     1   5 use warnings;
  1         2  
  1         111  
4             our $VERSION = "1.00";
5              
6 1     1   8 eval "use LWP::Simple";
  1         2  
  1         4  
7             if ($@) {
8             die "This module needs LWP::Simple to function properly, or at all.";
9             }
10              
11 1     1   12 eval "use 5.6.0";
  1         4  
  1         40  
12             if ($@) {
13             warn "This module isn't tested for versions of Perl below 5.6.0\n".
14             "Consider updating your Perl distribution\n";
15             }
16 1     1   1084 use LWP::Simple;
  1         86025  
  1         10  
17              
18            
19              
20             sub new {
21 1     1 1 13 my $inv = shift;
22 1   33     10 my $class = ref($inv) || $inv;
23 1         3 my $self = {
24             @_
25             };
26 1         6 return bless $self, $class;
27             }
28              
29             sub get_data_short {
30 0     0 1 0 my $self = shift;
31 0 0       0 my $stockname = shift or die "no stockame supplied";
32 0         0 my $stockdata = get "http://www.se.omxgroup.com/stocklist.aspx?srch=$stockname&serch=true&list=all";
33 0         0 my @list;
34              
35 0 0       0 die "couldn't fetch data from server" unless defined $stockdata;
36 0 0       0 if ($stockdata =~ /
37 0         0 @list = $self->stocklist_parse($1);
38 0 0       0 return undef unless @list;
39             }
40             else {
41 0         0 return undef;
42             }
43 0 0       0 if ($list[11] !~ /$stockname/i) {
44 0         0 return undef;
45             }
46 0         0 return @list;
47             }
48              
49             sub stocklist_parse {
50 0     0 0 0 shift;
51 0   0     0 my $table = shift || die "no table sent to table-parser";
52 0         0 my @tds =();
53 0         0 my @retarr;
54             my $shortname;
55 0 0       0 if ($table =~ /(.*?)<\/TD>(.*)/si) {
56 0         0 $retarr[0] = $1;
57 0         0 $table = $3;
58 0 0       0 if ($2 =~ /(.*?)<\/nobr>/i) {
59 0         0 $shortname = $1;
60             }
61             else {
62 0         0 die "Couldn't get shortname";
63             }
64             }
65             else {
66 0         0 die "couldn't get company name";
67             }
68              
69 0         0 foreach ($table =~ /(.*?)<\/TD>/gsi) {
70 0         0 push @tds, $_;
71             }
72              
73 0 0       0 if (scalar(@tds) != 12) {
74 0         0 die "wrong number of fields";
75             }
76 0         0 foreach (1 .. 2) {
77 0 0       0 if ($tds[$_] =~ /(.*?)<\/FONT>/i) {
78 0         0 $retarr[$_] = $1;
79             }
80            
81             else {
82 0         0 $retarr[$_] = $tds[$_]; #Bättre än inget
83             }
84             }
85            
86 0         0 foreach (3..7) {
87 0         0 $retarr[$_] = $tds[$_];
88             }
89            
90 0         0 foreach(8..9) {
91 0 0       0 if ($tds[$_] =~ /(.*?)<\/nobr>/i) {
92 0         0 $retarr[$_] = $1;
93             }
94             else {
95 0         0 $retarr[$_] = $tds[$_];
96             }
97             }
98 0         0 $retarr[10] = $tds[11];
99 0         0 $retarr[11] = $shortname;
100 0         0 return @retarr;
101             }
102              
103             sub get_stocklist {
104 1     1 1 8 my $self = shift;
105 1         2 my $stocklist = shift;
106 1 50       5 if (!defined($stocklist)) { #can be zero
107 0         0 die "get_stocklist() needs a list number";
108             }
109 1         2 my $list;
110 1         1 my (@retlist, @trlist);
111            
112 1 50       7 die "get_stocklist() takes numerical list number" unless ($stocklist =~ /^\d+$/);
113 1 50       6 if ($stocklist == 0) {
    0          
    0          
    0          
    0          
    0          
114 1         9 $list = get "http://www.se.omxgroup.com/stocklist.aspx?list=SSE1&group=Kursnoteringar&listname=A-lista%20samtliga";
115             }
116             elsif ($stocklist == 1) {
117 0         0 $list = get "http://www.se.omxgroup.com/stocklist.aspx?list=SSE2&group=Kursnoteringar&listname=A-lista%20mest%20omsatta";
118             }
119             elsif ($stocklist == 2) {
120 0         0 $list = get "http://www.se.omxgroup.com/stocklist.aspx?list=SSE3&group=Kursnoteringar&listname=A-lista%20%C3%B6vriga";
121             }
122             elsif ($stocklist == 3) {
123 0         0 $list = get "http://www.se.omxgroup.com/stocklist.aspx?list=SSE43&group=Kursnoteringar&listname=O-lista%20samtliga";
124             }
125             elsif ($stocklist == 4) {
126 0         0 $list = get "http://www.se.omxgroup.com/stocklist.aspx?list=SSE10&group=Kursnoteringar&listname=O-lista%20mest%20Attract40";
127             }
128             elsif ($stocklist == 5) {
129 0         0 $list = get "http://www.se.omxgroup.com/stocklist.aspx?list=SSE42&group=Kursnoteringar&listname=O-lista%20%EF%BF%BDvriga";
130             }
131             else {
132 0         0 die "get_stocklist() takes a numerical argument of 0-5";
133             }
134 1 50       396043 if ($list =~ /
135 0         0 $list = $1;
136 0         0 foreach ($list =~ /
137 0         0 push @trlist, $_;
138             }
139 0         0 pop @trlist; #last
140 0         0 for(my $i = 0; $i
141 0         0 my @tmparr = $self->stocklist_parse($trlist[$i]);
142 0 0       0 if (@tmparr) {
143 0         0 $retlist[$i] = [@tmparr];
144             }
145             else {
146 0         0 die "error parsing \$trlist[$i]";
147             }
148             }
149             }
150 1         9 return @retlist;
151             }
152              
153             1;
154              
155             __END__