отобразить подсвечиваемыйц пхп код используя prismjs

mstdmstd

Новичок
Всем привет,
Хочу установить prismjs как описано тут
http://prismjs.com/index.html
И отобразить на экране php-код в php/codeigniter/twig/javascript приложении
Сначала в контроле убираю все переводы строк, так как переводы строк ломают представление этой строки в javascript-е:
PHP:
       $file_content= (str_replace( array("\r","\n"), "/*BREAK LINE*/", $file_content ));
       $data = array( 'file_path' => $file_path, 'code_to_highlight' => $file_content, 'format'=> $format );
       $this->showTwigTemplate('code_highlight_page', $data, false, false, false);

$file_content - это содержимое небольшого php-файла

И в темплейте

Код:
<script src="{{ base_url }}static/js/jquery/jquery-1.11.1.min.js"></script>
<script src="{{ base_url }}static/js/jquery/jquery-ui-1.11.1.min.js"></script>


<link rel="stylesheet" href="{{ base_url }}static/bootstrap/css/bootstrap.min.css"/>

<link rel="stylesheet" href="{{ base_url }}static/css/prism.css"/>
<script type="text/javascript" src="{{ base_url }}static/js/prism.js"></script>

<script type="text/javascript">
    jQuery(document).ready(function ($) {

// The code snippet you want to highlight, as a string
        var code = "var data = 1;"; // если оставить только эту строку с кодом - то работает нормально
        var code = escape("{{ code_to_highlight | raw}}"); // Если есть эта строка, то работает но в полученном коде нет переноса строк
        alert( "code::"+(code) )
        code= code.replace( /\/\*BREAK LINE\*\//gm,  '\n'  ) ; // вернуть переносы строк
        alert( "++code::"+(code) )

            // Returns a highlighted HTML string
        var html = Prism.highlight( code, Prism.languages.php );
        $("#div_code_to_highlight").html(html)

    });

</script>
Первый алерт отображает такую строку:
Код:
code::<?php/*BREAK LINE*/class Mpricing extends CI_Model {/*BREAK LINE*//*BREAK LINE*/  public function getRow() {/*BREAK LINE*/    $query = $this->db->get_where('pricing', array(), 1, 0);/*BREAK LINE*/    $ResultRow = $query->result('array');/*BREAK LINE*/    if (!empty($ResultRow[0])) {/*BREAK LINE*/      return $ResultRow[0];/*BREAK LINE*/    }/*BREAK LINE*/    return false;/*BREAK LINE*/  }/*BREAK LINE*//*BREAK LINE*/  public function UpdatePricing( $DataArray) {/*BREAK LINE*/    $query = $this->db->get_where('pricing', array(), 1, 0);/*BREAK LINE*/    $ResultRow = $query->result('array');/*BREAK LINE*/    if (empty($ResultRow[0])) {/*BREAK LINE*/      $DataArray['created_at'] = AppUtils::ShowFormattedDateTime(time(), 'MySql');/*BREAK LINE*/      $Res = $this->db->insert('pricing', $DataArray);/*BREAK LINE*/      if ($Res)/*BREAK LINE*/        return mysql_insert_id();/*BREAK LINE*/    } else {/*BREAK LINE*/      $Res = $this->db->update('pricing', $DataArray, array('id' => $ResultRow[0]['id']));/*BREAK LINE*/      if ($Res)/*BREAK LINE*/        return $Res;/*BREAK LINE*/    }/*BREAK LINE*/  }/*BREAK LINE*//*BREAK LINE*/}/*BREAK LINE*//*BREAK LINE*//*BREAK LINE*/
Второй алерт отображает такую же строку как и выше, с переносами строк, так как они выглядят в исходном файле.

Но на экране отображается код БЕЗ переноса строк и отладчик также не отображает перенос строк:
http://i.imgur.com/kSPkVEj.png

В доке на сайте я не нашел как нужно обрабатывать многострочный текст...

Спасибо !
 

mstdmstd

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

mstdmstd

Новичок
Спасибо, получилось.
И еще: видимо этот плагин не умеет работать с файлами с разными данными : я моем случае это twig-файл с javascript блоками и последние он не выделяет.
Файл обрабатывался как twig:
Код:
            var html = Prism.highlight(code, Prism.languages.twig);
Видимо, файл нужно самому резать на куски и отдельно обрабатывать блоками и конкотенировать...Или можжно как-то проще ?
 
Сверху