Re the meta title escaping issue worked around by change.

I suppose this does not only affect meta, but other things at scan time too. Also, handling it only on rebuild feels suspicious -- a refresh could involve changes to multiple pages and trigger the same problem, I think. Also, exposing this rebuild to the user seems really ugly, not confidence inducing.

So I wonder if there's a better way. Such as making po, at scan time, re-run the scan hooks, passing them modified content (either converted from po to mdwn or with the escaped stuff cheaply de-escaped). (Of course the scan hook would need to avoid calling itself!)

(This doesn't need to block the merge, but I hope it can be addressed eventually..)


I'll think about it soon.


Did you get a chance to? --Joey

I eventually did, and got rid of the ugly double rebuild of pages at build time. This involved adding a rescan hook. Rationale and details are in my po branch commit messages. I believe this new way of handling meta title escaping to be far more robust. Moreover this new implementation is more generic, feels more logical to me, and probably fixes other similar bugs outside the meta plugin scope. Please have a look when you can. --intrigeri

Glad you have tackled this. Looking at 25447bccae0439ea56da7a788482a4807c7c459d, I wonder how this rescan hook is different from a scan hook with last => 1 ? Ah, it comes after the preprocess hook in scan mode. Hmm, I wonder if there's any reason to have the scan hook called before those as it does now. Reordering those 2 lines could avoid adding a new hook. --Joey

Sure. I was fearing to break other plugins if I did so, so I did not dare to. I'll try this. --intrigeri

Done in my po branch, please have a look. --intrigeri

I've merged it. Didn't look at the changes closely; assume they're ok. done --Joey

My thinking about the reordering being safe is that the relative ordering of scan and preprocess in scan mode hooks has not been defined before, so it should be ok to define it. :)

And as to possible breakage from things that assumed the old ordering, such a thing would need to have a scan hook and a preprocess in scan mode hook, and the two hooks would need to populate the same data structure with conflicting information, in order for there to be a problem. That seems highly unlikely and would be pretty broken on its own. And no plugin in ikiwiki itself has both types of hooks. --Joey