1. http://openid-provider.appspot.com/mr.maxq

    27.06.2008 00:55

    Например, пишу:

    <pre><code class="php"><?php
    the_time('j F Y'); // выведет «20 октября 2006»
    the_time('j F Y-—'); // выведет «20 Октябрь 2006»
    ?></code></pre>

    Получаю:

    <pre><code class="xml"><span class="pi"><?php
    the_time('j F Y'); // выведет «20 октября 2006»
    the_time('j F Y-—'); // выведет «20 Октябрь 2006»
    ?></span></code></pre>

    Так и должно быть? Где копать?
  2. Иван Сагалаев

    27.06.2008 01:13

    Есть подозрение, что в initHighlightingOnLoad переданы какие-то конкретные языки, и среди них нет 'php'. В этом случае хайлайтер про слово 'php' ничего не знает, и не воспринимает его, как указание языка.

  3. MaxQ

    27.06.2008 13:15

    Использую вот это:
    hljs.initHighlightingOnLoad('php', 'xml', 'javascript', 'sql', 'ini', 'html', 'css', 'ssh');
    PHP есть, как видно.

    На той же странице, например, код:
    function param($o) {
    for($i=3;$i<=5;$i++)
    if (isset($o[$i]))
    $r[substr($o[$i],1,strpos($o[$i],'=')-1)]=substr($o[$i],strpos($o[$i],'=')+1);
    return isset($r)?$r:false;
    }
    нормально определяется и подсвечивается как php, даже без явного указания языка.

    в highlight.js изменил лишь строку:
    var DEFAULT_LANGUAGES = ['ssh', 'python', 'ruby', 'perl', 'php', 'css', 'xml', 'html', 'django', 'javascript', 'java', 'cpp', 'sql', 'smalltalk', 'ini', 'diff'];
    добавив "'ssh', ".
  4. Иван Сагалаев

    27.06.2008 14:32

    Ой... Это я глупость говорю. Не заметил сразу, что у вас угловые скобки внутри <pre><code> не экранированы, и HTML воспринимает все содержимое как неизвестный тег . Надо так:

    <pre><code class="php">&lt;?php
    the_time('j F Y'); // выведет «20 октября 2006»
    the_time('j F Y-—'); // выведет «20 Октябрь 2006»
    ?&gt;</code></pre>
    
  5. MaxQ

    27.06.2008 15:41

    Они экранированы, выше я код из firebug'a скопировал, он уже заменил &lt; на < и т.д., в коде всё экранировано.

    Без <?php ?> он вообще удаляет моё class="php", остаётся просто <pre><code>, с <?php ?>, как видно из кода выше, определяет код, как xml.

    Проблема, остаётся, почему для highlight.js приоритетнее собственное мнение, моего явного указания языка? Так задумано?
  6. Иван Сагалаев

    27.06.2008 15:58

    Нет, явное указание приоритетней. На самом деле, я вставлял вот ровно тот код, который выше написал, в тестовый файлик, и он подсвечивается как PHP. А можете где-нибудь страничку выложить с этим кодом, чтобы было вживую видно, что он не работает?

  7. MaxQ

    27.06.2008 16:14

    Да, положил сюда — http://maxq.ru/test/.
  8. Иван Сагалаев

    27.06.2008 16:53

    М-м.. Так вот там нет class="php" ни в первом, ни втором фрагменте.

  9. Иван Сагалаев

    27.06.2008 16:55

    (Что, впрочем, не отменяет того, что надо бы мне не путать <?php с xml-ными processing instructions)

  10. MaxQ

    27.06.2008 17:09

    Ужас какой, догадался, моя ошибка, парсер вырезает class="php" :)
    Спасибо Вам, Иван. Простите за отнятое время.

    А фикс "<?php" жду в ближайших релизах :)

bbcode