Un'esecuzione del modello di ricerca multi-fonte ha prodotto un buon report sugli strumenti d'investimento, e poi lo ha stampato male. Novantacinque marcatori nella forma [^1] erano dentro la prosa, e nove righe nella forma [^1]: si ammucchiavano sotto. Sia sul web che sul telefono.
La causa è che le note a piè di pagina non fanno parte di markdown. Sono un'estensione, e nessuno dei due motori markdown che distribuiamo — uno sul web, un altro sul mobile — la implementa. Chiedevamo al modello esattamente questa forma, e poi la rendevamo come testo letterale.
Un solo riscrittore, due motori
Invece di insegnare la stessa estensione a entrambi i renderer, i marcatori vengono riscritti prima che uno dei due li veda, in un semplice link che entrambi già rendono in modo identico. Le definizioni vengono estratte e restituite separatamente, e ciò che le seguiva resta come coda del documento. Le parentesi quadre restano dentro il testo del link, così citazioni impilate si leggono [1][2], non 12.
Sul web la citazione è disegnata come apice, le definizioni sono rese come una lista con ancore reali, cliccare su una scorre fino a essa e fa lampeggiare la riga, e il numero nella lista salta indietro al primo punto in cui è stata citata. Passarci sopra mostra la definizione senza spostarsi. Sul telefono gli stessi marcatori sono disegnati nel colore d'accento, e toccarne uno scorre il pannello fino alla riga corrispondente. I link che non sono citazioni continuano ad aprirsi in un browser, come prima.
Le card delle fonti sotto un report non sono mai state toccate — provengono da un'altra parte ed erano sempre corrette.
E nel download
Un report che scarichi come .docx, .pdf o .md passava attraverso un altro convertitore, che stampava i marcatori grezzi direttamente nel documento. Una specifica di documento non ha l'apice, quindi una citazione viene stampata [3], e ogni definizione apre la propria riga iniziando con [3]. Le righe di continuazione indentate si uniscono alla loro definizione. I numeri nel file sono i numeri sullo schermo.
Il primo tentativo era sbagliato in un modo per cui avevamo già una protezione
La prima versione trasformava i numeri delle note a piè di pagina in semplici link di frammento — href="#fn-3". Sotto il <base href="/"> di cui ha bisogno un'app a pagina singola, un frammento nudo si risolve rispetto alla radice del sito, quindi il link punta alla homepage. Il gestore del click annullava la navigazione, quindi funzionava — e avrebbe continuato a funzionare finché qualcuno non avesse toccato il gestore.
Un controllo che avevamo già esattamente per questo pattern è diventato rosso nell'esecuzione locale prima del push. I numeri ora sono pulsanti; scorrono, spostano il focus e rispettano la preferenza di movimento ridotto del lettore.