FAQ-OMatic
view release on metacpan or search on metacpan
lib/FAQ/OMatic/Bags.pm view on Meta::CPAN
# 6211 Sudikoff Lab, Dartmouth College #
# Hanover, NH 03755-3510 #
# jonh@cs.dartmouth.edu #
# #
# An electronic copy of the GPL is available at: #
# http://www.gnu.org/copyleft/gpl.html #
# #
##############################################################################
use strict;
###
### The Bags module provides services related to bit bags,
### binary files stored with and linked to by a FAQ-O-Matic.
###
package FAQ::OMatic::Bags;
use FAQ::OMatic;
use FAQ::OMatic::Item;
sub getBagDesc {
# return an item containing descriptive properties about
# a bag
my $bagName = shift;
my $bagDesc = new FAQ::OMatic::Item($bagName.".desc",
$FAQ::OMatic::Config::bagsDir);
# if it didn't exist before...
$bagDesc->setProperty('Title', 'Bag Description');
$bagDesc->setProperty('filename', $bagName.".desc");
return $bagDesc;
}
sub getBagProperty {
my $bagName = shift;
my $property = shift;
my $default = shift || '';
my $bagDesc = getBagDesc($bagName);
return $bagDesc->getProperty($property) || $default;
}
sub saveBagDesc {
my $bagDesc = shift;
$bagDesc->saveToFile('',
$FAQ::OMatic::Config::bagsDir);
}
sub untaintBagName {
# untaint a bag name -- result is either a valid name or ''
my $name = FAQ::OMatic::untaintFilename(shift());
# Don't want user overwriting .desc files with binary bags -- YUK!
return '' if ($name =~ m/\.desc$/);
return $name;
}
sub updateDependents {
my $bagName = shift;
my $dependent;
foreach $dependent (FAQ::OMatic::Item::getDependencies("bags.".$bagName)) {
my $dependentItem = new FAQ::OMatic::Item($dependent);
$dependentItem->writeCacheCopy();
}
}
1;
( run in 0.643 second using v1.01-cache-2.11-cpan-39bf76dae61 )