Raku의 allowed-markup — 블록에서 허용된 마크업 확인하기
Raku의 allowed-markup — 블록에서 허용된 마크업 확인하기
RakuDoc 문서를 렌더링하다 보면, 어떤 블록 안에서 특정 마크업(B, C, I 같은)이 허용되는지 알아야 할 때가 있어요. allowed-markup은 현재 블록에서 어떤 마크업 타입을 쓸 수 있는지 확인할 수 있게 해 주는 특수한 Map을 돌려주는 메서드예요.
어떻게 쓰는지
my %*OK := $block.allowed-markup;
say "B markup is allowed" if %*OK<B>;
돌려받는 Map에서 키로 마크업 이름을 조회해서, 그 마크업이 이 블록에서 허용되는지 확인해요. 보통은 동적 변수에 묶어 두고, 블록 안의 모든 RakuAST::Doc::Markup 객체를 렌더링할 때 함께 접근할 수 있게 만드는 식으로 써요.
어느 Map인지가 달라져요
allowed-markup이 돌려주는 Map은 상황에 따라 세 가지 중 하나예요.
:allow설정에서 온 진짜Map- 모든 대문자에
True를 돌려주는Map의 서브클래스 - 항상
False를 돌려주는Map의 서브클래스
이 메서드는 RakuAST(RakuAST::Doc::Block) 계열의 메서드라, RakuAST 기반의 문서 처리 코드를 다룰 때 마주치게 돼요.