1<?php
2/**
3 * @copyright Copyright (c) 2014 Carsten Brandt
4 * @license https://github.com/cebe/markdown/blob/master/LICENSE
5 * @link https://github.com/cebe/markdown#readme
6 */
7
8namespace cebe\markdown\inline;
9
10/**
11 * Adds inline code elements
12 */
13trait CodeTrait
14{
15	/**
16	 * Parses an inline code span `` ` ``.
17	 * @marker `
18	 */
19	protected function parseInlineCode($text)
20	{
21		if (preg_match('/^(``+)\s(.+?)\s\1/s', $text, $matches)) { // code with enclosed backtick
22			return [
23				[
24					'inlineCode',
25					$matches[2],
26				],
27				strlen($matches[0])
28			];
29		} elseif (preg_match('/^`(.+?)`/s', $text, $matches)) {
30			return [
31				[
32					'inlineCode',
33					$matches[1],
34				],
35				strlen($matches[0])
36			];
37		}
38		return [['text', $text[0]], 1];
39	}
40
41	protected function renderInlineCode($block)
42	{
43		return '<code>' . htmlspecialchars($block[1], ENT_NOQUOTES | ENT_SUBSTITUTE, 'UTF-8') . '</code>';
44	}
45}
46