[Date Prev][Date Next][Thread Prev][Thread Next] [Search] [Date Index] [Thread Index]

[MacPerl] Re: MacPerl scripts as BBEdit Includes



Jim--

>If you write
>
><!-- #bbinclude "foobar.pl" #val1#="flurbie" #val2#="the clown" -->
><!-- end bbinclude -->
>
>In your perl script you should write something like this
>
>#!perl -w
>use strict;
>
>my $file = shift @ARGV;
>my %args = @ARGV;
>
>print $file, "\n";
>print "val1: $args{val1}\n";
>print "val2: $args{val2}\n";

Believe it or not, this was enough of a start for me to solve the problem.

Since there are no arguments on the "command line" so to speak, I pulled 
the test on line 19.  Once I had everything else fixed, this test would 
still complain, and the script would die.

Here's the rewritten script, with my version of the foobar.pl script 
still embeded within it (returns useful info about the parsed file).  Now 
you can add RSS content to YOUR pages!

Call the script as follows:

<!-- #bbinclude rss2html.pl #val1#="(<RSS file> | <URL>)" -->
<!-- end bbinclude -->

Where the contents of val1 can be the FULL path to an RSS file on you 
local machine, or a URL like 

http://slashdot.org/slashdot.rdf

or more my speed, 

http://www.mycoinfo.com/downloads/mycoinfo.rdf

ENJOY!

#!perl -w
# rss2html - converts an RSS file to HTML
# It take one argument, either a file on the local system,
# or an HTTP URL like http://slashdot.org/slashdot.rdf
# by Jonathan Eisenzopf. v1.0 19990901
# See http://www.webreference.com/perl for more information
# modified for use as BBEdit include.

# INCLUDES
use strict;
use XML::RSS;
use LWP::Simple;

# Declare variables
my $content;
my $file;

# get the argument
my $thisfile = shift @ARGV;
my %args = @ARGV;

print '<!-- ', $thisfile, ' -->', "\n";
print '<!-- ', "URL/rss_file: $args{val1}", ' -->', "\n";

my $arg = $args{val1};

# create new instance of XML::RSS
my $rss = new XML::RSS;

# argument is a URL
if ($arg =~ /http:/i) {
    $content = get($arg);
    die "Could not retrieve $arg" unless $content;
    # parse the RSS content
    $rss->parse($content);

# argument is a file
} else {
    $file = $arg;
    die "File \"$file\" does't exist.\n" unless -e $file;
    # parse the RSS file
    $rss->parsefile($file);
}

# print the HTML channel
&print_html($rss);

# SUBROUTINES
sub print_html {
    my $rss = shift;
    print <<HTML;
<table border="0" width="184">
<tr>
<td bgcolor="#000000">
<table cellspacing="1" cellpadding="8" border=0 width="100%">
<tr>
<td valign="middle" align="center" bgcolor="#cccccc">
<font face="Arial,Helvetica">
<b><a 
href="$rss->{'channel'}->{'link'}">$rss->{'channel'}->{'title'}</a></b>
</font>
</td>
</tr>
<tr>
<td bgcolor="#ffffff">
HTML

    # print channel image
    if ($rss->{'image'}->{'link'}) {
	print <<HTML;
<center>
<p><a href="$rss->{'image'}->{'link'}"><img 
src="$rss->{'image'}->{'url'}" alt="$rss->{'image'}->{'title'}" border="0"
HTML
        print " width=\"$rss->{'image'}->{'width'}\""
	    if $rss->{'image'}->{'width'};
	print " height=\"$rss->{'image'}->{'height'}\""
	    if $rss->{'image'}->{'height'};
	print "></a></center><p>\n";
    }

    # print the channel items
    foreach my $item (@{$rss->{'items'}}) {
	next unless defined($item->{'title'}) && defined($item->{'link'});
	print "<font size='-1'><a 
href=\"$item->{'link'}\">$item->{'title'}</a><br><br></font>\n";
    }

    # if there's a textinput element
    if ($rss->{'textinput'}->{'title'}) {
	print <<HTML;
<form method="get" action="$rss->{'textinput'}->{'link'}">
$rss->{'textinput'}->{'description'}<br> 
<input type="text" name="$rss->{'textinput'}->{'name'}"><br>
<input type="submit" value="$rss->{'textinput'}->{'title'}">
</form>
HTML
    }

    # if there's a copyright element
    if ($rss->{'channel'}->{'copyright'}) {
	print <<HTML;
<p align="right">
<sub>$rss->{'channel'}->{'copyright'}</sub>
</p>
HTML
    }

    print <<HTML;
</td>
</tr>
</table>
</td>
</tr>
</table>
HTML
}

__END__

--B







Brian McNett, Webmaster
*************************************************************
Mycoinfo. The world's first mycology e-journal.
http://www.mycoinfo.com/
*************************************************************


# ===== Want to unsubscribe from this list?
# ===== Send mail with body "unsubscribe" to macperl-request@macperl.org