Treat empty block as a newline character
This commit is contained in:
parent
2fff247ac1
commit
859b660400
@ -7,6 +7,7 @@ namespace LogseqGem;
|
|||||||
use League\CommonMark\Node\Inline\Text;
|
use League\CommonMark\Node\Inline\Text;
|
||||||
use League\CommonMark\Extension\CommonMark\Node\Inline\Link;
|
use League\CommonMark\Extension\CommonMark\Node\Inline\Link;
|
||||||
use League\CommonMark\Extension\CommonMark\Node\Block\ListBlock;
|
use League\CommonMark\Extension\CommonMark\Node\Block\ListBlock;
|
||||||
|
use League\CommonMark\Extension\CommonMark\Node\Block\ListItem;
|
||||||
|
|
||||||
class ArticleParser extends Parser {
|
class ArticleParser extends Parser {
|
||||||
private ?array $properties;
|
private ?array $properties;
|
||||||
@ -17,14 +18,22 @@ class ArticleParser extends Parser {
|
|||||||
|
|
||||||
$in_frontmatter = true;
|
$in_frontmatter = true;
|
||||||
|
|
||||||
// we only update this for significant nodes
|
$node = null; //current node
|
||||||
$previous_node = null;
|
$last_node = null; //updated every time
|
||||||
|
$previous_node = null; // we only update this for significant nodes
|
||||||
|
|
||||||
$walker = $this->document->walker();
|
$walker = $this->document->walker();
|
||||||
while ($event = $walker->next()) {
|
while ($event = $walker->next()) {
|
||||||
$entering = $event->isEntering();
|
$entering = $event->isEntering();
|
||||||
|
$last_node = $node;
|
||||||
$node = $event->getNode();
|
$node = $event->getNode();
|
||||||
|
|
||||||
|
// treat empty node as a newline
|
||||||
|
if ($node instanceof ListItem && $last_node === $node && !$entering) {
|
||||||
|
$gemtext[] = '';
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (!$entering) {
|
if (!$entering) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -89,4 +89,10 @@ class ArticleParserTest extends TestCase {
|
|||||||
$this->parser->convert();
|
$this->parser->convert();
|
||||||
$this->assertTrue($this->parser->isPublished());
|
$this->assertTrue($this->parser->isPublished());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testNewlineBetweenLinks() {
|
||||||
|
$this->setArticleText("\n- [foo](bar)\n-\n- [bar](foo)");
|
||||||
|
$this->parser->load(vfsStream::url('root/article.md'));
|
||||||
|
$this->assertSame("=> bar foo\n\n=> foo bar", $this->parser->convert());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user