Estensione markdown per i pgn

Innanzitutto grazie @StellarClown , secondo spero tu possa perdonarmi perché scriverò un botto di roba.

L’idea è riuscire a vedere una partita a scacchi tramite notazione FEN.
Esiste un motore che fa il rendering ed è questo:

Sono riuscito a compilarlo e ho un unico .JS che si può usare.
Come integrarlo? WordPress ha una interfaccia sua e già le API per i suoi BBCode.

Noi usando la piattaforma Discourse di bianco usare altro, ma almeno il parser, ossia quello che leggerà un ipotetico BBCode così:
[pgnv width=100]
E1. d7
[\pgnv]

Penso si possa riciclare.

Quindi abbiamo una sorta di gerarchia di wrapper:

  • il motore (chiamato anche dist.js) vero e proprio che interpreta il FEN dentro il tag di apertura e di chiusura
  • il.parser (quello di WS?) Che leggere i parametri accessori (tipo il width di cui sopra), sovrascrivendo i valori di default e creerà la stringa per la chiamata al motore.
    Tale stringa è un HTML di questo tipo:

JavaScript
var board = PGNV.pgnBoard(‘board’, {});
HTML
<div id=“board” style=“width: 400px”>

Qui tutta la documentazione:

Ossia usando questo

function amazingMarkdownItInline(state, silent) {
// standard markdown it inline extension goes here.
return false;
}

export function setup(helper) {
if(!helper.markdownIt) { return; }

helper.registerOptions((opts,siteSettings)=>{
opts.features.[‘my_extension’] = !!siteSettings.my_extension_enabled;
});

helper.allowList([‘span.amazing’, ‘div.amazing’]);

helper.registerPlugin(md=>{
md.inline.push(‘amazing’, amazingMarkdownItInline);
});
}

Il secondo cercando di creare un nuovo BBCode usando alcuni nuovi creati in awesome BBCode

E un terzo cercando di sfruttare l’interfaccia (con tasto ad icona!) di un altro plugin, come l’OTP

GitHub - discourse/discourse-totp-markdown: Theme component for displaying totp codes in markdown.

Problemi.

  • non conosco JavaScript quindi ho fatto accrocchi basandomi su revese engineering totalmente euristico (leggi mezzo a casaccio).
  • se metto il motore dist.js, il tema non viene caricato. Quindi mi sono concentrato sull’interfaccia (vedi i tre temi)
  • i temi sono caricati ma sembra che non venga eseguito nulla o non sia caricato il JS introdotto.

I temi si possono vedere in anteprima senza metterli subito in uso, e c’è la console di amministrazione per vedere errori e messaggi.