/
home
/
obinna
/
html
/
cravings
/
vendor
/
league
/
commonmark
/
src
/
Extension
/
Attributes
/
Parser
/
Upload File
HOME
<?php /* * This file is part of the league/commonmark package. * * (c) Colin O'Dell <colinodell@gmail.com> * (c) 2015 Martin Hasoň <martin.hason@gmail.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ declare(strict_types=1); namespace League\CommonMark\Extension\Attributes\Parser; use League\CommonMark\Extension\Attributes\Node\AttributesInline; use League\CommonMark\Extension\Attributes\Util\AttributesHelper; use League\CommonMark\Inline\Parser\InlineParserInterface; use League\CommonMark\InlineParserContext; final class AttributesInlineParser implements InlineParserInterface { /** * {@inheritdoc} */ public function getCharacters(): array { return [' ', '{']; } public function parse(InlineParserContext $inlineContext): bool { $cursor = $inlineContext->getCursor(); if ($cursor->getNextNonSpaceCharacter() !== '{') { return false; } $char = $cursor->getCharacter(); if ($char === '{') { $char = (string) $cursor->getCharacter($cursor->getPosition() - 1); } $attributes = AttributesHelper::parseAttributes($cursor); if ($attributes === []) { return false; } if ($char === '') { $cursor->advanceToNextNonSpaceOrNewline(); } $node = new AttributesInline($attributes, $char === ' ' || $char === ''); $inlineContext->getContainer()->appendChild($node); return true; } }