Какой-либо хороший JavaScript синтаксический анализатор BBCode? [закрытый]

Используйте String.prototype.localeCompare на Ваш пример:

list.sort(function (a, b) {
    return ('' + a.attr).localeCompare(b.attr);
})

Мы вынуждаем a.attr быть строкой для предотвращения исключений. localeCompare поддерживался начиная с Internet Explorer 6 и Firefox 1. Можно также видеть, что следующий код использовал, который не уважает локаль:

if (item1.attr < item2.attr)
  return -1;
if ( item1.attr > item2.attr)
  return 1;
return 0;

11
задан Drevak 3 December 2009 в 22:16
поделиться

2 ответа

Я лично не использовал парсеры Javascript BBcode, но два первых результата Google ( bbcodejs и это сообщение в блоге ) кажутся довольно слабыми. Первый, кажется, поддерживает только простой поиск и замену, а второй, похоже, имеет заранее установленный встроенный BBcode, так что вам, вероятно, придется немного взломать его, если вы выберете это решение.

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

5
ответ дан 3 December 2019 в 08:30
поделиться

Если это не удалось, fgetc () возвращает EOF.

int c;
while ((c = getc(fr)) != EOF) 
{ 
    printf("%c", c); 
}
-121--4213605-

Измените

char c;
while((c = getc(fr)) != NULL)
{
    printf("%c", c);
}

на

char c;
int charAsInt;
while((charAsInt = getc(fr)) != EOF)
{
     c = (char) charAsInt;
     printf("%c", c);
}

Другими словами: необходимо сравнить с EOF , а не с NULL . Также необходимо использовать переменную int для получения возвращаемого значения из fgetc . Если вы используете символ , сравнение с EOF может завершиться неудачей, и вы вернетесь туда, где начали.

-121--4213610-

Это немного поздно, и на вопрос, безусловно, был дан ответ. Тем не менее, если вы все еще открыты для предложений и еще не потратили свое время на преобразование указанного синтаксического анализатора с C # в JavaScript, я написал синтаксический анализатор (первоначально в PHP), который я преобразовал сам [2] в JavaScript. Он доступен по адресу bitbucket в соответствии с 3-ой лицензией BSD. Синтаксический анализатор кажется достаточно быстрым, но я не провел никакого анализа его скорости.

Он может быть не таким гибким в некоторых отношениях, как другие возможные проекты, но он позволяет определить ваши собственные коды («bb-код» или нет, с большим количеством свойств), а также содержится в одном файле. Это не простой синтаксический анализатор поиска и замены, он не основан на regex.

Если это представляет для вас какой-либо интерес, это может избавить вас от необходимости конвертировать другую библиотеку. Технически, я родственник «неизвестный,» но это замечательные вещи в JS/OSS: вы можете проверить источник, чтобы увидеть, что я сделал.

[2] В результате осталось несколько «функций совместимости», но я переписал вещи, которые имели доступные собственные эквиваленты.

8
ответ дан 3 December 2019 в 08:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: