| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 | <?php/** * @copyright Copyright (c) 2014 Carsten Brandt * @license https://github.com/cebe/markdown/blob/master/LICENSE * @link https://github.com/cebe/markdown#readme */namespace cebe\markdown;/** * Markdown parser for github flavored markdown. * * @author Carsten Brandt <mail@cebe.cc> */class GithubMarkdown extends Markdown{	// include block element parsing using traits	use block\TableTrait;	use block\FencedCodeTrait;	// include inline element parsing using traits	use inline\StrikeoutTrait;	use inline\UrlLinkTrait;	/**	 * @var boolean whether to interpret newlines as `<br />`-tags.	 * This feature is useful for comments where newlines are often meant to be real new lines.	 */	public $enableNewlines = false;	/**	 * @inheritDoc	 */	protected $escapeCharacters = [		// from Markdown		'\\', // backslash		'`', // backtick		'*', // asterisk		'_', // underscore		'{', '}', // curly braces		'[', ']', // square brackets		'(', ')', // parentheses		'#', // hash mark		'+', // plus sign		'-', // minus sign (hyphen)		'.', // dot		'!', // exclamation mark		'<', '>',		// added by GithubMarkdown		':', // colon		'|', // pipe	];	/**	 * Consume lines for a paragraph	 *	 * Allow headlines, lists and code to break paragraphs	 */	protected function consumeParagraph($lines, $current)	{		// consume until newline		$content = [];		for ($i = $current, $count = count($lines); $i < $count; $i++) {			$line = $lines[$i];			if (!empty($line) && ltrim($line) !== '' &&				!($line[0] === "\t" || $line[0] === " " && strncmp($line, '    ', 4) === 0) &&				!$this->identifyHeadline($line, $lines, $i) &&				!$this->identifyUl($line, $lines, $i) &&				!$this->identifyOl($line, $lines, $i))			{				$content[] = $line;			} else {				break;			}		}		$block = [			'paragraph',			'content' => $this->parseInline(implode("\n", $content)),		];		return [$block, --$i];	}	/**	 * @inheritdocs	 *	 * Parses a newline indicated by two spaces on the end of a markdown line.	 */	protected function renderText($text)	{		if ($this->enableNewlines) {			$br = $this->html5 ? "<br>\n" : "<br />\n";			return strtr($text[1], ["  \n" => $br, "\n" => $br]);		} else {			return parent::renderText($text);		}	}}
 |