Punteggiatura intelligente senza simboli IP

È possibile modificare le impostazioni di configurazione attuali relative al tipografo Markdown (noto anche come ‘punteggiatura intelligente’) per abilitare i segni di punteggiatura Unicode, come le virgolette e le trattine, ma disabilitare (c), ™ e potenzialmente altri glifi specializzati di questo tipo?

Sono un avvocato. Fornisco regolarmente consulenza su marchi registrati e diritti d’autore, anche sui forum Discourse. Non ho ancora consigliato a nessuno di modificare un post per aggiungere un simbolo di copyright o di marchio registrato, e i non avvocati tendono a sovrastimare enormemente la frequenza con cui tali simboli sono utili o necessari. Al contrario, ho modificato più post di quanti ne possa contare nel tentativo di ingannare il renderizzatore Markdown affinché non renda il simbolo ©.

Questo problema si presenta soprattutto nelle liste numerate. Ad esempio:

(a) mela
(b) banana
(c) copyright?
(d) data

Questo stile di enumerazione è molto comune nelle leggi, nei contratti, nelle policy e in altri testi formali influenzati dallo stile legale. È anche uno stile di scaletta molto diffuso. Faceva parte dello stile di scaletta ‘standard’ che mi è stato insegnato quando ero studente delle scuole elementari negli Stati Uniti.

Vedo che le impostazioni attuali offrono una certa flessibilità riguardo alla punteggiatura, ma, per quanto ne so, non sembrano esserci modi per abilitare la punteggiatura intelligente senza abilitare anche i simboli intelligenti.

9 Mi Piace

Non ho opinioni forti al riguardo: mi sembra che la necessità di digitare il simbolo del copyright sia così rara che questa scorciatoia possa essere rimossa. Il bilanciamento tra un’utilità estremamente rara e un formato abbastanza comune (ma poco elegante) come (a) (b) (c) mi porta a essere favorevole alla rimozione completa di questa specifica scorciatoia, @sam.

6 Mi Piace

Sarei anche favorevole a rimuovere semplicemente (c).

Non è difficile cercare “simbolo del copyright”, copiare e incollare. I nerd possono digitare ©.

Da un punto di vista dell’usabilità, avrei un elenco di tutte le espansioni. Sospetto fortemente che siano più sorprendenti che utili.

5 Mi Piace

Bene, per questo caso, il vantaggio (minuscolo) sembra superare il rischio (abbastanza significativo!).

5 Mi Piace

Non sembra molto configurabile; dovremmo patchare markdown.it per supportare questa flessibilità o semplicemente scrivere la nostra versione basata su markdown.it.

L’unica soluzione banale è disattivare l’intera funzionalità.

5 Mi Piace

Strano che non sia configurabile per nulla. Peccato. Quindi

(c) (tm) (r) (p) → (c) ™ (r) (p)

3 Mi Piace

Il lato positivo è che il motore è piuttosto configurabile: potremmo disattivare le regole in markdown.it, copiare il codice e implementare le nostre sostituzioni proprio come ha fatto @Roman → .

Alcuni giorni di lavoro per ripulire il tutto sarebbero un peccato, dato che significherebbe distribuire lo stesso codice due volte, ma è in qualche modo inevitabile se lo stiamo forkando.

3 Mi Piace

A partire dal commit 7b8969ce5cb2edc54f2c1aa39a85a3a08076337d su markdown-it master, il file sorgente rilevante è lib/rules_core/replacements.js e il fixture di test rilevante è test/fixtures/markdown-it/typographer.txt.

Tutte le sostituzioni sono codificate in modo statico. Includono (c) → (c), (tm) → ™, (r) → (r) e (p) → (p), che sono raggruppati come “abbreviazioni contestualizzate”.

Per completezza, non ottengo (p) per §. Dovrebbe quasi certamente essere ℗, il simbolo del fonoregistro, al suo posto.

Proverò a esaminare la questione per vedere se riesco a creare una patch che renda la funzionalità “typographer” più configurabile.

7 Mi Piace

Anche a me fa impazzire. Ci incastro almeno una volta a settimana.

9 Mi Piace

Innanzitutto, PR accessoria per correggere l’interpretazione di (p) e (P): Fix typographer interpretation of `(p)` by kemitchell · Pull Request #761 · markdown-it/markdown-it · GitHub

7 Mi Piace

PR per la disattivazione di gruppi di sostituzioni: Configurable typographer by kemitchell · Pull Request #762 · markdown-it/markdown-it · GitHub

3 Mi Piace

Il maintainer è estremamente reattivo. Chiude le mie PR in pochi minuti :stuck_out_tongue_winking_eye:

Da quanto leggo, è molto, molto riluttante a introdurre qualsiasi breaking change, anche nelle nuove versioni major, persino per cose come il rendering di (P) come §. È anche allergico all’idea di permettere opzioni nello stile typographer: {A: true, B: false}, anche quando typographer: true rimane funzionale, a causa della complessità percepita.

Leggo tra le righe, ed è un russo che scrive in inglese. Ma ho la sensazione che consideri markdown-it come un progetto “finito”.

Con tutto il rispetto, potrebbe valere la pena fare un fork dell’implementazione, riscriverla come ES Modules e rimuovere tutte le funzionalità di tipo plugin attualmente incluse, sia la linkificazione che le sostituzioni, incluse quelle tipografiche per la punteggiatura.

3 Mi Piace

Il manutentore non è interessato a punti riguardanti il codice duplicato nei bundle privi di numeri. Né è interessato a modifiche non distruttive dell’API che non siano “richieste dal 100% degli utenti” o che blocchino l’implementazione dei plugin. Questo crea una situazione di stallo, dato che stanno distribuendo due sottomoduli molto orientati ai plugin, per la linkificazione e la punteggiatura intelligente, che secondo questa filosofia dovrebbero essere effettivamente in piccoli pacchetti npm separati. Succede.

Per contestualizzare, ci sono state release significative di markdown-it in un passato relativamente recente. In particolare, un miglioramento delle prestazioni da parte di Alex Kocharin a novembre dello scorso anno.

Per correggere (c), gestire (p) e fare qualsiasi altra cosa vogliamo con le frecce e simili, la soluzione migliore è probabilmente proporre una patch che rimuova i sottomoduli di linkificazione e punteggiatura intelligente dal core e li carichi invece come plugin in Discourse. Utilizzare un’azione GitHub o un job cron per monitorare il ramo master di markdown-it e tentare un rebase automatico. Se il manutentore rimane così conservativo riguardo ai cambiamenti, la patch dovrebbe applicarsi correttamente per molto tempo. A meno che non compiano un grande salto, come riscrivere il tutto in ES Modules invece di CommonJS.

6 Mi Piace

Ne abbiamo discusso internamente e abbiamo deciso di effettuare un hard fork di typographer.

Disabiliteremo fondamentalmente typographer in markdown.it e ne implementeremo una copia in Discourse. markdown.it è incredibilmente estendibile, si tratta principalmente di “copia-incolla”.

Una volta completato il copia-incolla, potremo aggiungere test, personalizzare e modificare alcune delle regole.

9 Mi Piace

Ciao, scusa se riapro questa discussione. Dato che sto cercando un modo per disabilitare ... -> …, volevo sapere se questa funzionalità ha fatto qualche progresso e se in futuro potremo abilitare o disabilitare singole regole.

Grazie!

2 Mi Piace

È un’impostazione del sito, disabilita semplicemente il tipografo

2 Mi Piace

Beh, l’ho già provato, ma apparentemente non funziona. Non importa se abilito o disabilito il tipografo, le sostituzioni vengono sempre effettuate (e, a proposito, (c) non sembra funzionare)

2 Mi Piace

Devi disabilitare, quindi ricostruire l’HTML sui tuoi post desiderati

5 Mi Piace

Ora è davvero completo :confetti_ball:

2 Mi Piace