Broke out session object.
This commit is contained in:
parent
fd5069f69f
commit
2f30b3f8c4
16
SessionId.cpp
Normal file
16
SessionId.cpp
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#include "SessionId.h"
|
||||||
|
|
||||||
|
namespace jet {
|
||||||
|
|
||||||
|
SessionId::SessionId() {
|
||||||
|
unsigned char hashit[64];
|
||||||
|
unsigned char hash[SHA_DIGEST_LENGTH];
|
||||||
|
setBufferSize(64);
|
||||||
|
sprintf((char *)hashit, "JETSESSION%ld", time(0));
|
||||||
|
SHA1(hashit, strlen((char *)hashit), hash);
|
||||||
|
sprintf(getData(), "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
|
||||||
|
hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7], hash[8], hash[9],
|
||||||
|
hash[10], hash[11], hash[12], hash[13], hash[14], hash[15], hash[16], hash[17], hash[18], hash[19]);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
16
SessionId.h
Normal file
16
SessionId.h
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#ifndef __SessionId_h__
|
||||||
|
#define __SessionId_h__
|
||||||
|
|
||||||
|
#include "MString.h"
|
||||||
|
|
||||||
|
namespace jet {
|
||||||
|
|
||||||
|
class SessionId : public coreutils::MString {
|
||||||
|
|
||||||
|
public:
|
||||||
|
SessionId();
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
13
__exclude.cpp
Normal file
13
__exclude.cpp
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#include "__exclude.h"
|
||||||
|
#include "Exception.h"
|
||||||
|
|
||||||
|
namespace jet {
|
||||||
|
|
||||||
|
__exclude::__exclude(coreutils::ZString &in, coreutils::MString &parentOut, Global &global, Tag *parent, Tag *local) : Tag(in, parentOut, global, parent, this) {
|
||||||
|
if(!hasContainer)
|
||||||
|
throw coreutils::Exception("exclude must have a container.");
|
||||||
|
output = true;
|
||||||
|
evaluate = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
17
__exclude.h
Normal file
17
__exclude.h
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#ifndef ____exclude_h__
|
||||||
|
#define ____exclude_h__
|
||||||
|
|
||||||
|
#include "Tag.h"
|
||||||
|
|
||||||
|
namespace jet {
|
||||||
|
|
||||||
|
class __exclude : public Tag {
|
||||||
|
|
||||||
|
public:
|
||||||
|
__exclude(coreutils::ZString &in, coreutils::MString &parentOut, Global &global, Tag *parent, Tag *local);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
59
docs/JetCore.aux
Normal file
59
docs/JetCore.aux
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
\relax
|
||||||
|
\@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{5}{}\protected@file@percent }
|
||||||
|
\@writefile{lof}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{lot}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{toc}{\contentsline {chapter}{\numberline {2}Tags and Attributes}{7}{}\protected@file@percent }
|
||||||
|
\@writefile{lof}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{lot}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {2.1}User Defined Tags and Tag Liraries}{7}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {chapter}{\numberline {3}Variables and Variable Types}{9}{}\protected@file@percent }
|
||||||
|
\@writefile{lof}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{lot}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {3.1}Global Variables}{9}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {3.2}Local Variables}{9}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {3.3}Keyword Variables}{10}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {3.4}Environment Variables}{10}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {3.5}CGI Variables}{10}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {chapter}{\numberline {4}Expressions}{11}{}\protected@file@percent }
|
||||||
|
\@writefile{lof}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{lot}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {4.1}Operators}{11}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.1}Arithmentic Operators}{11}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1.2}Boolean Operators}{11}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {4.2}Function Reference}{11}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.1}concat}{11}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.2}integer}{11}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.3}left}{11}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.4}random}{11}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.5}round}{11}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2.6}substring}{12}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {chapter}{\numberline {5}Common Gateway Interface Features}{13}{}\protected@file@percent }
|
||||||
|
\@writefile{lof}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{lot}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{toc}{\contentsline {chapter}{\numberline {6}Tag Reference}{15}{}\protected@file@percent }
|
||||||
|
\@writefile{lof}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{lot}{\addvspace {10\p@ }}
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.1}call}{15}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.2}comment}{15}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.3}cookie}{15}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.4}dump}{16}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.5}expr}{16}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.6}for}{16}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.7}header}{16}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.8}if/else}{16}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.9}ifrow/else}{16}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.10}include}{17}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.11}jet}{17}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.12}mysql}{17}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.13}read}{17}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.14}set}{17}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.15}sql}{18}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.16}stream}{18}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.17}system}{18}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.18}tag}{18}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.19}until}{18}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.20}while}{19}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.21}whiledir}{19}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.22}whilerow}{19}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {section}{\numberline {6.23}write}{19}{}\protected@file@percent }
|
||||||
|
\gdef \@abspage@last{19}
|
||||||
BIN
docs/JetCore.dvi
Normal file
BIN
docs/JetCore.dvi
Normal file
Binary file not shown.
186
docs/JetCore.log
Normal file
186
docs/JetCore.log
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
This is e-pTeX, Version 3.141592653-p4.1.0-230214-2.6 (utf8.euc) (TeX Live 2023/Debian) (preloaded format=ptex 2025.1.13) 30 APR 2025 16:16
|
||||||
|
restricted \write18 enabled.
|
||||||
|
%&-line parsing enabled.
|
||||||
|
**JetCore.txt
|
||||||
|
(./JetCore.txt
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.1 \documentclass
|
||||||
|
{book}
|
||||||
|
?
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.3 \title
|
||||||
|
{JET Extension Tags}
|
||||||
|
? q
|
||||||
|
OK, entering \batchmode...
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.4 \author
|
||||||
|
{Bradford Matthew Arant Sr.}
|
||||||
|
The control sequence at the end of the top line
|
||||||
|
of your error message was never \def'ed. If you have
|
||||||
|
misspelled it (e.g., `\hobx'), type `I' and the correct
|
||||||
|
spelling (e.g., `I\hbox'). Otherwise just continue,
|
||||||
|
and I'll forget about whatever was undefined.
|
||||||
|
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.5 \date
|
||||||
|
{\today}
|
||||||
|
The control sequence at the end of the top line
|
||||||
|
of your error message was never \def'ed. If you have
|
||||||
|
misspelled it (e.g., `\hobx'), type `I' and the correct
|
||||||
|
spelling (e.g., `I\hbox'). Otherwise just continue,
|
||||||
|
and I'll forget about whatever was undefined.
|
||||||
|
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.5 \date{\today
|
||||||
|
}
|
||||||
|
The control sequence at the end of the top line
|
||||||
|
of your error message was never \def'ed. If you have
|
||||||
|
misspelled it (e.g., `\hobx'), type `I' and the correct
|
||||||
|
spelling (e.g., `I\hbox'). Otherwise just continue,
|
||||||
|
and I'll forget about whatever was undefined.
|
||||||
|
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.7 \begin
|
||||||
|
{document}
|
||||||
|
The control sequence at the end of the top line
|
||||||
|
of your error message was never \def'ed. If you have
|
||||||
|
misspelled it (e.g., `\hobx'), type `I' and the correct
|
||||||
|
spelling (e.g., `I\hbox'). Otherwise just continue,
|
||||||
|
and I'll forget about whatever was undefined.
|
||||||
|
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.9 \maketitle
|
||||||
|
|
||||||
|
The control sequence at the end of the top line
|
||||||
|
of your error message was never \def'ed. If you have
|
||||||
|
misspelled it (e.g., `\hobx'), type `I' and the correct
|
||||||
|
spelling (e.g., `I\hbox'). Otherwise just continue,
|
||||||
|
and I'll forget about whatever was undefined.
|
||||||
|
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.11 \tableofcontents
|
||||||
|
|
||||||
|
The control sequence at the end of the top line
|
||||||
|
of your error message was never \def'ed. If you have
|
||||||
|
misspelled it (e.g., `\hobx'), type `I' and the correct
|
||||||
|
spelling (e.g., `I\hbox'). Otherwise just continue,
|
||||||
|
and I'll forget about whatever was undefined.
|
||||||
|
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.13 \chapter
|
||||||
|
{Introduction}
|
||||||
|
The control sequence at the end of the top line
|
||||||
|
of your error message was never \def'ed. If you have
|
||||||
|
misspelled it (e.g., `\hobx'), type `I' and the correct
|
||||||
|
spelling (e.g., `I\hbox'). Otherwise just continue,
|
||||||
|
and I'll forget about whatever was undefined.
|
||||||
|
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.23 \chapter
|
||||||
|
{Tags and Attributes}
|
||||||
|
The control sequence at the end of the top line
|
||||||
|
of your error message was never \def'ed. If you have
|
||||||
|
misspelled it (e.g., `\hobx'), type `I' and the correct
|
||||||
|
spelling (e.g., `I\hbox'). Otherwise just continue,
|
||||||
|
and I'll forget about whatever was undefined.
|
||||||
|
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.32 ...e from mysql may be performed using the \<
|
||||||
|
mysql\> tag
|
||||||
|
The control sequence at the end of the top line
|
||||||
|
of your error message was never \def'ed. If you have
|
||||||
|
misspelled it (e.g., `\hobx'), type `I' and the correct
|
||||||
|
spelling (e.g., `I\hbox'). Otherwise just continue,
|
||||||
|
and I'll forget about whatever was undefined.
|
||||||
|
|
||||||
|
! Missing $ inserted.
|
||||||
|
<inserted text>
|
||||||
|
$
|
||||||
|
<to be read again>
|
||||||
|
\mskip
|
||||||
|
\>->\mskip
|
||||||
|
\medmuskip
|
||||||
|
l.32 ...mysql may be performed using the \<mysql\>
|
||||||
|
tag
|
||||||
|
I've inserted a begin-math/end-math symbol since I think
|
||||||
|
you left one out. Proceed, with fingers crossed.
|
||||||
|
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.33 in combination with the \<
|
||||||
|
ifrow\>, \<whilerow\> and \<sql\> tags.
|
||||||
|
The control sequence at the end of the top line
|
||||||
|
of your error message was never \def'ed. If you have
|
||||||
|
misspelled it (e.g., `\hobx'), type `I' and the correct
|
||||||
|
spelling (e.g., `I\hbox'). Otherwise just continue,
|
||||||
|
and I'll forget about whatever was undefined.
|
||||||
|
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.33 in combination with the \<ifrow\>, \<
|
||||||
|
whilerow\> and \<sql\> tags.
|
||||||
|
The control sequence at the end of the top line
|
||||||
|
of your error message was never \def'ed. If you have
|
||||||
|
misspelled it (e.g., `\hobx'), type `I' and the correct
|
||||||
|
spelling (e.g., `I\hbox'). Otherwise just continue,
|
||||||
|
and I'll forget about whatever was undefined.
|
||||||
|
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.33 ...on with the \<ifrow\>, \<whilerow\> and \<
|
||||||
|
sql\> tags.
|
||||||
|
The control sequence at the end of the top line
|
||||||
|
of your error message was never \def'ed. If you have
|
||||||
|
misspelled it (e.g., `\hobx'), type `I' and the correct
|
||||||
|
spelling (e.g., `I\hbox'). Otherwise just continue,
|
||||||
|
and I'll forget about whatever was undefined.
|
||||||
|
|
||||||
|
! Missing $ inserted.
|
||||||
|
<inserted text>
|
||||||
|
$
|
||||||
|
<to be read again>
|
||||||
|
\par
|
||||||
|
l.34
|
||||||
|
|
||||||
|
I've inserted a begin-math/end-math symbol since I think
|
||||||
|
you left one out. Proceed, with fingers crossed.
|
||||||
|
|
||||||
|
|
||||||
|
Overfull \hbox (81.87863pt too wide) in paragraph at lines 32--34
|
||||||
|
[]\tenrm Outputting a database from mysql may be per-formed us-ing the mysql$ \
|
||||||
|
teni tagincombinationwiththeifrow ; whilerow andsql tags:$ |
|
||||||
|
|
||||||
|
\hbox(6.94444+1.94444)x469.75499, glue set - 1.0
|
||||||
|
.\hbox(0.0+0.0)x20.0
|
||||||
|
.\displace 0.0
|
||||||
|
.\tenrm O
|
||||||
|
.\tenrm u
|
||||||
|
.\tenrm t
|
||||||
|
.etc.
|
||||||
|
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.35 \section
|
||||||
|
{User Defined Tags and Tag Liraries}
|
||||||
|
The control sequence at the end of the top line
|
||||||
|
of your error message was never \def'ed. If you have
|
||||||
|
misspelled it (e.g., `\hobx'), type `I' and the correct
|
||||||
|
spelling (e.g., `I\hbox'). Otherwise just continue,
|
||||||
|
and I'll forget about whatever was undefined.
|
||||||
|
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.66 \chapter
|
||||||
|
{Variables and Variable Types}
|
||||||
|
The control sequence at the end of the top line
|
||||||
|
of your error message was never \def'ed. If you have
|
||||||
|
misspelled it (e.g., `\hobx'), type `I' and the correct
|
||||||
|
spelling (e.g., `I\hbox'). Otherwise just continue,
|
||||||
|
and I'll forget about whatever was undefined.
|
||||||
|
|
||||||
|
! Undefined control sequence.
|
||||||
|
l.78 \begin
|
||||||
|
{itemize}
|
||||||
|
The control sequence at the end of the top line
|
||||||
|
of your error message was never \def'ed. If you have
|
||||||
|
misspelled it (e.g., `\hobx'), type `I' and the correct
|
||||||
|
spelling (e.g., `I\hbox'). Otherwise just continue,
|
||||||
|
and I'll forget about whatever was undefined.
|
||||||
|
|
||||||
|
[1] )
|
||||||
|
Output written on JetCore.dvi (1 page, 3708 bytes).
|
||||||
BIN
docs/JetCore.pdf
Normal file
BIN
docs/JetCore.pdf
Normal file
Binary file not shown.
45
docs/JetCore.toc
Normal file
45
docs/JetCore.toc
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
\contentsline {chapter}{\numberline {1}Introduction}{5}{}%
|
||||||
|
\contentsline {chapter}{\numberline {2}Tags and Attributes}{7}{}%
|
||||||
|
\contentsline {section}{\numberline {2.1}User Defined Tags and Tag Liraries}{7}{}%
|
||||||
|
\contentsline {chapter}{\numberline {3}Variables and Variable Types}{9}{}%
|
||||||
|
\contentsline {section}{\numberline {3.1}Global Variables}{9}{}%
|
||||||
|
\contentsline {section}{\numberline {3.2}Local Variables}{9}{}%
|
||||||
|
\contentsline {section}{\numberline {3.3}Keyword Variables}{10}{}%
|
||||||
|
\contentsline {section}{\numberline {3.4}Environment Variables}{10}{}%
|
||||||
|
\contentsline {section}{\numberline {3.5}CGI Variables}{10}{}%
|
||||||
|
\contentsline {chapter}{\numberline {4}Expressions}{11}{}%
|
||||||
|
\contentsline {section}{\numberline {4.1}Operators}{11}{}%
|
||||||
|
\contentsline {subsection}{\numberline {4.1.1}Arithmentic Operators}{11}{}%
|
||||||
|
\contentsline {subsection}{\numberline {4.1.2}Boolean Operators}{11}{}%
|
||||||
|
\contentsline {section}{\numberline {4.2}Function Reference}{11}{}%
|
||||||
|
\contentsline {subsection}{\numberline {4.2.1}concat}{11}{}%
|
||||||
|
\contentsline {subsection}{\numberline {4.2.2}integer}{11}{}%
|
||||||
|
\contentsline {subsection}{\numberline {4.2.3}left}{11}{}%
|
||||||
|
\contentsline {subsection}{\numberline {4.2.4}random}{11}{}%
|
||||||
|
\contentsline {subsection}{\numberline {4.2.5}round}{11}{}%
|
||||||
|
\contentsline {subsection}{\numberline {4.2.6}substring}{12}{}%
|
||||||
|
\contentsline {chapter}{\numberline {5}Common Gateway Interface Features}{13}{}%
|
||||||
|
\contentsline {chapter}{\numberline {6}Tag Reference}{15}{}%
|
||||||
|
\contentsline {section}{\numberline {6.1}call}{15}{}%
|
||||||
|
\contentsline {section}{\numberline {6.2}comment}{15}{}%
|
||||||
|
\contentsline {section}{\numberline {6.3}cookie}{15}{}%
|
||||||
|
\contentsline {section}{\numberline {6.4}dump}{16}{}%
|
||||||
|
\contentsline {section}{\numberline {6.5}expr}{16}{}%
|
||||||
|
\contentsline {section}{\numberline {6.6}for}{16}{}%
|
||||||
|
\contentsline {section}{\numberline {6.7}header}{16}{}%
|
||||||
|
\contentsline {section}{\numberline {6.8}if/else}{16}{}%
|
||||||
|
\contentsline {section}{\numberline {6.9}ifrow/else}{16}{}%
|
||||||
|
\contentsline {section}{\numberline {6.10}include}{17}{}%
|
||||||
|
\contentsline {section}{\numberline {6.11}jet}{17}{}%
|
||||||
|
\contentsline {section}{\numberline {6.12}mysql}{17}{}%
|
||||||
|
\contentsline {section}{\numberline {6.13}read}{17}{}%
|
||||||
|
\contentsline {section}{\numberline {6.14}set}{17}{}%
|
||||||
|
\contentsline {section}{\numberline {6.15}sql}{18}{}%
|
||||||
|
\contentsline {section}{\numberline {6.16}stream}{18}{}%
|
||||||
|
\contentsline {section}{\numberline {6.17}system}{18}{}%
|
||||||
|
\contentsline {section}{\numberline {6.18}tag}{18}{}%
|
||||||
|
\contentsline {section}{\numberline {6.19}until}{18}{}%
|
||||||
|
\contentsline {section}{\numberline {6.20}while}{19}{}%
|
||||||
|
\contentsline {section}{\numberline {6.21}whiledir}{19}{}%
|
||||||
|
\contentsline {section}{\numberline {6.22}whilerow}{19}{}%
|
||||||
|
\contentsline {section}{\numberline {6.23}write}{19}{}%
|
||||||
482
docs/JetCore.txt
Normal file
482
docs/JetCore.txt
Normal file
@ -0,0 +1,482 @@
|
|||||||
|
\documentclass{book}
|
||||||
|
|
||||||
|
\title{JET Extension Tags}
|
||||||
|
\author{Bradford Matthew Arant Sr.}
|
||||||
|
\date{\today}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\tableofcontents
|
||||||
|
|
||||||
|
\chapter{Introduction}
|
||||||
|
|
||||||
|
JET will pass through the untagged areas to the output without any
|
||||||
|
modifications. Data contained within the tags may modify their
|
||||||
|
containers before placing any output. The space taken by the tag
|
||||||
|
itself is not passed to the output and will not appear in the output.
|
||||||
|
|
||||||
|
Skip Blank Lines options on containers will skip passing any blank
|
||||||
|
lines or line containing only whitespace to the output.
|
||||||
|
|
||||||
|
\chapter{Tags and Attributes}
|
||||||
|
|
||||||
|
XML style tagging is used to insert functions and other behaviors into
|
||||||
|
the script. As the document contents are output a tag may be inserted
|
||||||
|
to perform the desired function and affect the output.
|
||||||
|
|
||||||
|
Tag attributes are used to pass parameters into the operations and
|
||||||
|
functionality for each tag.
|
||||||
|
|
||||||
|
Outputting a database from mysql may be performed using the \<mysql\> tag
|
||||||
|
in combination with the \<ifrow\>, \<whilerow\> and \<sql\> tags.
|
||||||
|
|
||||||
|
\section{User Defined Tags and Tag Liraries}
|
||||||
|
|
||||||
|
You can define your own tag definitions and use them within your JET
|
||||||
|
scripts.
|
||||||
|
|
||||||
|
Keywords are not defined as part of the tag definition and any
|
||||||
|
attribute added to the implementation of the tag is passed into the
|
||||||
|
tag process as a local variable for that container.
|
||||||
|
|
||||||
|
Tag definitions can also be defined as scoped or unscoped, as follows:
|
||||||
|
|
||||||
|
scoped - local variables using the \#[n] format can be scoped to just
|
||||||
|
your tag contents. Access to local variables where your tag is being
|
||||||
|
used must use the 'parent' scope option to retrieve variables from the
|
||||||
|
parent.
|
||||||
|
|
||||||
|
unscoped - local variables are shared with the parent tag environment
|
||||||
|
and are not unique to your tag definition.
|
||||||
|
|
||||||
|
A <container /> tag can be inserted into the container and will take
|
||||||
|
the contents of the container at runtime and insert it into the output
|
||||||
|
when processing the user defined tag definition. The container tag of
|
||||||
|
the the <container /> is processed before the container containing the
|
||||||
|
<container /> so that local variabls can be set and processed that
|
||||||
|
will affect the tags overall output.
|
||||||
|
|
||||||
|
Tags are many times nested with tags running within the container of a
|
||||||
|
higher tag.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\chapter{Variables and Variable Types}
|
||||||
|
|
||||||
|
Variables are used to contain dynamic content values and can be
|
||||||
|
sourced from several locations and limited in scope depending on use.
|
||||||
|
Some variable types can be set to reflect script state or are read
|
||||||
|
only from other outside sources of data.
|
||||||
|
|
||||||
|
Jet tags can be either scoped or unscoped.
|
||||||
|
|
||||||
|
The following is a list of
|
||||||
|
variable types and a brief description of their source:
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
|
||||||
|
\item Global - values can be initiaized using the set tag and
|
||||||
|
specifying the scope of global.
|
||||||
|
|
||||||
|
\item Local -
|
||||||
|
|
||||||
|
\item Keyword - within a tag's container we may access the keyword
|
||||||
|
values specified on the containing tag.
|
||||||
|
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\section{Global Variables}
|
||||||
|
|
||||||
|
Global variables are available to all logic once the values have been
|
||||||
|
set.
|
||||||
|
|
||||||
|
Global variables are accessed throughout the procedure with the
|
||||||
|
\$[name] syntax.
|
||||||
|
|
||||||
|
Global is the default if the scope is
|
||||||
|
not specified for any function that writes to a variable.
|
||||||
|
|
||||||
|
\section{Local Variables}
|
||||||
|
|
||||||
|
Local variables are established using the set tag and specifying a
|
||||||
|
scope of local. Local variables are typically only available within
|
||||||
|
the container where they are defined. Some containers may not be
|
||||||
|
capable of storing local variables (i.e. set tag) and are inheriting
|
||||||
|
the local scope from their parent tag.
|
||||||
|
|
||||||
|
\section{Keyword Variables}
|
||||||
|
|
||||||
|
Keyword variables are set when they are specified on a containing tag.
|
||||||
|
Within the container you can access the variable using the syntax
|
||||||
|
\$[\%name].
|
||||||
|
|
||||||
|
The variable retrieved is not processed for variable resolution.
|
||||||
|
|
||||||
|
\section{Environment Variables}
|
||||||
|
|
||||||
|
\section{CGI Variables}
|
||||||
|
|
||||||
|
When operating Jet in CGI mode you have access to the form data
|
||||||
|
submitted by the remote client (usually a browser or curl request)
|
||||||
|
using the POST method.
|
||||||
|
|
||||||
|
\chapter{Expressions}
|
||||||
|
|
||||||
|
Expressions are used to perform complicated calculations (arithmetic), perform
|
||||||
|
comparisons between values (boolean), manipulate strings (string) or
|
||||||
|
perform operations on dates (date).
|
||||||
|
|
||||||
|
\section{Operators}
|
||||||
|
|
||||||
|
Operators are used to perform arithmetic or boolean operations on
|
||||||
|
arguments to derive a particular result. There are two types of
|
||||||
|
operators, as follows:
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
|
||||||
|
\item Arithmetic -
|
||||||
|
|
||||||
|
\item Boolean -
|
||||||
|
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsection{Arithmentic Operators}
|
||||||
|
|
||||||
|
\subsection{Boolean Operators}
|
||||||
|
|
||||||
|
|
||||||
|
\section{Function Reference}
|
||||||
|
|
||||||
|
\subsection{concat}
|
||||||
|
|
||||||
|
\subsection{integer}
|
||||||
|
|
||||||
|
\subsection{left}
|
||||||
|
|
||||||
|
\subsection{random}
|
||||||
|
|
||||||
|
Use the random function to return a random number between 0 and 1.
|
||||||
|
|
||||||
|
\subsection{round}
|
||||||
|
|
||||||
|
Use the round function to round a numeric value to the specified
|
||||||
|
number of digits after the decimal point.
|
||||||
|
|
||||||
|
\subsection{substring}
|
||||||
|
|
||||||
|
Use the substring operation to extract a portion of a string and return
|
||||||
|
the value as a string.
|
||||||
|
|
||||||
|
\chapter{Common Gateway Interface Features}
|
||||||
|
|
||||||
|
JET extension tags provides options for enabling the processing of
|
||||||
|
data using the Common Gateway Interface (CGI) specification used by
|
||||||
|
Apache and NGINX as well as other HTTP server applications. This makes
|
||||||
|
JET a powerful tool for creating web interfaces and API handler
|
||||||
|
environments for various javascript frameworks as well as just native
|
||||||
|
HTML style interaction.
|
||||||
|
|
||||||
|
To enable the CGI features within a requested document you can specify
|
||||||
|
the cgi="true" attribute on a <jet> tag containing the document or
|
||||||
|
<jet /> tag contained within the document.
|
||||||
|
|
||||||
|
When you enable the CGI interface the script will look for specific
|
||||||
|
environment variables used to retrieve the input data from the browser
|
||||||
|
interface and automatically provide these values to the JET scripting
|
||||||
|
using the variables interface. There are currently three supported
|
||||||
|
data formats or content types through this interface. These content
|
||||||
|
types are:
|
||||||
|
|
||||||
|
formdata/urlencoded
|
||||||
|
mutipart/formdata
|
||||||
|
text/json
|
||||||
|
|
||||||
|
\section{Session Control}
|
||||||
|
|
||||||
|
Common use of the CGI is requiring the transaction based interaction
|
||||||
|
of a web browser to maintain a state between interactions. JET 2.0
|
||||||
|
provides a built in mechanism to assist in managing a session concept.
|
||||||
|
This approach uses a single session cookie to identify the session to
|
||||||
|
the back end services.
|
||||||
|
|
||||||
|
By specifying a seesiondir keyword on the <jet> tag you enable the
|
||||||
|
session control functionality. Upon the delivery of a request that
|
||||||
|
does not contain a session 'token' a session token will be generated
|
||||||
|
for the request and a cookie will be returned in the reponse
|
||||||
|
containing the session token. Additionally, a session file is placed
|
||||||
|
into the directory named after the token. Captured session data will
|
||||||
|
become available to future requests coming into the server and made
|
||||||
|
available through the variable formats for the session.
|
||||||
|
|
||||||
|
The <set> tag will also have an additional scope value that can be
|
||||||
|
used to store the value in the session. This is scope="session".
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\chapter{Tag Reference}
|
||||||
|
|
||||||
|
This chapter will cover all the tags and parameters required to
|
||||||
|
perform the operations that JET provides.
|
||||||
|
|
||||||
|
A special character sequence is used to exclude a section from tag and
|
||||||
|
variable parsing. This sequence is |> this is not parsed or resolved
|
||||||
|
<|. This takes affect through all levels and depths of tag processing
|
||||||
|
and is different from the <exclude /> tag as exclude may be further
|
||||||
|
parsed if output is again evaluated.
|
||||||
|
|
||||||
|
\section{call}
|
||||||
|
|
||||||
|
Use the call tag to evoke an executable file from a jet script.
|
||||||
|
|
||||||
|
The atrributes are:
|
||||||
|
|
||||||
|
pgm
|
||||||
|
|
||||||
|
argn
|
||||||
|
|
||||||
|
name
|
||||||
|
|
||||||
|
input
|
||||||
|
|
||||||
|
error
|
||||||
|
|
||||||
|
The call tag is unscoped.
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
<call pgm="ls" arg1="-al" name="listing" />
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
will call the ls command with parameter -al and place the output into
|
||||||
|
a variable named 'listing'.
|
||||||
|
|
||||||
|
\section{comment}
|
||||||
|
|
||||||
|
Use the comment tag to create a section in the jet script that can be
|
||||||
|
used for making comments and is ignored by the jet reader.
|
||||||
|
|
||||||
|
The comments tag has no attributes.
|
||||||
|
|
||||||
|
\section{cookie}
|
||||||
|
|
||||||
|
Use the cookie tag to specify a cookie when using the CGI features
|
||||||
|
of JET.
|
||||||
|
|
||||||
|
\section{dump}
|
||||||
|
|
||||||
|
Use the dump tag to display the contents of all the global, local and
|
||||||
|
cgi cariables to a specified file.
|
||||||
|
|
||||||
|
The attributes are:
|
||||||
|
|
||||||
|
file
|
||||||
|
|
||||||
|
\section{exclude}
|
||||||
|
|
||||||
|
Use the exclude tag to exclude a conainer contents from normal parsing
|
||||||
|
and variable resolution.
|
||||||
|
|
||||||
|
\section{expr}
|
||||||
|
|
||||||
|
\section{for}
|
||||||
|
|
||||||
|
Use the for tag to iterate a tag container for a logical number of
|
||||||
|
times.
|
||||||
|
|
||||||
|
The attributes are:
|
||||||
|
|
||||||
|
start
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
step
|
||||||
|
|
||||||
|
name - defines a name for the iterator that will be available within
|
||||||
|
the loop.
|
||||||
|
|
||||||
|
scope - defines the scope of the iterator for the loop.
|
||||||
|
|
||||||
|
\section{header}
|
||||||
|
|
||||||
|
Use the header tag to output a header prior to outputting the process
|
||||||
|
buffer to the requester.
|
||||||
|
|
||||||
|
The attributes are:
|
||||||
|
|
||||||
|
name
|
||||||
|
|
||||||
|
expr
|
||||||
|
|
||||||
|
value
|
||||||
|
|
||||||
|
container
|
||||||
|
|
||||||
|
\section{if/else}
|
||||||
|
|
||||||
|
Use the if tag to perform a conditional output on the tag container.
|
||||||
|
An optional else container provides alternate output in the event the
|
||||||
|
condition is not met.
|
||||||
|
|
||||||
|
The attributes are:
|
||||||
|
|
||||||
|
value1
|
||||||
|
|
||||||
|
value2
|
||||||
|
|
||||||
|
type
|
||||||
|
|
||||||
|
expr
|
||||||
|
|
||||||
|
\section{ifrow/else}
|
||||||
|
|
||||||
|
Use the ifrow tag to output the tag container if a row exists in the
|
||||||
|
mysql tag. An optional else container provides alternate output in the
|
||||||
|
event that there is no row for the sql result.
|
||||||
|
|
||||||
|
The attributes are:
|
||||||
|
|
||||||
|
sessionid
|
||||||
|
|
||||||
|
\section{include}
|
||||||
|
|
||||||
|
Use the include tag to include another content file at the location of
|
||||||
|
the include tag.
|
||||||
|
|
||||||
|
The attributes are:
|
||||||
|
|
||||||
|
file
|
||||||
|
|
||||||
|
\section{jet}
|
||||||
|
|
||||||
|
Use the jet tag to specify parameters for the jet parsing session and
|
||||||
|
to control the output options.
|
||||||
|
|
||||||
|
\section{mysql}
|
||||||
|
|
||||||
|
Use the mysql tag to specify parameters for connecting to a mysql
|
||||||
|
server. The container of the tag is where you can specify the sql
|
||||||
|
statement and method of processing the result output of the executed
|
||||||
|
sql statement. The mysql session created is valid only withon the
|
||||||
|
container of this tag.
|
||||||
|
|
||||||
|
The attributes are:
|
||||||
|
|
||||||
|
host
|
||||||
|
|
||||||
|
database
|
||||||
|
|
||||||
|
user
|
||||||
|
|
||||||
|
password
|
||||||
|
|
||||||
|
sessionid
|
||||||
|
|
||||||
|
\section{read}
|
||||||
|
|
||||||
|
Use the read tag to read the contents of a file contained on the local
|
||||||
|
file system into a variable for further output or processing.
|
||||||
|
|
||||||
|
The attributes are:
|
||||||
|
|
||||||
|
file
|
||||||
|
|
||||||
|
name
|
||||||
|
|
||||||
|
\section{set}
|
||||||
|
|
||||||
|
Use the set tag to store initialize a variable to a value contained in
|
||||||
|
a value attribute, the result of an expression (expr) attribute or the
|
||||||
|
contents of the set tag container.
|
||||||
|
|
||||||
|
The attributes are:
|
||||||
|
|
||||||
|
name
|
||||||
|
|
||||||
|
expr
|
||||||
|
|
||||||
|
value
|
||||||
|
|
||||||
|
container
|
||||||
|
|
||||||
|
scope
|
||||||
|
|
||||||
|
\section{sql}
|
||||||
|
|
||||||
|
Use the sql tag to specify an sql statement to run on the sql server
|
||||||
|
specified in the mysql tag.
|
||||||
|
|
||||||
|
As long as sql statements are executed within the same mysql
|
||||||
|
containing tag then the same mysql session is used for each sql
|
||||||
|
statement.
|
||||||
|
|
||||||
|
The attributes are:
|
||||||
|
|
||||||
|
sessionid
|
||||||
|
|
||||||
|
container
|
||||||
|
|
||||||
|
\section{stream}
|
||||||
|
|
||||||
|
Use stream tag to output data from the server without waiting for the
|
||||||
|
standard output buffering and processing of the JET script. This is
|
||||||
|
useful for outputting images and streams for audio and video without
|
||||||
|
the server having to load the whole thing into RAM first.
|
||||||
|
|
||||||
|
The attributes are:
|
||||||
|
|
||||||
|
file
|
||||||
|
|
||||||
|
\section{system}
|
||||||
|
|
||||||
|
Use the system tag to execute a bash shell command within the JET
|
||||||
|
script.
|
||||||
|
|
||||||
|
\section{tag}
|
||||||
|
|
||||||
|
Use the tag tag to define a new tag definition for use within the
|
||||||
|
script.
|
||||||
|
|
||||||
|
Tags are normally defined globally and can be used anywhere within the
|
||||||
|
script.
|
||||||
|
|
||||||
|
Tags can also be defined within other tags and the scope of those tags
|
||||||
|
is only within the defining tag's container. The enclosed tag
|
||||||
|
definition will not be available globally.
|
||||||
|
|
||||||
|
\section{until}
|
||||||
|
|
||||||
|
Use the until tag to process a container at least once and
|
||||||
|
continue to process the container until the specified condition is met.
|
||||||
|
|
||||||
|
Note that this tag always processes the container at least once.
|
||||||
|
|
||||||
|
Be careful not to create a never ending loop by not modifying any of
|
||||||
|
the condition parameters specified in the condition clause.
|
||||||
|
|
||||||
|
\section{while}
|
||||||
|
|
||||||
|
Use the while tag to process a container if the specified condition is
|
||||||
|
true.
|
||||||
|
|
||||||
|
Note that the container may not be processed if the condition is never
|
||||||
|
met.
|
||||||
|
|
||||||
|
Be careful not to create a never ending loop by not modifying any of
|
||||||
|
the condition parameters specified in the condition clause.
|
||||||
|
|
||||||
|
\section{whiledir}
|
||||||
|
|
||||||
|
Use the whiledir tag to loop a directory path to the container for
|
||||||
|
processing.
|
||||||
|
|
||||||
|
\section{whilerow}
|
||||||
|
|
||||||
|
Use the whilerow tag in combination with mysql and sql tags to provide
|
||||||
|
a container to process for each row retrieved by the sql statement.
|
||||||
|
|
||||||
|
\section{write}
|
||||||
|
|
||||||
|
Use the write tag to write data to the local file system.
|
||||||
|
|
||||||
|
\end{document}
|
||||||
BIN
docs/JetCore.txt.pdf
Normal file
BIN
docs/JetCore.txt.pdf
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user