You are here

function xbbcode_highlighter_highlight in Extensible BBCode 5

3 calls to xbbcode_highlighter_highlight()
xbbcode_highlighter_filter in xbbcode_highlighter/xbbcode_highlighter.module
xbbcode_highlighter_filter_tips in xbbcode_highlighter/xbbcode_highlighter.module
xbbcode_highlighter_xbbcode in xbbcode_highlighter/xbbcode_highlighter.module

File

xbbcode_highlighter/xbbcode_highlighter.module, line 411

Code

function xbbcode_highlighter_highlight($code, $text, $numbers) {

  /* only require these once the filter is needed. */
  if (!@(include_once 'Text/Highlighter.php')) {
    drupal_set_message(t("The Text_Highlighter library could not be found. You will need to !reinstall it.", array(
      '!reinstall' => l(t("reinstall"), 'admin/settings/highlighter'),
    )), 'error');
    return $text;
  }
  include_once "Text/Highlighter/Renderer.php";
  include_once "Text/Highlighter/Renderer/Html.php";
  $dir = drupal_get_path('module', 'xbbcode_highlighter');
  if (!file_exists("{$dir}/classes/{$code}.php")) {

    //var_dump("$dir/classes/$code.php");
    drupal_set_message(t("The generated class for the %code language was not found.", array(
      '%code' => $code,
    ) . "{$dir}/classes/{$code}.php"), 'error');
    return $text;
  }
  include_once "{$dir}/classes/{$code}.php";
  $text = html_entity_decode($text);
  drupal_add_css(drupal_get_path('module', 'xbbcode_highlighter') . '/xbbcode_highlighter.css');
  $options = array(
    'numbers' => $numbers ? HL_NUMBERS_LI : '',
    'tabsize' => 8,
  );
  $text = trim($text, "\n\r ");
  $renderer =& new Text_Highlighter_Renderer_HTML($options);
  $hl =& Text_Highlighter::factory($code);
  $call = array(
    $hl,
    'setRenderer',
  );
  if (is_callable($call)) {
    $hl
      ->setRenderer($renderer);
  }
  else {
    drupal_set_message(t("The generated class for the %code language appears to be corrupted.", array(
      '%code' => $code,
    )), 'error');
    if (!$_GET['debug']) {
      return $text;
    }
  }
  $html = $hl
    ->highlight($text);
  if ($numbers) {
    $html = str_replace("\n", "", $html);
  }

  // no linebreaks, we use a list.
  return $html;
}