Cache output, found the best soltuion
Instead of repilicating html tree to be reparsed, keep all the parsed
info in xml, and for links cache them as well.
Forgot to do more commits
--- a/genorg.pl Sat Dec 14 16:22:55 2024 +1000
+++ b/genorg.pl Sun Dec 15 20:38:17 2024 +1000
@@ -18,8 +18,10 @@
# Add config option for $max_rss and $max_cat
# Sort cataogirs by entires
# Variable for map_css
+# Remove the desc
# Domain thing as well
# Load custom filpe for htmlize and all that
+# 2 articles 1 day better sorting
my $cache = 1;
my $config_file = "genorg-conf";
@@ -29,7 +31,7 @@
my $css = "style.css";
my $map_css ="other.css";
my $no_name_dir = "c";
-my $cache_file = ".genorg/cache.xml";
+my $cache_file = "genorg-cache/cache.xml";
my $domain = "p.bauherren.ovh";
my $max_rss = 30;
# The first page has one less article. Think of it as a feature.
@@ -270,7 +272,7 @@
find (\&wanted, $dir);
mkdir for @files_to_make;
values %{conv_files()};
- # my $cache_dom = XML::LibXML->load_xml(location => $cache_dom) if $cache && -f $cache_file;
+ my $cache_dom = XML::LibXML->load_xml(location => $cache_file) if $cache && -f $cache_file;
chdir $outdir;
@arts = sort { $b->{date} <=> $a->{date}} map { html_fixup($_) } @org_exps;
chdir '..';
@@ -280,12 +282,31 @@
sub populate_cache {
my $dom = XML::LibXML::Document->new('1.0', 'UTF-8');
- my $title = $dom->createElement('title');
+ my $root = $dom->createElement('root');
+ my %c_els;
for my $art (@arts) {
- print Dumper($art);
+ # We need the: related, file, date
+ my ($art_el, $date, $title, $ca, $related) =
+ map {$dom->createElement($_)} ("art", "date", "title", "catag", "related");
+ $art_el->{path} = $art->{file};
+ $ca->appendText($art->{catag});
+ $title->appendText($art->{title});
+ $date->appendText($art->{date}->text_easy);
+ my $rel_str;
+ for my $thing ($art->{related}) {
+ for (@{$thing}) {
+ my ($catag, $artt) = @{$_};
+ my $rel_str .= "\"$catag\"" . ($artt && "->\"$artt\"");
+ $related->appendText("\"$catag\"" . ($artt && "->\"$artt\" "));
+ }
+ }
+ $art_el->appendChild($_) for ($date, $ca, $related);
+ $root->appendChild($art_el);
}
+ $root->appendChild($_) for values %c_els;
+ $dom->setDocumentElement($root);
open my $fh, '>' ,$cache_file;
- print $fh $dom->toString;
+ print $fh ($dom->toString(1) =~ s/(.+)/$1\n<!-- Nicley formated :() -->/r);
close $fh;
}
@@ -430,15 +451,22 @@
}
}
+# I don't want to prepopulate, as it is not known which ones are
+# usless and outdated, and it would be a waste of cycles parsing
+# something to know it is not needed
sub getcache {
-
+ $cache_dom || return 0;
+ return 0;
}
sub html_fixup ($filename) {
- # I don't want to prepopulate, as it is not known which ones are
- # usless and outdated
- for (getcache($filename)) {
- $_ && return $_;
+ # for (getcache($filename)) {
+ # $_ && return $_;
+ # }
+ unless (grep /^$filename$/, @modified_files) {
+ for (getcache($filename)) {
+ return $_ if $_
+ }
}
my $dom =
XML::LibXML->load_html(location => $filename, recover => 1);
@@ -540,6 +568,9 @@
my $self = shift;
join "-", ($self->{year}, $self->{month}, $self->{day});
}
-
+ sub text_easy {
+ my $self = shift;
+ join "-", ($self->{year}, $self->{month}, $self->{day});
+ }
}