Substr over indexing string

This commit is contained in:
Aidan Woods 2019-02-02 21:07:12 +00:00
parent 63a97a926b
commit 117912c373
No known key found for this signature in database
GPG Key ID: 9A6A8EFAA512BBB9
12 changed files with 41 additions and 18 deletions

View File

@ -67,7 +67,10 @@ final class BlockQuote implements ContinuableBlock
return null;
}
if ($Context->line()->text()[0] === '>' && \preg_match('/^(>[ \t]?+)(.*+)/', $Context->line()->text(), $matches)) {
if (
\substr($Context->line()->text(), 0, 1) === '>'
&& \preg_match('/^(>[ \t]?+)(.*+)/', $Context->line()->text(), $matches)
) {
$indentOffset = $Context->line()->indentOffset() + $Context->line()->indent() + \strlen($matches[1]);
$recoveredSpaces = 0;

View File

@ -56,7 +56,7 @@ final class FencedCode implements ContinuableBlock
Block $Block = null,
State $State = null
) {
$marker = $Context->line()->text()[0];
$marker = \substr($Context->line()->text(), 0, 1);
$openerLength = \strspn($Context->line()->text(), $marker);

View File

@ -58,9 +58,11 @@ final class Header implements Block
$text = \ltrim($Context->line()->text(), '#');
$firstChar = \substr($text, 0, 1);
if (
$State->get(StrictMode::class)->isEnabled() && isset($text[0])
&& $text[0] !== ' ' && $text[0] !== "\t"
$State->get(StrictMode::class)->isEnabled()
&& \trim($firstChar, " \t") !== ''
) {
return null;
}

View File

@ -27,7 +27,7 @@ final class Rule implements Block
return null;
}
$marker = $Context->line()->text()[0];
$marker = \substr($Context->line()->text(), 0, 1);
if (
\substr_count($Context->line()->text(), $marker) >= 3

View File

@ -46,8 +46,17 @@ final class SetextHeader implements Block
return null;
}
if ($Context->line()->indent() < 4 && \chop(\chop($Context->line()->text(), " \t"), $Context->line()->text()[0]) === '') {
$level = $Context->line()->text()[0] === '=' ? 1 : 2;
$marker = \substr($Context->line()->text(), 0, 1);
if ($marker !== '=' && $marker !== '-') {
return null;
}
if (
$Context->line()->indent() < 4
&& \chop(\chop($Context->line()->text(), " \t"), $marker) === ''
) {
$level = ($marker === '=' ? 1 : 2);
return new self(\trim($Block->text()), $level);
}

View File

@ -89,7 +89,7 @@ final class TList implements ContinuableBlock
State $State = null
) {
list($type, $pattern) = (
$Context->line()->text()[0] <= '-'
\substr($Context->line()->text(), 0, 1) <= '-'
? ['ul', '[*+-]']
: ['ol', '[0-9]{1,9}+[.\)]']
);

View File

@ -101,7 +101,11 @@ final class Table implements ContinuableBlock
return null;
}
if (\count($this->alignments) !== 1 && $Context->line()->text()[0] !== '|' && !\strpos($Context->line()->text(), '|')) {
if (
\count($this->alignments) !== 1
&& \substr($Context->line()->text(), 0, 1) !== '|'
&& !\strpos($Context->line()->text(), '|')
) {
return null;
}
@ -148,7 +152,7 @@ final class Table implements ContinuableBlock
/** @var _Alignment|null */
$alignment = null;
if ($dividerCell[0] === ':') {
if (\substr($dividerCell, 0, 1) === ':') {
$alignment = 'left';
}

View File

@ -33,7 +33,7 @@ final class Code implements Inline
*/
public static function build(Excerpt $Excerpt, State $State)
{
$marker = $Excerpt->text()[0];
$marker = \substr($Excerpt->text(), 0, 1);
if ($marker !== '`') {
return null;

View File

@ -52,17 +52,20 @@ final class Emphasis implements Inline
*/
public static function build(Excerpt $Excerpt, State $State)
{
if (! isset($Excerpt->text()[1])) {
if (\strlen($Excerpt->text()) < 3) {
return null;
}
$marker = $Excerpt->text()[0];
$marker = \substr($Excerpt->text(), 0, 1);
if ($marker !== '*' && $marker !== '_') {
return null;
}
if ($Excerpt->text()[1] === $marker && \preg_match(self::$STRONG_REGEX[$marker], $Excerpt->text(), $matches)) {
if (
\substr($Excerpt->text(), 1, 1) === $marker
&& \preg_match(self::$STRONG_REGEX[$marker], $Excerpt->text(), $matches)
) {
$emphasis = 'strong';
} elseif (\preg_match(self::$EM_REGEX[$marker], $Excerpt->text(), $matches)) {
$emphasis = 'em';

View File

@ -33,8 +33,10 @@ final class EscapeSequence implements Inline
*/
public static function build(Excerpt $Excerpt, State $State)
{
if (isset($Excerpt->text()[1]) && \strpbrk($c = $Excerpt->text()[1], self::SPECIALS) !== false) {
return new self($c);
$char = \substr($Excerpt->text(), 1, 1);
if ($char !== '' && \strpbrk($char, self::SPECIALS) !== false) {
return new self($char);
}
return null;

View File

@ -41,7 +41,7 @@ final class Strikethrough implements Inline
return null;
}
if ($text[1] === '~' && \preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $text, $matches)) {
if (\substr($text, 1, 1) === '~' && \preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $text, $matches)) {
return new self($matches[1], \strlen($matches[0]));
}

View File

@ -98,7 +98,7 @@ final class Parsedown
}
}
$marker = $Line->text()[0];
$marker = \substr($Line->text(), 0, 1);
$potentialBlockTypes = \array_merge(
$State->get(BlockTypes::class)->unmarked(),