728x90
반응형
728x90
반응형
728x90
반응형

Google ctemplate

Google의 ctemplate은 C++ 기반의 템플릿 엔진으로, 템플릿 파일과 데이터 딕셔너리를 활용하여 동적인 텍스트 출력을 생성합니다.

이를 통해 코드와 템플릿을 분리하여 유지보수성과 재사용성을 높일 수 있습니다.

사용 방법:


  1. 템플릿 파일 작성: example.tpl과 같은 템플릿 파일에 템플릿 요소를 정의합니다. 예를 들어:

    Hello {{NAME}},
    You have just won ${{VALUE}}!
    {{#IN_CA}}Well, ${{TAXED_VALUE}}, after taxes.{{/IN_CA}}
    

    여기서 {{NAME}}, {{VALUE}}는 템플릿 요소이며, {{#IN_CA}}...{{/IN_CA}}는 조건부 섹션입니다.


  1. 딕셔너리 생성 및 값 설정: C++ 코드에서 ctemplate::TemplateDictionary를 사용하여 딕셔너리를 생성하고, 템플릿 요소에 대응하는 값을 설정합니다.

    cpp

    ctemplate::TemplateDictionary dict("example");
    dict.SetValue("NAME", "John Smith");
    int winnings = rand() % 100000;
    dict.SetIntValue("VALUE", winnings);
    dict.SetFormattedValue("TAXED_VALUE", "%.2f", winnings * 0.83);
    if (1) {
        dict.ShowSection("IN_CA");
    }
    

    여기서 SetValue는 문자열 값을, SetIntValue는 정수 값을, SetFormattedValue는 포맷팅된 값을 설정합니다. ShowSection은 조건부 섹션을 표시할지 여부를 결정합니다.


  1. 템플릿과 딕셔너리 결합: ctemplate::Template 클래스를 사용하여 템플릿 파일을 로드하고, Expand 메서드를 통해 딕셔너리와 결합하여 최종 출력을 생성합니다.

    cpp

    ctemplate::Template* tpl = ctemplate::Template::GetTemplate("example.tpl", ctemplate::DO_NOT_STRIP);
    std::string output;
    tpl->Expand(&output, &dict);
    std::cout << output;
    

    이렇게 하면 템플릿 파일의 템플릿 요소들이 딕셔너리에서 설정한 값으로 치환되어 최종 결과가 출력됩니다.


결과 예시:

Hello John Smith,
You have just won $10000!
Well, $8300.00, after taxes.

이러한 방식으로 ctemplate을 활용하면 코드와 템플릿을 분리하여 유지보수성을 높이고, 다양한 출력 형식을 유연하게 생성할 수 있습니다.

728x90
반응형

+ Recent posts