Squashed 'third_party/ctemplate/' content from commit 6742f62
Change-Id: I828e4e4c906f13ba19944d78a8a78652b62949af
git-subtree-dir: third_party/ctemplate
git-subtree-split: 6742f6233db12f545e90baa8f34f5c29c4eb396a
diff --git a/doc/index.html b/doc/index.html
new file mode 100644
index 0000000..13da75e
--- /dev/null
+++ b/doc/index.html
@@ -0,0 +1,111 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+ <title>Ctemplate (formerly Google Template) System</title>
+
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <link href="designstyle.css" type="text/css" rel="stylesheet">
+ <style type="text/css">
+ ol.bluelist li {
+ color: #3366ff;
+ font-family: sans-serif;
+ }
+ ol.bluelist li p {
+ color: #000;
+ font-family: "Times Roman", times, serif;
+ }
+ ul.blacklist li {
+ color: #000;
+ font-family: "Times Roman", times, serif;
+ }
+ </style>
+</head>
+<body>
+
+<h1> <a name="Ctemplate_System"></a>Ctemplate System </h1>
+<center><strong>Status: Current</strong>
+<small>(as of 25 April 2008)</small></center>
+<br>
+
+<p>Welcome to the C++ CTemplate system! (This project was originally
+called Google Templates, due to its origin as the template system used
+for Google search result pages, but now has a more general name
+matching its community-owned nature.)</p>
+
+<p>As a quick start, here's a small but complete program that uses this
+template library. For more details see, the links below.</p>
+
+<h3>Template file <code>example.tpl</code></h3>
+<pre>
+ Hello {{NAME}},
+ You have just won ${{VALUE}}!
+ {{#IN_CA}}Well, ${{TAXED_VALUE}}, after taxes.{{/IN_CA}}
+</pre>
+
+<h3>C++ program <code>example.cc</code></h3>
+<pre>
+ #include <stdlib.h>
+ #include <string>
+ #include <iostream>
+ #include <ctemplate/template.h>
+ int main(int argc, char** argv) {
+ 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);
+ // For now, assume everyone lives in CA.
+ // (Try running the program with a 0 here instead!)
+ if (1) {
+ dict.ShowSection("IN_CA");
+ }
+ std::string output;
+ ctemplate::ExpandTemplate("example.tpl", ctemplate::DO_NOT_STRIP, &dict, &output);
+ std::cout << output;
+ return 0;
+ }
+</pre>
+
+<h3>Compiling and linking (using gcc)</h3>
+<pre>
+ gcc -o example example.cc -lctemplate_nothreads
+</pre>
+
+<p>I can use the "nothreads" library because <code>example.cc</code>
+doesn't use threads. If <code>example.cc</code> were threaded, I
+would do something like this instead:</p>
+<pre>
+ gcc -o example example.cc -lctemplate -pthread
+</pre>
+
+<p>See the README for more details about the two different ctemplate
+libraries.</p>
+
+
+<h2>In-depth Documentation</h2>
+
+<ol>
+ <li> <A HREF="howto.html">Howto</A>: Introduction to the
+ Ctemplate system, and a tutorial for using it. </li>
+
+ <li> <A HREF="auto_escape.html">Auto Escape</A>: Guide to using
+ the optional Auto Escape mode to protect your web application
+ better against XSS.</li>
+
+ <li> <A HREF="tips.html">Tips</A>: Advice, tips, and recommendations
+ for best practices with templates, to make them easier to write
+ and maintain, and to avoid common template mistakes. </li>
+
+ <li> <A HREF="example.html">Examples</A>: Some example templates and
+ application code that uses them. These are taken from actual
+ Google applications. </li>
+</ol>
+
+<hr>
+<address>
+Craig Silverstein<br>
+Last modified: Mon Feb 22 10:59:03 PST 2010
+</address>
+
+</body>
+</html>