Как я могу перехватить и изменить уценку из редактора уценок wmd, прежде чем он отправит сообщения? - PullRequest
1 голос
/ 13 октября 2009

Я запускаю сайт Stack Exchange и хочу, чтобы можно было перехватить текст вопроса до и после того, как на него попадет скрипт уценки.

Я хочу иметь возможность ввести [custom-tag]stuff to be altered[/custom-tag] в окне вопроса, а затем удалить подлежащий изменению материал (так как стандартный механизм уценки не сможет его интерпретировать), сохранить его, а затем заменить теги в выводе с материалом, который будет изменен после того, как он был обработан моим собственным (серверным) движком.

Я терплю неудачу на первом шаге; Я не могу найти уценку JavaScript. Это где-то спрятано в /content/js/master.js?

Редактировать : Я постараюсь прояснить ситуацию с примером того, чего я пытаюсь достичь.

Я управляю покер-ориентированным сайтом SE. Игроки обсуждают покерные руки, но вместо того, чтобы вводить расшифровку стенограммы того, что произошло в руке, они используют конвертер, чтобы сделать его более читабельным.

Итак, вместо того, чтобы публиковать это на форуме:

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)

Сначала они перейдут на сторонний веб-сайт и преобразуют его в:

PokerStars Pot-Limit Omaha, $ 200,00 BB (2 руки)
SB ($ 14729)
BB ($ 28306)

Preflop
СБ ставит 600 долларов, ББ - 400

Флоп : (1200 долларов) 6 image, 10 image, 3 image (2 игрока)
BB-чеки, SB-чеки

Ход : (1200 $) K image (2 игрока)
BB-чеки, SB-чеки

Река : (1200 долларов) 7 image (2 игрока)
BB ставит $ 600, 1 раз

Общий банк: $ 1200 | Рейк: $ 2

Я хочу вырезать шаг, на котором пользователь должен перейти на сторонний веб-сайт, вставить в свои руки, выбрать вывод HTML, а затем скопировать и вставить результат в вопрос. Вместо этого я хочу, чтобы они просто могли обернуть необработанный ручной тест тегами [hand] [/ hand], и преобразование будет выполнено автоматически.

Редактировать 2:

При дальнейшем исследовании кажется, что это невозможно (без большого количества хакерских JS). Вначале нужно обойти проблемы междоменных доменов Ajax, чтобы использовать любой внешний сервис для конвертации.

Тогда, если вам удастся переопределить предварительный просмотр ОМУ - вам все равно придется решить, что делать, когда фактический ответ отображается нормально. Один из способов сделать это - заставить JS искать тег всякий раз, когда отображается какой-либо вопрос или ответ, и обновлять DOM с помощью преобразованной версии, которая будет отстойной от производительности POV.

Я думаю, мне придется подождать и надеяться, что SE позволит нам каким-то другим способом переопределить это.

1 Ответ

0 голосов
/ 16 октября 2009

WMD автоматически заполняет элемент предварительного просмотра при вводе, верно? Ну, для этого нужен где-то конвертер. Этот конвертер - Showdown (который вы можете получить здесь ). Вот его использование (извлечено из исходного файла):

// Showdown usage:

var text = "Markdown *rocks*.";

var converter = new Showdown.converter();
var html = converter.makeHtml(text);

Это означает, что вы просто не можете использовать предоставленный элемент предварительного просмотра в пользу своего собственного, который вы заполняете сами. Кроме того, вам нужно будет прослушать событие keypress в текстовой области и выполнить анализ текста, а затем вызвать Showdown. Когда вы получите желаемый результат, добавьте его в свой собственный элемент предварительного просмотра.

...