package HTML::LBI;
#############################################################
# HTML::LBI
# Whyte.Wolf DreamWeaver HTML Library Module
# Version 2.00
#
# Copyright (c) 2002 by S.D. Campbell
#
# Created 03 February 2002; Revised 12 February 2002 by SDC
#
# Description:
# A perl module for use with CGI scripts that opens a
# Macromedia Dreamweaver library file (.lbi) and returns
# the resulting HTML code snippet.
#
#############################################################
#
# Construction:
# use HTML::LBI;
#
# $html = new HTML::LBI("file.lbi");
#
# Use:
# Create a new instance of HTML::LBI as above by passing
# a pathname to the library file (absolute or relative)
# to the constructor. The constructor will return
# the HTML from the .lbi file, which can then be printed out.
#
# Errors:
# Should the library file fail to open an error will be set
# in $HTML::LBI::errmsg
#
#############################################################
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#############################################################
use Exporter;
use Carp;
use File::Find;
use File::Basename;
@ISA = qw(Exporter);
@EXPORT = qw();
@EXPORT_OK = qw($errmsg);
use strict;
use vars qw($errmsg $VERSION @ISA @EXPORT @EXPORT_OK $filepath $fname);
$VERSION = '2.00';
$errmsg = "";
$filepath ='';
$fname = '';
#############################################################
# new
#
# The constructor for the class. Requires a HTML Library
# filename. Returns a reference to the new object or undef
# on error.
sub new {
my $class = shift;
my %params = @_;
my @search = ();
my $self = {};
if (!$params{filename}){
$params{filename} = $_[0];
}
$$self{filename} = $params{filename};
$$self{lbi} = _beginLbi($$self{filename});
if (exists($params{path})){
if (ref($params{path}) ne 'ARRAY') {
$$self{path} = [ $params{path} ];
}
$$self{path} = $params{path};
} else {
$$self{path} = './';
}
foreach my $path ($$self{path}){
push @search, $path;
}
if ($ENV{'HTML_TEMPLATE_ROOT'}) {
my $temproot = $ENV{'HTML_TEMPLATE_ROOT'};
push @search, $temproot;
}
if ($ENV{'DOCUMENT_ROOT'}) {
my $docroot = $ENV{'DOCUMENT_ROOT'};
push @search, $docroot;
}
if (substr($$self{filename}, 0, 1) ne '/') {
$fname = $$self{filename};
foreach my $dir (@search){
find(\&_wanted, $dir);
}
if (!$filepath) {
$filepath = $$self{filename};
}
} elsif (substr($$self{filename}, 0, 8) eq '/Library') {
my ($name, $path, $suffix) = fileparse($$self{filename}, '\.lbi');
$fname = $name . $suffix;
foreach my $dir (@search){
find(\&_wanted, $dir);
}
if (!$filepath) {
$filepath = $$self{filename};
}
} else {
$filepath = $$self{filename};
}
unless(open(LBI_FILE, $filepath)){
$errmsg = "Library File $filepath not opened: $!\n";
return undef;
}
while(){
$$self{lbi} .= $_;
}
$$self{lbi} .= _endLbi();
bless $self, $class;
return $$self{lbi};
}
#############################################################
# _beginLbi
#
# Returns the begin library string and file name back into
# the parsed HTML.
sub _beginLbi {
my $filename = shift;
return "\n\n";
}
#############################################################
# _endLbi
#
# Returns the end library string back into the parsed HTML.
sub _endLbi {
return "\n\n";
}
#############################################################
# _wanted
#
# Returns the path to a file (if it exists).
sub _wanted {
/$fname$/ or return;
$filepath = $File::Find::name;
}
1;
__END__
=head1 NAME
HTML::LBI - DreamWeaver HTML Library Module
=head1 SYNOPSIS
use HTML::LBI;
$html = new HTML::LBI(
filename => 'file.lbi',
path => '/path/to/file'
);
=head1 DESCRIPTION
A perl module for use with CGI scripts that opens a
Macromedia Dreamweaver library file (.lbi) and returns
the resulting HTML code snippet.
=head1 METHODS
=head2 Creation
$lbi = new HTML::LBI("file.lbi");
$lbi = new HTML::LBI(
filename => 'file.lbi',
path => '/path/to/file'
);
Creates a new HTML::LBI object and loads HTML from the Dreamweaver
library 'file.lbi' (can specify a relative or absolute path). Returns
the HTML from the library, which could then be printed to STDOUT.
=head1 DIAGNOSTICS
=over 4
=item Library File $file not opened:
(F) The library file was not opened properly.
This message is stored in $HTML::LBI::errmsg
=back
=head1 AUTHOR
S.D. Campbell, whytwolf@spots.ab.ca
=head1 SEE ALSO
perl(1), HTML::Template, HTML::DWT.
=head1 LICENSE
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
=cut