Blame view

vendor/cebe/markdown/inline/EmphStrongTrait.php 1.44 KB
abf1649b   andryeyev   Чистая установка ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
  <?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\inline;
  
  /**
   * Adds inline emphasizes and strong elements
   */
  trait EmphStrongTrait
  {
  	/**
  	 * Parses empathized and strong elements.
  	 * @marker _
  	 * @marker *
  	 */
  	protected function parseEmphStrong($text)
  	{
  		$marker = $text[0];
  
  		if (!isset($text[1])) {
  			return [['text', $text[0]], 1];
  		}
  
  		if ($marker == $text[1]) { // strong
  			if ($marker == '*' && preg_match('/^[*]{2}((?:[^*]|[*][^*]*[*])+?)[*]{2}(?![*]{2})/s', $text, $matches) ||
  				$marker == '_' && preg_match('/^__((?:[^_]|_[^_]*_)+?)__(?!__)/us', $text, $matches)) {
  
  				return [
  					[
  						'strong',
  						$this->parseInline($matches[1]),
  					],
  					strlen($matches[0])
  				];
  			}
  		} else { // emph
  			if ($marker == '*' && preg_match('/^[*]((?:[^*]|[*][*][^*]+?[*][*])+?)[*](?![*][^*])/s', $text, $matches) ||
  				$marker == '_' && preg_match('/^_((?:[^_]|__[^_]*__)+?)_(?!_[^_])\b/us', $text, $matches)) {
  				return [
  					[
  						'emph',
  						$this->parseInline($matches[1]),
  					],
  					strlen($matches[0])
  				];
  			}
  		}
  		return [['text', $text[0]], 1];
  	}
  
  	protected function renderStrong($block)
  	{
  		return '<strong>' . $this->renderAbsy($block[1]) . '</strong>';
  	}
  
  	protected function renderEmph($block)
  	{
  		return '<em>' . $this->renderAbsy($block[1]) . '</em>';
  	}
  }