O execuţie a şablonului de cercetare multi-sursă a produs un raport bun despre instrumentele de investiţii, apoi l-a tipărit prost. Nouăzeci şi cinci de markeri de forma [^1] erau chiar în textul principal, iar nouă rânduri de forma [^1]: se îngrămădeau dedesubt. Atât pe web cât şi pe telefon.
Cauza este că notele de subsol nu fac parte din markdown. Este o extensie, iar niciunul dintre cele două motoare markdown pe care le livrăm — unul pe web, altul pe mobil — nu o implementează. Cerem modelului exact această formă, apoi o afişam ca text literal.
Un singur rescriitor, două motoare
În loc să învăţăm ambele randerizatoare aceeaşi extensie, markerii sunt rescrişi înainte ca oricare dintre ele să îi vadă, într-un link simplu pe care ambele îl redau deja identic. Definiţiile sunt extrase şi returnate separat, iar ceea ce le urma rămâne ca finalul documentului. Parantezele pătrate rămân în textul linkului, astfel încât citatele suprapuse se citesc ca [1][2], nu ca 12.
Pe web, citatul este desenat ca notă superioară, definiţiile sunt redate ca o listă cu ancore reale, un clic pe una derulează la ea şi face rândul să clipească, iar numărul din listă sare înapoi la primul loc unde a fost citat. Trecerea cu mouse-ul deasupra afişează definiţia fără a se deplasa. Pe telefon, aceiaşi markeri sunt desenaţi în culoarea de accent, iar atingerea unuia derulează panoul la rândul corespunzător. Linkurile care nu sunt citate continuă să se deschidă într-un browser, ca înainte.
Cardurile de surse de sub un raport nu au fost niciodată afectate — vin din altă parte şi au fost mereu în regulă.
Și în descărcare
Un raport pe care îl descarci ca .docx, .pdf sau .md trecea printr-un alt convertor, care tipărea markerii bruţi direct în document. O specificaţie de document nu are notă superioară, aşa că un citat este tipărit ca [3], iar fiecare definiţie deschide propriul rând care începe cu [3]. Rândurile de continuare indentate se alătură definiţiei lor. Numerele din fişier sunt aceleaşi cu numerele de pe ecran.
Prima încercare a fost greşită într-un mod pentru care aveam deja o protecţie
Prima versiune transforma numerele notelor de subsol în linkuri de fragment obişnuite — href="#fn-3". Sub <base href="/"> de care are nevoie o aplicaţie cu o singură pagină, un fragment gol se rezolvă în raport cu rădăcina site-ului, aşa că linkul indică pagina de start. Handler-ul de clic anula navigarea, aşa că funcţiona — şi ar fi continuat să funcţioneze până când cineva atingea acel handler.
O verificare pe care o aveam deja exact pentru acest tipar a devenit roşie la rularea locală înainte de push. Numerele sunt acum butoane; derulează, mută focalizarea, şi respectă preferinţa cititorului pentru mişcare redusă.