Como posso interceptar e modificar o Markdown do WMD Markdown Editor antes de postar?
-
21-09-2019 - |
Pergunta
Estou iniciando um site de troca de pilhas e quero poder interceptar o texto da pergunta antes e depois que o script de remarkdown chega a ele.
Eu quero ser capaz de entrar [custom-tag]stuff to be altered[/custom-tag]
na janela das perguntas e depois ter as coisas a serem alteradas (como o mecanismo de marcação padrão não poderá interpretá -lo) e substitua as tags na saída pelo material a ser alterado depois de ter sido processado pelo meu próprio mecanismo (do lado do servidor).
Estou falhando na primeira etapa; Não consigo encontrar o JavaScript de Markdown. Está em algum lugar escondido em /content/js/master.js
?
Editar: Vou tentar deixar isso um pouco mais claro com um exemplo do que estou tentando alcançar.
Estou executando um site SE orientado para o poker. Os jogadores discutem as mãos do poker, mas, em vez de entrar na transcrição de texto simples do que aconteceu em uma mão, eles usarão um conversor para torná -lo mais legível.
Então, em vez de postar isso em um fórum:
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)
Eles primeiro irão para um site de terceiros e o converterão para isso:
PokerStars Pot-Limit Omaha, US $ 200,00 BB (2 mãos)
SB (US $ 14729)
BB (US $ 28306)
Pré -flop:
SB apostas $ 600, BB liga para $ 400
Flop: ($1200) 6, 10, 3 (2 jogadores)
Verificações de BB, verificações SB
Virar: (US $ 1200) K (2 jogadores)
Verificações de BB, verificações SB
Rio: ($1200) 7 (2 jogadores)
BB Aposto $ 600, 1 dobra
Pote total: $1200 | Ancinho: $2
Quero cortar a etapa em que o usuário precisa ir para um site de terceiros, colar em suas mãos, selecionar Saída HTML e copiar e colar o resultado na pergunta. Em vez disso, quero que eles possam enrolar o teste de mão bruto com as tags [da mão] [/mão] e a conversão será tratada automaticamente.
Editar 2:
Em uma investigação mais aprofundada, parece que isso não é possível (sem muitos JS hacky). É necessário contornar os problemas de domínio cruzado do Ajax primeiro para usar qualquer serviço externo para fazer a conversão.
Então, se você conseguir substituir a visualização do WMD - você ainda precisará descobrir o que fazer quando a resposta real for renderizada normalmente. Uma maneira de fazer isso seria fazer com que o JS procure a tag sempre que qualquer pergunta ou resposta for renderizada e atualizar o DOM com uma versão convertida -que sugaria um POV de desempenho.
Acho que vou ter que esperar e espero que se permitir uma outra maneira de substituirmos isso.
Solução
O WMD preenche automaticamente o elemento de visualização conforme você digita, certo? Bem, ele precisa ter um conversor em algum lugar para fazer isso. Esse conversor é confronto (que você poderia obter aqui). Aqui está o seu uso (retirado do arquivo de origem):
// Showdown usage:
var text = "Markdown *rocks*.";
var converter = new Showdown.converter();
var html = converter.makeHtml(text);
Isso significa que você simplesmente não pode usar o elemento de visualização que é fornecido, a favor do seu, que você se preencha. Além disso, você precisará ouvir o keypress
Evento na textarea e faça a sua análise do texto, seguida de chamadas de confronto. Quando a saída for como você quiser, jogue -o no seu próprio elemento de visualização.