라이브러리
[PHP] CommonMarkNode::replace - AST 조작
CommonMarkNode::replace 메서드 소개
CommonMarkNode는 Markdown 문법을 분석하고 변환하는 데 사용되는 클래스입니다. replace 메서드는 CommonMarkNode의 자식 노드를 찾고, 지정된 패턴에 해당하는 노드를 교체하는 메서드입니다.
replace 메서드의 사용법
replace 메서드는 두 가지 매개변수를 받습니다.
* `$pattern`: 교체할 패턴을 지정하는 정규표현식 또는 CommonMarkNode의 자식 노드입니다.
* `$replacement`: 교체할 패턴을 대체할 내용입니다.
예제
다음 예제에서는 CommonMarkNode::replace 메서드를 사용하여 Markdown 문법에서 강조를 제거하는 방법을 보여줍니다.
#hostingforum.kr
php
use LeagueCommonMarkNodeNode;
use LeagueCommonMarkNodeText;
use LeagueCommonMarkNodeTextNode;
use LeagueCommonMarkParserParser;
use LeagueCommonMarkRendererRenderer;
use LeagueCommonMarkRendererRendererInterface;
use LeagueCommonMarkEnvironmentEnvironment;
use LeagueCommonMarkNodeInlineEmphasis;
use LeagueCommonMarkNodeInlineStrong;
use LeagueCommonMarkNodeInlineText as InlineText;
class CustomRenderer implements RendererInterface
{
public function render(Node $node, Environment $env)
{
if ($node instanceof Emphasis) {
return $this->renderChildren($node, $env);
}
if ($node instanceof Strong) {
return $this->renderChildren($node, $env);
}
return $this->renderChildren($node, $env);
}
private function renderChildren(Node $node, Environment $env)
{
$children = [];
foreach ($node->children() as $child) {
$children[] = $this->render($child, $env);
}
return implode('', $children);
}
}
$parser = new Parser();
$env = new Environment();
$renderer = new CustomRenderer();
$markdown = "Hello, world! This is a *test*.";
$parser->parse($markdown);
$node = $parser->getDocument()->getFirstChild();
$renderer->render($node, $env);
이 예제에서는 CustomRenderer 클래스를 정의하여 Emphasis와 Strong 노드를 렌더링할 때 대체하는 방법을 보여줍니다. replace 메서드는 사용되지 않았지만, CustomRenderer 클래스에서 Emphasis와 Strong 노드를 렌더링할 때 대체하는 방법을 보여줍니다.
replace 메서드의 사용 예
다음 예제에서는 CommonMarkNode::replace 메서드를 사용하여 Markdown 문법에서 강조를 제거하는 방법을 보여줍니다.
#hostingforum.kr
php
use LeagueCommonMarkNodeNode;
use LeagueCommonMarkNodeText;
use LeagueCommonMarkNodeTextNode;
use LeagueCommonMarkParserParser;
use LeagueCommonMarkRendererRenderer;
use LeagueCommonMarkRendererRendererInterface;
use LeagueCommonMarkEnvironmentEnvironment;
use LeagueCommonMarkNodeInlineEmphasis;
use LeagueCommonMarkNodeInlineStrong;
use LeagueCommonMarkNodeInlineText as InlineText;
$parser = new Parser();
$env = new Environment();
$markdown = "Hello, world! This is a *test*.";
$parser->parse($markdown);
$node = $parser->getDocument()->getFirstChild();
// Emphasis 노드를 찾고 대체
$emphases = $node->find('LeagueCommonMarkNodeInlineEmphasis');
foreach ($emphases as $emphasis) {
$emphasis->replace(new Text($emphasis->getFirstChild()->getText()));
}
// Strong 노드를 찾고 대체
$strongs = $node->find('LeagueCommonMarkNodeInlineStrong');
foreach ($strongs as $strong) {
$strong->replace(new Text($strong->getFirstChild()->getText()));
}
// 렌더링
$renderer = new Renderer();
echo $renderer->render($node, $env);
이 예제에서는 Emphasis와 Strong 노드를 찾고 대체하는 방법을 보여줍니다. replace 메서드는 사용되며, Emphasis와 Strong 노드를 찾고 대체하는 방법을 보여줍니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.