# HG changeset patch # User Pranshu Sharma # Date 1734259097 -36000 # Node ID c98c7c32ab46237a28c405337d4973cb0593bdf5 # Parent bf4ae6f1dbbff10813b350d4d9bc385a528e0674 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 diff -r bf4ae6f1dbbf -r c98c7c32ab46 genorg.pl --- 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/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}); + } }