-rw-r--r-- | htdocs/ancestry/layout.chtml | 2 | ||||
-rw-r--r-- | htdocs/exceptions/runtime.chtml | 2 | ||||
-rw-r--r-- | htdocs/quickref/index.chtml | 16 | ||||
-rw-r--r-- | htdocs/quickref/metasyntax.chtml | 344 | ||||
-rw-r--r-- | htdocs/sources.chtml | 2 | ||||
-rw-r--r-- | htdocs/style.css | 55 |
6 files changed, 416 insertions, 5 deletions
diff --git a/htdocs/ancestry/layout.chtml b/htdocs/ancestry/layout.chtml index 0c167bc..df34ad7 100644 --- a/htdocs/ancestry/layout.chtml +++ b/htdocs/ancestry/layout.chtml @@ -43,27 +43,27 @@ </%code> </div> <div id="sidepanel"> % sidepanel(); </div> </%method> <%method void content() %> </%method> <%method void sidepanel() %> <h1><% PACKAGE_STRING %></h1> % if(b_svn) { <h2>The site is running source from the source repository which may differ from the one available for download. You can check it out from the <a href="http://kin.klever.net/sitecing/repository">source repository</a>.</h2> % } % /* thank MSIE for this awful formatting */ - <ul><li><a href="/" title="introduction to site-C-ing">overview</a><ul><li><a href="/simple" title="building a really simple page">simple page</a></li></ul></li><li><a href="/exceptions/" title="exceptions handling">exceptions</a><ul><li><a href="/exceptions/preprocess" title="preprocessor errors">preprocess</a></li><li><a href="/exceptions/compile" title="compiler errors">compile-time</a></li><li><a href="/exceptions/runtime" title="runtime exceptions">runtime</a></li></ul></li><li><a href="/sources" title="browse this site source files">sources</a></li></ul> + <ul><li><a href="/" title="introduction to site-C-ing">overview</a><ul><li><a href="/simple" title="building a really simple page">simple page</a></li></ul></li><li><a href="/exceptions/" title="exceptions handling">exceptions</a><ul><li><a href="/exceptions/preprocess" title="preprocessor errors">preprocess</a></li><li><a href="/exceptions/compile" title="compiler errors">compile-time</a></li><li><a href="/exceptions/runtime" title="runtime exceptions">runtime</a></li></ul></li><li><a href="/quickref/" title="quick reference">reference</a><ul><li><a href="/quickref/metasyntax" title="meta syntax">syntax</a></li></ul></li><li><a href="/sources" title="browse this site source files">sources</a></li></ul> <%code> if(!access(WEB_RUN_ROOT "/conf/banner_side",R_OK)) { pass_file_through(WEB_RUN_ROOT "/conf/banner_side"); } </%code> <ul><li><a href="http://kin.klever.net/sitecing/" title="main site-C-ing page">site-C-ing</a></li><li><a href="http://kin.klever.net/sitecing/sources" title="site-C-ing download page">downloads</a></li></ul> <div class="copyright"> © <a href="http://www.klever.net/">Klever Group</a> </div> </%method> diff --git a/htdocs/exceptions/runtime.chtml b/htdocs/exceptions/runtime.chtml index 9a72afd..1fcd80f 100644 --- a/htdocs/exceptions/runtime.chtml +++ b/htdocs/exceptions/runtime.chtml @@ -1,22 +1,22 @@ % html(); return; /* vim:set ft=sitecing: */ %%derive layout = "/ancestry/layout.chtml"; <%constructor> b_strict = false; PN_PREV("/exceptions/compile","compile-time","compile-time errors"); - PN_NEXT("/sources","sources","source browser"); + PN_NEXT("/quickref/","quick reference","quick reference"); </%constructor> <%codemethod string title() %> return "runtime exceptions handling"; </%codemethod> <%method void content() %> <h1>site-C-ing runtime exception handling</h1> <p> The component may throw an exception while executing and the <em>site-C-ing</em> will gladly pass it to the handler component which will give the user appropriate output (unless it throws an exception itself, of course). Here you will see an example output provided by the handler bundled with the <em>site-C-ing</em>. </p> <p> Suppose you have <a href="/view/htdocs/exceptions/development/runtime.chtml" diff --git a/htdocs/quickref/index.chtml b/htdocs/quickref/index.chtml new file mode 100644 index 0000000..20ef217 --- a/dev/null +++ b/htdocs/quickref/index.chtml @@ -0,0 +1,16 @@ +% html(); return; /* vim:set ft=sitecing: */ +%%derive layout = "/ancestry/layout.chtml"; +<%constructor> + PN_PREV("/exceptions/runtime","runtime","runtime exceptions"); + PN_NEXT("/quickref/metasyntax","syntax","meta syntax"); +</%constructor> +<%codemethod string title() %> + return "quick reference"; +</%codemethod> +<%method void content() %> + <h1>site-C-ing quick reference</h1> + <p> + I am hoping to put together some quick reference documentation here. For now, + I am adding the component meta-syntax quick reference. + </p> +</%method> diff --git a/htdocs/quickref/metasyntax.chtml b/htdocs/quickref/metasyntax.chtml new file mode 100644 index 0000000..a63f596 --- a/dev/null +++ b/htdocs/quickref/metasyntax.chtml @@ -0,0 +1,344 @@ +% html(); return; /* vim:set ft=sitecing: */ +%%derive layout = "/ancestry/layout.chtml"; +<%constructor> + PN_PREV("/quickref/","quick reference","quick reference"); + PN_NEXT("/sources","sources","source browser"); +</%constructor> +<%codemethod string title() %> + return "meta syntax quick reference"; +</%codemethod> +<%method void content() %> + <h1>site-C-ing meta syntax quick reference</h1> + + <h2>Table of Contents</h2> + + <ul class="quickref toc"> + <li><a href="#qr__line">% ...</a></li> + <li><a href="#qr__inline"><% ... %></a></li> + <li><a href="#qr__code"><%code></a></li> + <li><a href="#qr__codemethod"><%codemethod ... ></a></li> + <li><a href="#qr__constructor"><%constructor></a></li> + <li><a href="#qr__decl"><%decl></a></li> + <li><a href="#qr___decl">%%decl</a></li> + <li><a href="#qr___derive">%%derive</a></li> + <li><a href="#qr__destructor"><%destructor></a></li> + <li><a href="#qr__impl"><%impl></a></li> + <li><a href="#qr___impl">%%impl</a></li> + <li><a href="#qr__method"><%method ... ></a></li> + <li><a href="#qr__output"><%output></a></li> + <li><a href="#qr___pragma">%%pragma</a></li> + <li><a href="#qr___var">%%var</a></li> + </ul> + + <dl class="metasyntax quickref"> + +% /* % */ + <dt> + <a id="qr__line" name="qr__line" title="line of code"> + <code>% <kbd>line of code</kbd></code> + </a> + </dt> + <dd> + <p> + Break out into the code mode for just one line. + </p> + <blockquote class="qr_sample"> + <body><br/> + <em><a href="#qr__line" title="% description">%</a> for(int t=0;t<10;t++) {<br/></em> + Here is the way we count.<br/><br/> + Just saying out loud: <a href="#qr__inline" title="<% ... %> description"><%</a> t <a href="#qr__inline" title="<% ... %> description">%></a><br/><br/> + <em><a href="#qr__line" title="% description">%</a> }<br/></em> + </body> + </blockquote> + </dd> + +% /* <% %> */ + <dt> + <a id="qr__inline" name="qr__inline" title="output expression"> + <code><% <kbd>expression</kbd> %></code> + </a> + </dt> + <dd> + <p> + << <kbd>expression</kbd> into output stream (think c++). + </p> + <blockquote class="qr_sample"> + <a href="#qr__line" title="% description">%</a> for(int t=0;t<10;t++) {<br/> + Here is the way we count.<br/><br/> + <em> Just saying out loud: <a href="#qr__inline" title="<% ... %> description"><%</a> t <a href="#qr__inline" title="<% ... %> description">%></a><br/><br/></em> + <a href="#qr__line" title="% description">%</a> } + </blockquote> + </dd> + +% /* %code */ + <dt> + <a id="qr__code" name="qr__code" title="switching to code mode"> + <code> + <%code> <kbd>...</kbd> </%code> + </code> + </a> + </dt> + <dd> + Escape from the output mode to code mode. Opposite to <code><a href="#qr__output" title="<%output> description"><%output></a></code>. Roughly the same as <code><a href="#qr__output" title="<%output> description"></%output></a> <kbd>...</kbd> <a href="#qr__output" title="<%output> description"><%output></a></code> (note the reverse order), but more self-explanatory and applies to more cases. + </p> + <blockquote class="qr_sample"> + <body><br/> + <em> <a href="#qr__code" title="<%code> descrption"><%code></a><br/></em> + for(int t=0;t<10;t++) {<br/> + <a href="#qr__output" title="<%output> descrption"><%output></a><br/> + Here is the way we count.<br/><br/> + Just saying out loud: <a href="#qr__inline" title="<% ... %> description"><%</a> t <a href="#qr__inline" title="<% ... %> description">%></a><br/><br/> + <a href="#qr__output" title="<%output> descrption"></%output></a><br/> + <em> <a href="#qr__code" title="<%code> descrption"></%code></a><br/></em> + </body> + </blockquote> + </dd> + +% /* %codemethod */ + <dt> + <a id="qr__codemethod" name="qr__codemethod" title="member function definition"> + <code> + <%codemethod <kbd>return_type_t</kbd> <kbd>member_name</kbd>(<kbd>args,...</kbd>) %><br/> + <kbd>code</kbd><br/> + </%codemethod> + </code> + </a> + </dt> + <dd> + <p> + Define the member function. Essentially equivalent to <code><a href="#qr__method" title="<%method ... %> description" class="internal"><%method</a> <kbd>...</kbd> <a href="#qr__method" title="<%method ... %> description" class="internal">%></a><a href="#qr__code" title="<%code> description" class="internal"><%code></a> <kbd>...</kbd> <a href="#qr__code" title="<%code> description" class="internal"></%code></a><a href="#qr__method" title="<%method ... %> description" class="internal"></%method></a></code>. + </p> + <blockquote class="qr_sample"> + <em><a href="#qr__codemethod" title="<%codemethod ... %> description"><%codemethod</a> std::string ua() <a href="#qr__codemethod" title="<%codemethod ... %> description">%></a><br/> + return __CGI->get_meta("USER_AGENT");<br/> + <a href="#qr__codemethod" title="<%codemethod ... %> description"></%codemethod></a><br/></em> + The user agent is: <a href="#qr__inline" title="<% ... %> description"><%</a> ua() <a href="#qr__inline" title="<% ... %> description">%></a><br/> + </blockquote> + </dd> + +% /* %constructor */ + <dt> + <a id="qr__constructor" name="qr__constructor" title="constructor code"> + <code> + <%constructor><br/> + <kbd>code</kbd><br/> + </%constructor> + </code> + </a> + </dt> + <dd> + <p> + Provide the code for constructor. + </p> + <blockquote class="qr_sample"> + <a href="#qr___var" title="%%var description">%%var</a> bool is_msie;<br/> + <em><a href="#qr__constructor" title="<%constructor> description"><%constructor></a><br/> + is_msie = (__CGI->get_meta("USER_AGENT").find("MSIE")!=string::npos);<br/> + <a href="#qr__constructor" title="<%constructor> description"></%constructor></a><br/></em> + </blockquote> + </dd> + +% /* %decl / %%decl */ + <dt> + <a id="qr___decl" name="qr___decl" title="verbatim declaration"> + <code>%%decl <kbd>line of code</kbd></code> + </a> + </dt> + <dt> + <a id="qr__decl" name="qr__decl" title="verbatim declaration"> + <code> + <%decl><br/> + <kbd>lines of code</kbd><br/> + </%decl> + </code> + </a> + </dt> + <dd> + <p> + Put the line(s) of code into the resulting <em>.h</em> file before the + class declaration. + </p> + <blockquote class="qr_sample"> + <em><a href="#qr___decl" title="%%decl description">%%decl</a> #include <string><br/></em> + <a href="#qr___var" title="%%var description">%%var</a> std::string str = "default"<br/> + <em><a href="#qr__decl" title="<%decl> description"><%decl></a><br/> + typedef int integer_t;<br/> + <a href="#qr__decl" title="<%decl> description"></%decl></a><br/></em> + <a href="#qr__method" title="<%method ... %> description"><%method</a> void do_nothing(integer_t input) <a href="#qr__method" title="<%method ... %> description">%></a><br/> + nothing is done<br/> + <a href="#qr__method" title="<%method ... %> description"></%method></a> + </blockquote> + </dd> + +% /* %%derive */ + <dt> + <a id="qr___derive" name="qr___derive" title="base class(es) specification"> + <code>%%derive <kbd>name</kbd> = "<kbd>base-component</kbd>";</code> + </a> + </dt> + <dd> + <p> + Inherit what is there to be inherited from the base component specified. + </p> + <blockquote class="qr_sample"> + <em><a href="#qr___derive" title="%%derive description">%%derive</a> pagelayout = "/ancestry/page_layout.chtml";<br/></em> + <a href="#qr__line" title="% description">%</a> pagelayout::member_function(); + </blockquote> + </dd> + +% /* %destructor */ + <dt> + <a id="qr__destructor" name="qr__destructor" title="destructor code"> + <code> + <%destructor><br/> + <kbd>code</kbd><br/> + </%destructor> + </code> + </a> + </dt> + <dd> + <p> + Provide the code for destructor. + </p> + <blockquote class="qr_sample"> + <a href="#qr___var" title="%%var description">%%var</a> type_t *tmp = 0;<br/> + <a href="#qr__constructor" title="<%constructor> description"><%constructor></a><br/> + tmp = new type_t(type_t::option_1);<br/> + <a href="#qr__constructor" title="<%constructor> description"></%constructor></a><br/> + <em><a href="#qr__destructor" title="<%destructor> description"><%destructor></a><br/> + delete tmp;<br/> + <a href="#qr__destructor" title="<%destructor> description"></%destructor></a><br/></em> + </blockquote> + </dd> + +% /* %impl / %%impl */ + <dt> + <a id="qr___impl" name="qr__impl" title="verbatim definition"> + <code>%%impl <kbd>line of code</kbd></code> + </a> + </dt> + <dt> + <a id="qr__impl" name="qr__impl" title="verbatim definition"> + <code> + <%impl><br/> + <kbd>lines of code</kbd><br/> + </%impl> + </code> + </a> + </dt> + <dd> + <p> + Put the line(s) of code into the resulting <em>.cc</em> implementation file + before any members definitions. + </p> + <blockquote class="qr_sample"> + <em><a href"#qr___impl" title="%%impl description">%%impl</a> #include <string.h><br/></em> + <a href="#qr__method" title="<%method ... %gt; description"><%method</a> void output_if_contains(const char *haystack,const char *needle) <a href="#qr__method" title="<%method ... %gt; description">%></a><br/> + <a href="#qr__line" title="% description">%</a> if(strstr(haystack,needle)) {<br/> + <a href="#qr__inline" title="<% ... %> description"><%</a> haystack <a href="#qr__inline" title="<% ... %> description">%></a><br/> + <a href="#qr__line" title="% description">%</a> }<br/> + <a href="#qr__method" title="<%method ... %> description"></%method></a><br/> + <em><a href="#qr__impl" title="<%impl> description"><%impl></a><br/> + #include <konforka/exception.h> + static const char *tokens[] = {<br/> + "token 1", "token 2", "token 3"<br/> + };<br/> + <a href="#qr__impl" title="<%impl> description"></%impl></a><br/></em> + <a href="#qr__method" title="<%method ... %gt; description"><%method</a> void output_token(int toknum) <a href="#qr__method" title="<%method ... %gt; description">%></a><br/> + <a href="#qr__code" title="<%code> description"><%code></a><br/> + if(toknum<0 || toknum>=(sizeof(tokens)/sizeof(*tokens)))<br/> + throw konforka::exception(CODEPOINT,"out of bounds");<br/> + <a href="#qr__code" title="<%code> description"></%code></a><br/> + <a href="#qr__inline" title="<% ... %> description"><%</a> tokens[toknum] <a href="#qr__inline" title="<% ... %> description">%></a><br/> + <a href="#qr__method" title="<%method ... %> description"></%method></a><br/> + </blockquote> + </dd> + +% /* %method */ + <dt> + <a id="qr__method" name="qr__method" title="member function definition"> + <code> + <%method <kbd>return_type_t</kbd> <kbd>member_name</kbd>(<kbd>args,...</kbd>) %><br/> + <kbd>code</kbd><br/> + </%method> + </code> + </a> + </dt> + <dd> + <p> + Define the member function. Essentially equivalent to <code><a href="#qr__codemethod" title="<%codemethod ... %> description" class="internal"><%codemethod</a> <kbd>...</kbd> <a href="#qr__codemethod" title="<%codemethod ... %> description" class="internal">%></a><a href="#qr__output" title="<%output> description" class="internal"><%output></a> <kbd>...</kbd> <a href="#qr__output" title="<%output> description" class="internal"></%output></a><a href="#qr__codemethod" title="<%codemethod ... %> description" class="internal"></%codemethod></a></code>. + </p> + <blockquote class="qr_sample"> + <em><a href="#qr__method" title="<%method ... %> description"><%method</a> void emphasized(const char *t) <a href="#qr__method" title="<%method ... %> description">%></a><br/> + <em><a href="#qr__inline" title="<% ... %> description"><%</a> t <a href="#qr__inline" title="<% ... %> description">%></a></em><br/> + <a href="#qr__codemethod" title="<%codemethod ... %> description"></%method></a><br/></em> + <a href="#qr__line" title="% description">%</a> emphasized("emphasized text"); + </blockquote> + </dd> + +% /* %output */ + <dt> + <a id="qr__output" name="qr__output" title="switching to output mode"> + <code> + <%output> <kbd>...</kbd> </%output> + </code> + </a> + </dt> + <dd> + <p> + Escape from the code mode to output mode. Opposite to <code><a href="#qr__code" title="<%code> description"><%code></a></code>. Roughly the same as <code><a href="#qr__code" title="<%code> description"></%code></a> <kbd>...</kbd> <a href="#qr__code" title="<%code> description"><%code></a></code> (note the reverse order), but more self-explanatory and applies to more cases. + </p> + <blockquote class="qr_sample"> + <a href="#qr__codemethod" title="<%codemethod ... %> description"><%codemethod</a> void count() <a href="#qr__codemethod" title="<%codemethod ... > description">%></a><br/> + for(int t=0;t<10;t++) {<br/> + <em> <a href="#qr__output" title="<%output> descrption"><%output></a><br/> + Here is the way we count.<br/><br/> + Just saying out loud: <a href="#qr__inline" title="<% ... %> description"><%</a> t <a href="#qr__inline" title="<% ... %> description">%></a><br/><br/> + <a href="#qr__output" title="<%output> descrption"></%output></a><br/></em> + <a href="#qr__codemethod" title="</%codemethod ... %> description"></%codemethod></a><br/> + <a href="#qr__line" title="% description">%</a> count(); + </blockquote> + </dd> + +% /* %%pragma */ + <dt> + <a id="qr___pragma" name="qr___pragma" title="pragma"> + <code> + %%pragma <kbd>pragma_name</kbd><br/> + %%pragma <kbd>pragma_name</kbd>=<kbd>pragma_value</kbd> + </code> + </a> + </dt> + <dd> + <p>provide pseudo instructions to the preprocessor. At this time only pragma + named <code>main</code> is defined, which instructs preprocessor to discard + the 'main' member that would be generated for the component and call the + <code>main</code> member of the named base class.</p> + <blockquote class="qr_sample"> + <a href="#qr___derive" title="%%derive description">%%derive</a> pagelayout = "/ancestry/page_layout.chtml";<br/> + <em><a href="#qr___pragma" title="%%pragma description">%%pragma</a> main=pagelayout</em> + </blockquote> + </dd> + +% /* %%var */ + <dt> + <a id="qr___var" name="qr___var" title="member variable declaration"> + <code>%%var <kbd>type_t</kbd> <kbd>varname</kbd>;<br/> + <code>%%var <kbd>type_t</kbd> <kbd>varname</kbd> = <kbd>initalizer</kbd>;<br/> + </a> + </dt> + <dd> + <p> + Define the member variable with optional default value (suitable for + putting into the <code>: <kbd>varname</kbd>(<kbd>initializer</kbd>)</code> + part of the c++ constructor. + </p> + <blockquote class="qr_sample"> + <em><a href="#qr___var" title="%%var description">%%var</a> std::string strval = "default value";<br/> + <a href="#qr___var" title="%%var description">%%var</a> int usecount = 0;<br/> + <a href="#qr___var" title="%%var description">%%var</a> int whatnot;</em> + </blockquote> + </dd> + + </dl> +</%method> diff --git a/htdocs/sources.chtml b/htdocs/sources.chtml index 6341f49..8c0c701 100644 --- a/htdocs/sources.chtml +++ b/htdocs/sources.chtml @@ -1,25 +1,25 @@ % html(); return; /* vim:set ft=sitecing: */ %%derive layout = "/ancestry/layout.chtml"; %%derive sources = "/ancestry/sources.chtml"; <%impl> #include <sitecing/sitecing_util.h> </%impl> <%constructor> b_strict = false; - PN_PREV("/exceptions/runtime","runtime","runtime exceptions"); + PN_PREV("/quickref/metasyntax","syntax","meta syntax"); </%constructor> <%codemethod string title() %> return "runtime exceptions handling"; </%codemethod> <%method void content() %> <h1>browse this site sources</h1> <ul class="sourcebrowser"> % for(int n=0;n<source_files_count;n++) { % sourcefile_t& sf = source_files[n]; % if(!sf.name) { /* the beginning or the end of the directory */ % if(sf.dir) { /* the beginning */ <li class="dir"><% sf.dir %>/<ul class="dir"> % }else{ /* the end */ </ul></li> % } diff --git a/htdocs/style.css b/htdocs/style.css index 83e308f..96e4c59 100644 --- a/htdocs/style.css +++ b/htdocs/style.css @@ -1,42 +1,43 @@ body { font-family: sans-serif; font-size: 11pt; } -a { +a:link, a:visited { text-decoration: none; } -a:hover { +a:link:hover, a:visited:hover { text-decoration: underline; } p { margin: 1ex 1em; text-indent: 2em; text-align: justify; } p.note { margin-left: 10%; border-width: 1px 1px 1px 6px; border-color: gray gray gray #0000a0; border-style: solid solid solid double; padding: 1ex 1ex 1ex 2em; font-size: 80%; background: #c0c0e0; color: #202020; } +code a, code { color: #d04040; } em { white-space: nowrap; } div.google_ad { text-align: center; margin: 1ex; } div.google_ad.top { padding-bottom: 1ex; border-bottom: 1px gray solid; } div.google_ad.bottom { @@ -105,35 +106,46 @@ div#sidepanel ul a:hover { div#sidepanel ul ul a { padding-left: 2.5ex; background: #e0e0e0; } div#sidepanel div.copyright { text-align: center; } div#content h1 { font-size: 140%; color: gray; font-weight: bold; text-align: center; margin: 1em; clear: both; } +div#content h2 { + font-size: 140%; + color: #8080a0; + font-weight: bold; + text-align: center; + margin: 1em; + clear: both; +} div#content p a { font-weight: bold; } +div#content p a.internal { + font-weight: inherit !important; +} div.insert { text-align: center; } iframe#insert { border: 1px solid black; } div.source h1 { background: #e0e0e0; border: 1px solid #808080; padding-left: 1em; margin: 0px; font-size: 100%; color: #000060; overflow: hidden; @@ -190,16 +202,55 @@ div.prevnext a { color: black; text-decoration: none; } div.prevnext a.prevnext-prev { float: left; text-align: left; } div.prevnext a.prevnext-next { float: right; text-align: right; } div.prevnext a:hover { background: gray; border: black 1px solid; color: white; } + +ul.quickref.toc { + margin: 1em 20%; + font-size: 90%; + border: solid 1px gray; +} + +dl.quickref { + margin: 1ex 1em; +} +dl.quickref dt { + margin: 0.4ex; + padding: 2px 0.5ex; + background: #e0e0e0; + display: compact; +} +dl.quickref dd { + margin: 0px 0.4ex 0.4ex 10%; + padding: 0px; + border: 1px solid grey; +} +dl.quickref code kbd { + font-style: italic; + color: #0000c0; +} +dl.quickref blockquote { + background: #ffffc0; + padding: 4px; + border: dotted 1px gray; + font-family: monospace; +} +dl.quickref blockquote em { + display: block; + font-family: inherit !important; + font-size: inherit !important; + font-weight: inherit !important; + font-style: inherit !important; + background: #ffc0c0; +} |