• 10、ctemplate文档,简记(3)


    1、AddSectionDictionary(section_name) returns a sub-dictionary associated with the given section_name (for instance, dict.AddSectionDictionary("MYSECT") for a template like {{#MYSECT}}...{{/MYSECT}}).

        多次调用,每次将返回新字典。每一次调用该函数,这个section将被展示一次。如果从没有调用过该函数,则section区域数据将不显示。

    2、ShowSection() 用来显示section中的文字exactly once. It is equivalent to calling AddSectionDictionary() once, and ignoring the returned sub-dictionary. All variables in the section will depend on dictionary inheritence to get their values.(继承值)

    3、SetValueAndShowSection() used to show a section if and only if a related variable is set to a non-empty value. SetValueAndShowSection(name, value, section_name) is equivalent to this: if value is empty do nothing, otherwise add a single dictionary to section_name and call section_dict->AddValue(name, value).

    文档中有例子,还没有发现他有什么作用。

    4、AddIncludeDictionary(section_name) returns a sub-dictionary associated with the given include_name (for instance, dict.AddIncludeDictionary("MYTPL") for a template like {{>MYTPL}}).

    这个函数类同AddSectionDictionary,多次调用,每次返回新字典。调用之后,要记得调用SetFilename

    5、Dump() and DumpToString() 用来调试。

    6、The TemplateCache Class

    holds a collection of templates.

    7、老版本使用方法:

    Template* tpl = Template::GetTemplate(filename, strip_mode);

    TemplateDictionary dict(name);

    tpl->Expand(&dict, &outstring);

    新版本使用:

      std::string output;

      ctemplate::ExpandTemplate("example.tpl", ctemplate::DO_NOT_STRIP, &dict, &output);

      std::cout << output;

    8、还可以通过指定AUTOESCAPE来指定模板的编码方法:

    {{%AUTOESCAPE context="HTML"}}

    9、还有类似lint的开发工具make_tpl_varnames_h

    10、An included template is just a section whose contents are located in a separate file. You may iterate over it just like you do sections.

    11、Since sections are hidden by default, you can use represent if-else logic in your code via ShowSection. For example:

         if ( my_test ) {

            dict->ShowSection(kxyz_TRUE_BLOCK);

            [ more code to fill the values for that section]

         } else {

            dict->ShowSection(kxyz_FALSE_BLOCK);

            [ more code to fill the values for that section]

         }

    参考

    1http://google-ctemplate.googlecode.com/svn/trunk/doc/reference.html

  • 相关阅读:
    手游页游和端游的服务端的架构与区别
    TiKV 源码解析系列——如何使用 Raft
    TiKV 源码解析系列
    三篇文章了解 TiDB 技术内幕 —— 谈调度
    三篇文章了解 TiDB 技术内幕——说计算
    三篇文章了解 TiDB 技术内幕——说存储
    TiDB 源码阅读系列文章(一)序
    【合集】TiDB 源码阅读系列文章
    9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路
    python datetime和unix时间戳之间相互转换
  • 原文地址:https://www.cnblogs.com/mydomain/p/2170161.html
Copyright © 2020-2023  润新知