Quiq
view release on metacpan or search on metacpan
lib/Quiq/ApplicationPaths.pm view on Meta::CPAN
# Denn getcwd liefert den realen Pfad und beinhaltet keine Symlinks.
# Wenn <version> ein Symlink ist, erscheint der reale Name im Pfad.
$path =~ s|^./||;
$path = sprintf '%s/%s',Cwd::getcwd,$path;
}
# HomeDir bestimmen, indem wir das Programm und $depth
# Verzeichnisse darüber vom Pfad entfernen
my @path = split m|/|,$path;
splice @path,-($depth+1);
my $homeDir = join '/',@path;
# <application> ist die letzte Pfadkomponente
my ($application,$etcPath,$varPath);
$application = pop @path;
# <prefix> erhalten wir nach dem Entfernen des
# Verzeichnisses oberhalb von <application>
lib/Quiq/File/Video.pm view on Meta::CPAN
my ($bitrate) = $xml =~ /\bbit_rate="(\d+)"/;
$self->set(bitrate=>int $bitrate/1000); # ffmpeg rechnet offenbar so
# Framerate
# MEMO: manchmal gibt es das Feld frame_rate nicht, sondern
# nur die r_frame_rate und avg_frame_rate.
my ($framerate) = $xml =~ /\b(?:avg_)?frame_rate="(.+?)"/;
if ($framerate =~ m|/|) {
my ($x,$y) = split m|/|,$framerate;
$framerate = Quiq::Formatter->normalizeNumber(
sprintf '%.2f',$x/$y);
}
$self->set(framerate=>$framerate);
# Dauer (millisekundengenau)
my ($duration) = $xml =~ /\bduration="([\d.]+)"/;
$duration = Quiq::Formatter->normalizeNumber(
sprintf '%.3f',$duration);
lib/Quiq/ImagePool.pm view on Meta::CPAN
# -----------------------------------------------------------------------------
sub cacheFile {
my $self = shift;
my $img = shift;
# @_: @args
my $cacheId;
my $basename = $img->basename;
my @path = split m|/|,$self->path;
if ($path[-2] eq 'img') {
$cacheId = "$path[-3]/$basename"; # Subdirectoy-Path
}
else {
$cacheId = "$path[-2]/$basename"; # Cache-Path
}
my $file = $self->root('cache/img');
$file .= sprintf '/%s,%s.%s',$cacheId,join('-',@_),$img->type;
lib/Quiq/ImagePool/Directory.pm view on Meta::CPAN
# Wenn eine nicht-leere Default-Sequenz existiert,
# liefern wir deren Bilder
return $seq->images;
}
# andernfalls liefern wir alle Bilder des Verzeichnisses
return $self->imageList->images;
}
# Liefere die Bilder der Sequenz oder des Range
my ($sequence,$range) = split m|/|,$key;
return $self->sequence($sequence)->images($range);
}
# -----------------------------------------------------------------------------
=head3 image() - Lookup Bild-Objekt nach Bild-Nummer
=head4 Synopsis
$img = $dir->image($n);
lib/Quiq/Program.pm view on Meta::CPAN
# Einen relativen Pfad machen wir zu einem absoluten
# Pfad, indem wir ihn um das aktuelle Verzeichnis ergänzen.
$path =~ s|^./||;
$path = sprintf '%s/%s',$self->cwd,$path;
}
# InstallDir bestimmen, indem wir das Programm und $depth
# Verzeichnisse darüber vom Pfad entfernen
my @path = split m|/|,$path;
splice @path,-($depth+1);
my $dir = join '/',@path;
return $dir;
}
# -----------------------------------------------------------------------------
=head2 Zeit
lib/Quiq/String.pm view on Meta::CPAN
else {
# einzeilger Kommentar
$regex = qr/(?:^|(?<=[\t ]))\Q$start\E .*/m;
}
# Spaces u. Tabs an Zeilenenden entfernen
$code =~ s|[\t ]+$||mg;
# Entferne alle Kommentare aus dem Quelltext und speichere die
# übrigbleibenden Fragmente in einem Array
my @frag = split m|$regex|s,$code;
if (@frag) {
if ($frag[-1] =~ /^$/) {
# End-Kommentar, da das letzte Element "leer" ist. Ein
# End-Kommentar zeichnet sich dadurch aus, dass wir
# Leerzeilen ggf. *davor* entfernen müssen. Vorgehen:
# 1) Wir entfernen das letzte Element
# 2) Wir entfernen Whitspace am Ende des vorhergehenden
# Elements, bis auf ein Newline, falls vorhanden
pop @frag;
lib/Quiq/Terminal.pm view on Meta::CPAN
$color = $class->ansiEsc($color);
$reset = $class->ansiEsc('reset');
}
# Prompt generieren: "$prompt [$val1,$val2,...] ($def)"
$prompt = sprintf '%s%s%s',$color,$prompt,$reset;
my (@values,$valuesText);
if ($values) {
for my $val (split m|[/,]|,$values) {
my $text = $val;
if ($val =~ /\((.+)\)/) {
# (y)es,(a)bort
$val = $1;
$text = sprintf '%s(%s%s%s)%s',$`,$color,$val,$reset,$';
}
elsif ($val =~ /^(.*?)=(.*)/) {
# y=yes,a=abort
$val = $1;
$text = sprintf '%s%s%s=%s',$color,$val,$reset,$2;
( run in 1.682 second using v1.01-cache-2.11-cpan-71847e10f99 )