Ejemplo n.º 1
0
 /**
  * Custom version of the _doCodeBlocks_callback method which invokes a Gheshi
  * object to render code.
  *
  * @since 1.0
  */
 public function _doCodeBlocks_callback($matches)
 {
     $config = ConfigProvider::getInstance();
     $codeblock = $matches[1];
     $codeblock = $this->outdent($codeblock);
     // trim leading newlines and trailing whitespace
     $codeblock = preg_replace(array('/\\A\\n+/', '/\\n+\\z/'), '', $codeblock);
     // find the code block and replace it with a blank
     $codeTypeTag = array();
     preg_match('/codeType=\\[.*\\]/', $codeblock, $codeTypeTag);
     $codeblock = preg_replace('/codeType=\\[.*\\]\\n/', '', $codeblock);
     if (isset($codeTypeTag[0])) {
         $start = mb_strpos($codeTypeTag[0], '[');
         $end = mb_strpos($codeTypeTag[0], ']');
         $language = mb_substr($codeTypeTag[0], $start + 1, $end - ($start + 1));
     } else {
         // will use php as a default language type when none is provided
         $language = 'php';
     }
     if ($config->get('cms.highlight.provider.name') != '') {
         $highlighter = HighlightProviderFactory::getInstance($config->get('cms.highlight.provider.name'));
         $codeblock = $highlighter->highlight($codeblock, $language);
     } else {
         $codeblock = htmlspecialchars($codeblock, ENT_NOQUOTES);
         # trim leading newlines and trailing newlines
         $codeblock = preg_replace('/\\A\\n+|\\n+\\z/', '', $codeblock);
         $codeblock = "<pre><code>{$codeblock}\n</code></pre>";
     }
     return "\n\n" . $this->hashBlock($codeblock) . "\n\n";
 }
Ejemplo n.º 2
0
 /**
  * Testing the highlight() method.
  *
  * @since 2.0.1
  * @dataProvider getHighlightProviders
  */
 public function testHighlight($provider)
 {
     $highlighter = HighlightProviderFactory::getInstance($provider);
     $code = '<?= $value ?>';
     $highlighted = $highlighter->highlight($code, 'php');
     $this->assertNotEmpty($highlighted, 'Testing the highlight() method');
     $this->assertTrue(Validator::isHTML($highlighted), 'Testing the highlight() method');
 }