Add paragraph and link support to ArticleParser
This commit is contained in:
parent
2c7901d5a9
commit
e3e27708ef
@ -4,5 +4,35 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace LogseqGem;
|
namespace LogseqGem;
|
||||||
|
|
||||||
|
use League\CommonMark\Node\NodeWalker;
|
||||||
|
use League\CommonMark\Node\Inline\Text;
|
||||||
|
use League\CommonMark\Extension\CommonMark\Node\Inline\Link;
|
||||||
|
|
||||||
class ArticleParser extends Parser {
|
class ArticleParser extends Parser {
|
||||||
|
public function convert() {
|
||||||
|
$gemtext = [];
|
||||||
|
|
||||||
|
$link = 0;
|
||||||
|
|
||||||
|
$walker = $this->document->walker();
|
||||||
|
while ($event = $walker->next()) {
|
||||||
|
$entering = $event->isEntering();
|
||||||
|
$node = $event->getNode();
|
||||||
|
|
||||||
|
if ($entering && $node instanceof Text) {
|
||||||
|
$gemtext[] = $node->getLiteral();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($entering && $node instanceof Link) {
|
||||||
|
$label = $walker->next()->getNode();
|
||||||
|
if (!$label instanceof Text) {
|
||||||
|
throw new \Exception('Expected next node in Link to be Text, got ' . get_class($label));
|
||||||
|
}
|
||||||
|
|
||||||
|
$gemtext[] = sprintf('=> %s %s', $node->getUrl(), $label->getLiteral());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return implode("\n\n", $gemtext);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,6 @@ use PHPUnit\Framework\TestCase;
|
|||||||
use org\bovigo\vfs\vfsStream;
|
use org\bovigo\vfs\vfsStream;
|
||||||
use org\bovigo\vfs\vfsStreamDirectory;
|
use org\bovigo\vfs\vfsStreamDirectory;
|
||||||
|
|
||||||
use League\CommonMark\Node\Block\Document;
|
|
||||||
use LogseqGem\GemlogParser;
|
use LogseqGem\GemlogParser;
|
||||||
|
|
||||||
class GemlogParserTest extends TestCase {
|
class GemlogParserTest extends TestCase {
|
||||||
|
Loading…
Reference in New Issue
Block a user