Come posso intercettare e modificare il markdown dall'editor wmd markdown prima che venga pubblicato?
-
21-09-2019 - |
Domanda
Sto avviando un sito Stack Exchange e voglio essere in grado di intercettare il testo della domanda prima e dopo che lo script markdown lo raggiunge.
Voglio poter entrare [custom-tag]stuff to be altered[/custom-tag]
nella finestra della domanda, quindi rimuovere gli elementi da modificare (poiché il motore di markdown standard non sarà in grado di interpretarli) memorizzarli, quindi sostituire i tag nell'output con gli elementi da modificare dopo che sono stati modificati elaborato dal mio motore (lato server).
Sto fallendo al primo passo;Non riesco a trovare il javascript markdown.E' nascosto da qualche parte? /content/js/master.js
?
Modificare:Cercherò di renderlo un po' più chiaro con un esempio di ciò che sto cercando di ottenere.
Gestisco un sito SE orientato al poker.I giocatori discutono delle mani di poker ma invece di inserire la trascrizione in testo semplice di ciò che è accaduto in una mano, utilizzeranno un convertitore per renderlo più leggibile.
Quindi, invece di postare questo su un forum:
PokerStars Game #29112867044: Omaha Pot Limit ($100/$200) - 2009/06/07 19:51:27 ET Table 'Thomsen' 9-max Seat #2 is the button Seat 2: Mary & Joey ($14729 in chips) Seat 4: William ($28306 in chips) Mary & Joey: posts small blind $100 William: posts big blind $200 *** HOLE CARDS *** Mary & Joey: raises $400 to $600 William: calls $400 *** FLOP *** [6d Td 3c] William: checks Mary & Joey: checks *** TURN *** [6d Td 3c] [Kc] William: checks Mary & Joey: checks *** RIVER *** [6d Td 3c Kc] [7d] William: bets $600 Mary & Joey: folds Uncalled bet ($600) returned to William William collected $1198 from pot William: doesn't show hand *** SUMMARY *** Total pot $1200 | Rake $2 Board [6d Td 3c Kc 7d] Seat 2: Mary & Joey (button) (small blind) folded on the River Seat 4: William (big blind) collected ($1198)
andranno prima su un sito Web di terze parti e lo convertiranno in questo:
PokerStars Pot-Limit Omaha, $200,00 BB (2 mani)
SB ($14729)
BB ($28306)
Preflop:
SB punta $600, BB chiama $400
Flop: ($1200) 6, 10, 3 (2 giocatori)
Assegni BB, assegni SB
Giro:($ 1200) K (2 giocatori)
Assegni BB, assegni SB
Fiume: ($1200) 7 (2 giocatori)
BB scommette $600, 1 piega
Piatto totale: $1200 | Rake: $2
Voglio eliminare il passaggio in cui l'utente deve accedere a un sito Web di terze parti, incollarlo nella mano, selezionare l'output HTML e quindi copiare e incollare il risultato nella domanda.Voglio invece che siano in grado di racchiudere il test della mano grezza con i tag [hand][/hand] e la conversione verrà gestita automaticamente.
Modifica 2:
Dopo ulteriori indagini sembra che ciò non sia possibile (senza un sacco di JS hacky).Sarebbe necessario innanzitutto aggirare i problemi tra domini Ajax per utilizzare qualsiasi servizio esterno per eseguire la conversione.
Quindi, se riesci a sovrascrivere l'anteprima delle WMD, devi ancora capire cosa fare quando la risposta effettiva viene visualizzata normalmente.Un modo per farlo sarebbe fare in modo che JS cerchi il tag ogni volta che viene visualizzata una domanda o risposta e aggiorni il DOM con una versione convertita, il che farebbe schifo da un POV delle prestazioni.
Penso che dovrò aspettare e sperare che SE ci consenta qualche altro modo per ignorarlo.
Soluzione
WMD popola automaticamente l'elemento di anteprima durante la digitazione, giusto?Bene, è necessario avere un convertitore da qualche parte per farlo.Quel convertitore è Showdown (che potresti ottenere qui).Ecco il suo utilizzo (estratto dal file sorgente):
// Showdown usage:
var text = "Markdown *rocks*.";
var converter = new Showdown.converter();
var html = converter.makeHtml(text);
Ciò significa che non puoi semplicemente utilizzare l'elemento di anteprima fornito, a favore del tuo che compilerai tu stesso.Inoltre, dovrai ascoltare il keypress
evento sulla textarea tu stesso ed esegui l'analisi del testo, quindi chiama Showdown.Quando l'output è come preferisci, inseriscilo nel tuo elemento di anteprima.