projects
/
irspy-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rename function trimFields to trimField
[irspy-moved-to-github.git]
/
lib
/
ZOOM
/
IRSpy
/
Utils.pm
diff --git
a/lib/ZOOM/IRSpy/Utils.pm
b/lib/ZOOM/IRSpy/Utils.pm
index
9c5f951
..
5c01a7b
100644
(file)
--- a/
lib/ZOOM/IRSpy/Utils.pm
+++ b/
lib/ZOOM/IRSpy/Utils.pm
@@
-1,4
+1,3
@@
-# $Id: Utils.pm,v 1.38 2009-04-15 18:16:45 wosch Exp $
package ZOOM::IRSpy::Utils;
package ZOOM::IRSpy::Utils;
@@
-6,6
+5,8
@@
use 5.008;
use strict;
use warnings;
use strict;
use warnings;
+use Scalar::Util;
+
use Exporter 'import';
our @EXPORT_OK = qw(utf8param
isodate
use Exporter 'import';
our @EXPORT_OK = qw(utf8param
isodate
@@
-19,7
+20,8
@@
our @EXPORT_OK = qw(utf8param
modify_xml_document
bib1_access_point
render_record
modify_xml_document
bib1_access_point
render_record
- calc_reliability);
+ calc_reliability_string
+ calc_reliability_stats);
use XML::LibXML;
use XML::LibXML::XPathContext;
use XML::LibXML;
use XML::LibXML::XPathContext;
@@
-102,6
+104,15
@@
sub isodate {
$year+1900, $mon+1, $mday, $hour, $min, $sec);
}
$year+1900, $mon+1, $mday, $hour, $min, $sec);
}
+# strips whitespaces and start and ends of a field
+sub trimField {
+ my $field = shift;
+
+ $field =~ s/^\s+//;
+ $field =~ s/\s+$//;
+
+ return $field;
+}
# I can't -- just can't, can't, can't -- believe that this function
# isn't provided by one of the core XML modules. But the evidence all
# I can't -- just can't, can't, can't -- believe that this function
# isn't provided by one of the core XML modules. But the evidence all
@@
-261,7
+272,7
@@
sub _irspy_identifier2target {
if !defined $id;
my($protocol, $target) = ($id =~ /(.*?):(.*)/);
if !defined $id;
my($protocol, $target) = ($id =~ /(.*?):(.*)/);
- if (uc($protocol) eq "Z39.50") {
+ if (uc($protocol) eq "Z39.50" || uc($protocol) eq "TCP") {
return "tcp:$target";
} elsif (uc($protocol) eq "SRU") {
return "sru=get,http:$target";
return "tcp:$target";
} elsif (uc($protocol) eq "SRU") {
return "sru=get,http:$target";
@@
-274,6
+285,11
@@
sub _irspy_identifier2target {
}
}
+# Modifies the XML document for which $xc is an XPath context by
+# inserting or replacing the values specified in the hash %$data. The
+# keys are fieldnames, which are looked up in the register
+# $fieldsByKey to determine, among other things, what their XPath is.
+
sub modify_xml_document {
my($xc, $fieldsByKey, $data) = @_;
sub modify_xml_document {
my($xc, $fieldsByKey, $data) = @_;
@@
-771,15
+787,25
@@
sub render_record {
}
}
-sub calc_reliability {
+sub calc_reliability_string {
+ my($xc) = @_;
+
+ my($nok, $nall, $percent) = calc_reliability_stats($xc);
+ return "[untested]" if $nall == 0;
+ return "$nok/$nall = " . $percent . "%";
+}
+
+
+sub calc_reliability_stats {
my($xc) = @_;
my @allpings = $xc->findnodes("i:status/i:probe");
my $nall = @allpings;
my($xc) = @_;
my @allpings = $xc->findnodes("i:status/i:probe");
my $nall = @allpings;
- return "[untested]" if $nall == 0;
+ return (0, 0, 0) if $nall == 0;
my @okpings = $xc->findnodes('i:status/i:probe[@ok = "1"]');
my $nok = @okpings;
my @okpings = $xc->findnodes('i:status/i:probe[@ok = "1"]');
my $nok = @okpings;
- return "$nok/$nall = " . int(100*$nok/$nall) . "%";
+ my $percent = int(100*$nok/$nall);
+ return ($nok, $nall, $percent);
}
}