2010-12-14 3 views
1

템플릿 (템플릿 툴킷)이로드 될 때 Perl 코드로 캐싱되기 전에 쉽게 수정할 수 있습니까? 나는 그것에 정규식을 실행하고 싶다.TT 템플릿 수정

답변

5

표준 하위 클래스 인 Template::Provider을 제공 할 수 있습니다. 훌륭한 매뉴얼에서 :

템플릿 :: 공급자는 템플릿 문서를로드, 구문 분석, 컴파일 및 캐시하는 데 사용됩니다. 이 개체는 하위로 분류되어 더 구체적인 로딩 기능을 제공하거나 그렇지 않으면 템플릿에 대한 액세스를 제공합니다.

그럼 꽤 쉬워야하지만 은 물론은 물론 기술에 따라 다릅니다.

4

위의 Template :: Provider 제안이 아마도 최선의 방법 일 것입니다. 그러나 더 단순한 (약간 hacky라면) 접근법도있다. 템플릿을 스칼라로 읽고 템플릿 프로세서로 전달하기 전에 원하는 모든 변환을 실행할 수 있습니다.

my $tt = Template->new; 

open my $template_fh, '<', 'template.tt' or die $!; 
my $template = do { local $/; <$template_fh> }; 

$template =~ s/some regex/some replacement/; 

my $vars = { template => 'variables' }; 

$tt->process(\$template, $vars) or die $tt->error; 

비밀은 process() 메소드가 첫 번째 매개 변수로 다양한 유형의 값을 사용한다는 점입니다. 스칼라이면 템플릿을 포함하는 파일의 이름으로 가정합니다. 그러나 스칼라에 대한 참조 인 경우 스칼라에는 실제 템플릿이 포함되어 있다고 가정합니다. 자세한 내용은 the documentation을 참조하십시오.

관련 문제