1. prike

    16.04.2010

    0 ↑
    0 ↓
    Не подсвечиваются теги состоящие из одной буквы. Пример:
    <?xml version="1.0"?>
    <response value="ok" xml:lang="en">
    <t>Ok</t>
    <comment/>
    <ns:description><![CDATA[
    CDATA is <not> magical.
    ]]></ns:description>
    </response>
    Тег 't' не будет подсвечен (он не помечается классом tittle в отличии от тегов с неоднобуквенным названием). Это различие заметно с таблицами стилей в которых имя тега и угловые скобки его окружающие имеют разные стили, например Default, FAR. С другими таблицами стилей можно не заметить этой проблемы.
  2. Иван Сагалаев

    16.04.2010

    0 ↑
    0 ↓

    Спасибо, попробую поразбираться, как руки дойдут.

  3. prike

    16.04.2010

    0 ↑
    0 ↓
    Ok, не за что.

    Вот нашел еще одну ошибочку. Не совсем правильно (по стандарту) сделан парсинг аттрибутов. В частности XML содержащий определение алиасов неймспесов содержащих цифры, знак подчеркивания или точку не будут раскрашенны вообще (цифры, точка и знак подчеркивания разрешены согласно стандарту, также допустим еще ряд символов юникод: см. NCName - http://www.w3.org/TR/REC-xml-names/#ns-decl), если в самом неймспейсе присутствует точка.

    Пример:
    <example xml:ns1="www.blabla.com">
    <comment/>
    <ns1:bla>Some content</ns1:bla>
    </example>

    В этом случае неправильно выделяется лексема, вместо того что бы за лексему выбрать xml:ns1=, код выбирает xml:ns1="www. из-за этого неправильно определяется тип лексемы (mode в терминах кода).

    Причиной этому
    hljs.XML_ATTR = {
    className: 'attribute',
    begin: '\\s[a-zA-Z\\:-]+=', end: '^',
    contains: ['value']
    };

    Если заменить регулярное выражение на
    begin: '\\s[a-zA-Z0-9\\:-_.]+=', end: '^',

    то начинает работать точка, цифры и символ подчеркивания, не совсем уверен единственное ли это исправление и насколько оно вообще верно, плюс не имею доступа к исходному коду, не работал с BAZAAR, поэтому запостил сюда, надуюсь будет полезно.
  4. Иван Сагалаев

    16.04.2010

    0 ↑
    0 ↓

    Ага, это тоже поправлю. Ещё раз спасибо!

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.