my $add_as_SQLTable = $v =~ s/${meta('SQL_TABLE')}/""/sexi;
my $isPostgreSQL = $v =~ s/${meta('SQL_PostgreSQL')}/""/sexi;
my $isAutonumber = $v =~ s/${meta('AUTO_NUMBERED')}|${meta('AUTONUMBER')}/""/sexi;
+ my $isConstant = $v =~ s/$meta_const//s;
my $isHeader = $v =~ s/${meta('HAS_HEADER')}/""/sexi;
$isHeader = 1 if !$isHeader && ($isAutonumber||$add_as_SQLTable||$isPostgreSQL);
+
my @hdr; my @rows; my $autonumber = 0;
my $ref = $self->{__DATA__}{$e};
if($ref){
}
}
my $ret = {name=>$e,header=>\@hdr,data=>\@rows,auto=>$autonumber};
+ if($isConstant && not exists $self->{$e}){
+ $self->{$e} = \$ret
+ }elsif($isConstant){
+ $self->warn("CONST $e has been previously assigned in -> ".$self->{CNF_CONTENT})
+ }
$self->{__DATA__}{$e} = \$ret
-
}
###
}
my @header = @$ptr;
my @data = @{$$table->{data}};
+ #$parser->log("Header size:".scalar(@header) );
for my $idx (0 .. $#data){
my @col = @{$data[$idx]};
if($idx==0){
- $col[4] = 'last_updated';
+ $col[5] = 'last_updated';
if(@header){
my @lbls = CNFMeta::_deRefArray($header[0]);
my @spec = CNFMeta::_deRefArray($header[3]);
- $lbls[4] = $col[4];
- $spec[4] = $CNFMeta::CNF_DATA_TYPES{DATE};
+ $lbls[5] = $col[5];
+ $spec[5] = $CNFMeta::CNF_DATA_TYPES{DATE};
$$table->{header} = \[\@lbls,$header[1],$header[2],\@spec];
}
}else{
$col[0] = $idx+1;
- $col[4] = $self-> {date} -> toTimestamp();
+ $col[5] = $self-> {date} -> toTimestamp();
}
$data[$idx]=\@col;
}
my @col = @{$data[$idx]};
$page .= qq|<li><span style="border: 1px solid black; padding: 5px; padding-bottom: 0px;">
<a onclick="return fetchFeed('$col[1]')" style="cursor: pointer;"> <b>$col[1]</b> </a></span>
- [ $col[4] ]<dt style="padding:10px;">$col[3]</dt></li>\n|;
+ <dt style="padding:5px;">$col[4]</dt><dt style="padding:5px;">Feed Refresh Rate: $col[3]</dt></li>\n|;
}
$page .= '</ol></div>';
$parser->data()->{PAGE} = \$page
}
my $page;
my @header = @$ptr;
- my @data = @{$$table->{data}};
my $cgi = $parser->const('CGI');
my $feed = $cgi->param('feed') if $cgi;
my @lbls = CNFMeta::_deRefArray($header[0]);
+ $ptr = $$table->{data};
+ my @data = @$ptr;
my %hdr;
- for(my $i=0;$i<@lbls;$i++){ #<- Column names are set here, if names in script are changed, They must be changed bellow.
- $hdr{$lbls[$i]} = $i
- }
- $parser->log("Feed request:$feed") if$feed;
+ try{
+ for(my $i=0;$i<@lbls;$i++){ #<- Column names are set here, if names in script are changed, They must be changed bellow.
+ $hdr{$lbls[$i]} = $i
+ }
+ $parser->log("Feed request:$feed data.size:" .scalar(@data)." hdr:".scalar(keys %hdr)) if$feed;
for my $idx (0 .. $#data){
my @col = @{$data[$idx]};
+ #$parser->log("Feed spec: @col");
my $name = $col[$hdr{Name}];
next if($feed && $feed ne $name);
my $tree = fetchFeed($self, $name, $col[$hdr{URL}], $col[$hdr{Expires}], $col[$hdr{Description}]);
$parser-> warn("Feed '$name' bailed to return a CNFNode tree.")
}
}
+ }catch{
+ $parser-> error("RSSFeedsPlugin\@collectFeeds() Error:$@")
+ }
$parser->data()->{PAGE} = \$page if $page;
}
### PerlCNF TREE to HTML Conversion Routine, XML based RSS of various Internet feeds convert to PerlCNF previously.
<@@< name varchar(32) not null >@@>
<@@< url varchar(1024) not null >@@>
<@@< description text >@@>
+ <@@< expires varchar(24) not null >@@>
<@@< last_updated datetime >@@>
]cols]
]table]
35`Income `Significant yearly income.~
>>
-<<RSS_FEEDS<DATA> __HAS_HEADER__
-ID`Name`URL`Description~
+<<RSS_FEEDS<DATA> __HAS_HEADER__ _CONST__
+ID`Name`URL`Description`Expires~
#`Perl Weekly`https://perlweekly.com/perlweekly.rss`A free, once a week e-mail round-up of hand-picked news and articles about Perl.
The Perl Weekly ( http://perlweekly.com/ ) is a newsletter including links to blog posts and other news items
- related to the Perl programming language.~
+ related to the Perl programming language.`3 business days~
>> <-- Disabled for now rest of data, to speed up tests ---
#`The Perl Foundation RSS Feed`https://news.perlfoundation.org/rss.xml`The Perl Foundation is dedicated to the advancement