역할 RakuAST::Doc::DeclaratorTarget

역할 RakuAST::Doc::DeclaratorTarget (RakuAST::Doc::DeclaratorTarget) (raku-type-rakuast-doc-declaratortarget)

앞이나 뒤에 붙는 문서(leading/trailing documentation)를 지원하는 객체들이 하는 역할이 RakuAST::Doc::DeclaratorTarget이에요.

role RakuAST::Doc::DeclaratorTarget { }

RakuAST 기능 지원은 언어 버전 6.e+에서 사용할 수 있고, Rakudo 컴파일러 2023.02 릴리스에서 추가됐어요. 더 이른 언어 버전에서는 아래처럼 지정해야만 사용할 수 있어요.

use experimental :rakuast;

객체 들여다보기(introspection)

RakuAST::Doc::DeclaratorTarget 역할을 하는 객체들은 보통 Raku 코드를 파싱할 때 만들어져요. 앞(#|)이나 뒤(#=) 문서를 허용하는 객체를 위한 것이죠. 그래서 대부분의 개발자는 만들어진 객체를 어떻게 들여다볼지만 알면 돼요.

method WHY

with $target.WHY {
    say "leading: $_.leading()";
    say "trailing: $_.trailing()";
}

선언자 문서가 있다면 그것을 담고 있는 RakuAST::Doc::Declarator 객체를 돌려줘요.

객체 생성

RakuAST::Doc::DeclaratorTarget 역할을 하는 각 객체는 저마다의 생성 방식이 있어서, 여기서 일반적으로 말할 수 있는 내용은 없어요.

객체 수정

method set-WHY

$target.set-WHY($declarator);

연관시킬 RakuAST::Doc::Declarator 객체를 설정해요.

method cut-WHY

my $WHY := $target.cut-WHY;

RakuAST::Doc::Declarator 객체가 있으면 제거해요. 디파싱(stringification)할 때 무한 루프를 막기 위해 쓰도록 돼 있어요. 왜냐하면 RakuAST::Doc::Declarator 객체는 자기 타깃을 가리키고, 타깃도 그 반대로 가리키기 때문이죠. 보통 원래 타깃의 클론에서 호출해요.

method set-leading

$target.set-leading;  # reset
$target.set-leading("foo", "bar");

앞 문서를 설정해요. 인자가 없으면 앞 문서가 없는 상태로 초기화해요. 이미 .WHY가 없다면 RakuAST::Doc::Declarator 객체를 만들고 .WHY에 설정해요.

method add-leading

$target.add-leading("additional");

앞 문서에 줄을 하나 추가해요. 이미 .WHY가 없다면 RakuAST::Doc::Declarator 객체를 만들고 .WHY에 설정해요.

method set-trailing

$target.set-trailing;  # reset
$target.set-trailing("foo", "bar");

뒤 문서를 설정해요. 인자가 없으면 뒤 문서가 없는 상태로 초기화해요. 이미 .WHY가 없다면 RakuAST::Doc::Declarator 객체를 만들고 .WHY에 설정해요.

method add-trailing

$target.add-trailing("additional");

뒤 문서에 줄을 하나 추가해요. 이미 .WHY가 없다면 RakuAST::Doc::Declarator 객체를 만들고 .WHY에 설정해요.

출처: Raku Docs - RakuAST::Doc::DeclaratorTarget