richter 01/03/22 01:04:53
Modified: . Tag: Embperl2c Embperl.xs Syntax.xs ep.h ep2.h
epcomp.c epdat.h epparse.c eputil.c
Embperl Tag: Embperl2c Syntax.pm
Embperl/Syntax Tag: Embperl2c EmbperlBlocks.pm HTML.pm
SSI.pm
Log:
Embperl 2 - switch syntax
Revision Changes Path
No revision
No revision
1.29.4.10 +22 -0 embperl/Embperl.xs
Index: Embperl.xs
===================================================================
RCS file: /home/cvs/embperl/Embperl.xs,v
retrieving revision 1.29.4.9
retrieving revision 1.29.4.10
diff -u -r1.29.4.9 -r1.29.4.10
--- Embperl.xs 2001/03/07 04:54:42 1.29.4.9
+++ Embperl.xs 2001/03/22 09:04:40 1.29.4.10
@@ -682,6 +682,28 @@
#ifdef EP2
+
+char *
+embperl_SyntaxName(r)
+ tReq * r
+CODE:
+ if (r && r -> pTokenTable && r -> pTokenTable -> sName)
+ RETVAL = (char *)r -> pTokenTable -> sName ;
+ else
+ RETVAL = "" ;
+OUTPUT:
+ RETVAL
+
+
+void
+embperl_Syntax(r, pSyntaxObj)
+ tReq * r
+ tTokenTable * pSyntaxObj ;
+CODE:
+ r -> pTokenTable = pSyntaxObj ;
+
+
+
INCLUDE: Cmd.xs
INCLUDE: DOM.xs
1.1.2.5 +10 -2 embperl/Attic/Syntax.xs
Index: Syntax.xs
===================================================================
RCS file: /home/cvs/embperl/Attic/Syntax.xs,v
retrieving revision 1.1.2.4
retrieving revision 1.1.2.5
diff -u -r1.1.2.4 -r1.1.2.5
--- Syntax.xs 2001/03/07 14:23:41 1.1.2.4
+++ Syntax.xs 2001/03/22 09:04:41 1.1.2.5
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: Syntax.xs,v 1.1.2.4 2001/03/07 14:23:41 richter Exp $
+# $Id: Syntax.xs,v 1.1.2.5 2001/03/22 09:04:41 richter Exp $
#
###################################################################################
@@ -28,6 +28,8 @@
HV * pHV ;
SV ** ppSV ;
int rc ;
+ STRLEN l ;
+ char * sName ;
if (!SvROK (pSyntaxObj) || SvTYPE(pHV = (HV *)SvRV(pSyntaxObj)) != SVt_PVHV ||
(mg = mg_find ((SV *)pHV, '~')))
{
@@ -40,10 +42,16 @@
sv_unmagic ((SV *)pHV, '~') ;
sv_magic ((SV *)pHV, NULL, '~', (char *)&pTab, sizeof (pTab)) ;
+ ppSV = hv_fetch (pHV, "-name", 5, 0) ;
+ if (ppSV == NULL || *ppSV == NULL || !SvPOK (*ppSV))
+ croak ("Internal Error: pSyntaxObj has no -name") ;
+
+ sName = strdup (SvPV(*ppSV, l)) ;
+
ppSV = hv_fetch (pHV, "-root", 5, 0) ;
if (ppSV == NULL || *ppSV == NULL || !SvROK (*ppSV))
croak ("Internal Error: pSyntaxObj has no -root") ;
else
- if ((rc = BuildTokenTable (pCurrReq, (HV *)(SvRV(*ppSV)), "", NULL, pTab)) !=
ok)
+ if ((rc = BuildTokenTable (pCurrReq, sName, (HV *)(SvRV(*ppSV)), "", NULL,
pTab)) != ok)
LogError (pCurrReq, rc) ;
1.27.4.9 +3 -0 embperl/ep.h
Index: ep.h
===================================================================
RCS file: /home/cvs/embperl/ep.h,v
retrieving revision 1.27.4.8
retrieving revision 1.27.4.9
diff -u -r1.27.4.8 -r1.27.4.9
--- ep.h 2001/03/07 04:54:43 1.27.4.8
+++ ep.h 2001/03/22 09:04:42 1.27.4.9
@@ -394,6 +394,9 @@
/* ---- from eputil.c ----- */
+const char * strnstr (/*in*/ const char * pString,
+ /*in*/ const char * pSubString,
+ /*in*/ int nMax) ;
char * GetHashValue (/*in*/ HV * pHash,
/*in*/ const char * sKey,
1.1.2.10 +1 -0 embperl/Attic/ep2.h
Index: ep2.h
===================================================================
RCS file: /home/cvs/embperl/Attic/ep2.h,v
retrieving revision 1.1.2.9
retrieving revision 1.1.2.10
diff -u -r1.1.2.9 -r1.1.2.10
--- ep2.h 2001/03/07 08:18:26 1.1.2.9
+++ ep2.h 2001/03/22 09:04:42 1.1.2.10
@@ -49,6 +49,7 @@
extern struct tTokenTable DefaultTokenTable ;
int BuildTokenTable (/*i/o*/ register req * r,
+ /*in*/ const char * sName,
/*in*/ HV * pTokenHash,
/*in*/ const char * pDefEnd,
/*i/o*/ void * * ppCompilerInfo,
1.4.2.38 +6 -3 embperl/Attic/epcomp.c
Index: epcomp.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epcomp.c,v
retrieving revision 1.4.2.37
retrieving revision 1.4.2.38
diff -u -r1.4.2.37 -r1.4.2.38
--- epcomp.c 2001/03/07 08:18:26 1.4.2.37
+++ epcomp.c 2001/03/22 09:04:42 1.4.2.38
@@ -853,7 +853,9 @@
char * sSourcefile ;
int nSourcefile ;
int i ;
+ SV * args[2] ;
+
Ndx2StringLen (pDomTree -> xFilename, sSourcefile, nSourcefile) ;
if (pCmd -> nNodeType != pNode -> nType)
@@ -872,10 +874,11 @@
if (pCurrReq -> bDebug & dbgParse)
lprintf (pCurrReq, "[%d]EPCOMP: #%d L%d CompileTimeCode:
%*.*s\n", pCurrReq -> nPid, pNode -> xNdx, pNode -> nLinenumber, l, l, pCode) ;
- pSV = newSVpvf("package %s ; \n#line %d \"%s\"\n%*.*s",
+ pSV = newSVpvf("package %s ;\nmy ($_ep_req) = @_;\n#line %d
\"%s\"\n%*.*s",
pCurrReq -> Buf.sEvalPackage, pNode -> nLinenumber,
sSourcefile, l,l, pCode) ;
- if ((rc = EvalDirect (pCurrReq, pSV, 0, NULL)) != ok)
- LogError (pCurrReq, rc) ;
+ args[0] = r -> pReqSV ;
+ if ((rc = EvalDirect (r, pSV, 1, args)) != ok)
+ LogError (r, rc) ;
SvREFCNT_dec(pSV);
}
break ;
1.20.4.12 +2 -0 embperl/epdat.h
Index: epdat.h
===================================================================
RCS file: /home/cvs/embperl/epdat.h,v
retrieving revision 1.20.4.11
retrieving revision 1.20.4.12
diff -u -r1.20.4.11 -r1.20.4.12
--- epdat.h 2001/03/07 08:18:26 1.20.4.11
+++ epdat.h 2001/03/22 09:04:43 1.20.4.12
@@ -115,11 +115,13 @@
struct tTokenTable * pInside ; /* table of tokens that can apear
inside this one */
struct tToken * pStartTag ; /* token that contains definition for
the start of the current token */
struct tToken * pEndTag ; /* token that contains definition for
the end of the current token */
+ const char * sParseTimePerlCode ; /* perl code that is executed when
this token is parsed, %% is replaced by the value of the current attribute */
} ;
struct tTokenTable
{
void * pCompilerInfo ; /* stores tables of the compiler , must be first
item */
+ const char * sName ; /* name of syntax */
tCharMap cStartChars ; /* for every vaild start char there is one bit set
*/
tCharMap cAllChars ; /* for every vaild char there is one bit set */
struct tToken * pTokens ; /* table with all tokens */
1.4.2.13 +94 -18 embperl/Attic/epparse.c
Index: epparse.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epparse.c,v
retrieving revision 1.4.2.12
retrieving revision 1.4.2.13
diff -u -r1.4.2.12 -r1.4.2.13
--- epparse.c 2001/03/07 20:43:24 1.4.2.12
+++ epparse.c 2001/03/22 09:04:43 1.4.2.13
@@ -165,7 +165,7 @@
if (r -> bDebug & dbgBuildToken)
lprintf (r, "[%d]TOKEN: -> %s\n", r -> nPid, pAttr) ;
- if ((rc = BuildTokenTable (r, pSubHash, pDefEnd, ppCompilerInfo,
pNewTokenTable)))
+ if ((rc = BuildTokenTable (r, NULL, pSubHash, pDefEnd, ppCompilerInfo,
pNewTokenTable)))
return rc ;
if (r -> bDebug & dbgBuildToken)
lprintf (r, "[%d]TOKEN: <- %s\n", r -> nPid, pAttr) ;
@@ -202,9 +202,10 @@
/* ------------------------------------------------------------------------ */
int BuildTokenTable (/*i/o*/ register req * r,
- /*in*/ HV * pTokenHash,
+ /*in*/ const char * sName,
+ /*in*/ HV * pTokenHash,
/*in*/ const char * pDefEnd,
- /*i/o*/ void * * ppCompilerInfo,
+ /*i/o*/ void * * ppCompilerInfo,
/*out*/ struct tTokenTable * pTokenTable)
@@ -228,6 +229,7 @@
pTokenTable -> bLSearch = 0 ;
pTokenTable -> pContainsToken = NULL ;
pTokenTable -> pCompilerInfo = NULL ;
+ pTokenTable -> sName = sName ;
if (ppCompilerInfo == NULL)
ppCompilerInfo = &pTokenTable -> pCompilerInfo ;
@@ -285,6 +287,7 @@
p -> nForceType = GetHashValueInt (pHash, "forcetype", 0) ;
p -> pStartTag = (struct tToken *)GetHashValueStrDup (pHash, "starttag",
NULL) ;
p -> pEndTag = (struct tToken *)GetHashValueStrDup (pHash, "endtag",
NULL) ;
+ p -> sParseTimePerlCode = GetHashValueStrDup (pHash, "parsetimeperlcode",
NULL) ;
if (sContains = GetHashValueStrDup (pHash, "contains", NULL))
{
unsigned char * pC ;
@@ -312,7 +315,7 @@
pAllChars [toupper(*c) >> 3] |= 1 << (toupper(*c) & 7) ;
c++ ;
}
-
+
if (r -> bDebug & dbgBuildToken)
lprintf (r, "[%d]TOKEN: %s ... %s unesc=%d nodetype=%d,
cdatatype=%d, nodename=%s\n", r -> nPid, p -> sText, p -> pContains?sContains:p ->
sEndText, p -> bUnescape, p -> nNodeType, p -> nCDataType, p -> sNodeName?p ->
sNodeName:"<null>") ;
@@ -401,7 +404,65 @@
return ok ;
}
+/* ------------------------------------------------------------------------ */
+/* */
+/* ExecParseTimeCode */
+/* */
+/* executes Perl code at parse time */
+/* */
+/* ------------------------------------------------------------------------ */
+
+static int ExecParseTimeCode (/*i/o*/ register req * r,
+ /*in */ struct tToken * pToken,
+ /*in */ char * pCurr,
+ int nLen,
+ int nLinenumber)
+
+ {
+ SV * pSV ;
+ int rc ;
+ const char * sPCode = pToken -> sParseTimePerlCode ;
+ int plen = strlen (sPCode) ;
+ char * sCode ;
+ const char * p ;
+ int n ;
+ SV * args[2] ;
+
+
+ if (p = strnstr (sPCode, "%%", nLen))
+ {
+ sCode = parse_malloc (r, nLen + plen + 1) ;
+ n = p - sPCode ;
+ memcpy (sCode, sPCode, n) ;
+ memcpy (sCode + n, pCurr, nLen) ;
+ memcpy (sCode + n + nLen, sPCode + n + 2, plen - n - 2) ;
+ nLen = nLen + plen - 2 ;
+ sCode[nLen] = '\0' ;
+ }
+ else
+ {
+ sCode = (char *)sPCode ;
+ nLen = plen ;
+ }
+ if (nLen && pCurrReq -> bDebug & dbgParse)
+ lprintf (r, "[%d]PARSE: ParseTimeCode: %*.*s\n", r -> nPid, nLen, nLen,
sCode) ;
+
+ pSV = newSVpvf("package %s ;\nmy ($_ep_req) = @_;\n#line %d \"%s\"\n%*.*s",
+ pCurrReq -> Buf.sEvalPackage, nLinenumber, r -> Buf.pFile -> sSourcefile,
nLen, nLen, sCode) ;
+ args[0] = r -> pReqSV ;
+ if ((rc = EvalDirect (r, pSV, 1, args)) != ok)
+ LogError (r, rc) ;
+ SvREFCNT_dec(pSV);
+
+ return rc ;
+ }
+
+
+
+
+
+
/* ------------------------------------------------------------------------ */
/* compare tokens */
/* ------------------------------------------------------------------------ */
@@ -435,18 +496,18 @@
/* */
/* ------------------------------------------------------------------------ */
-static int ParseTokens (/*i/o*/ register req * r,
- /*in */ char * * ppCurr,
- char * pEnd,
- struct tTokenTable * pTokenTable,
- const char * sEndText,
- const char * pParentContains,
- enum tNodeType nCDataType,
- enum tNodeType nForceType,
- int bUnescape,
- const char * pParentNodeName,
- tNode xParentNode,
- int level)
+static int ParseTokens (/*i/o*/ register req * r,
+ /*in */ char * * ppCurr,
+ char * pEnd,
+ struct tTokenTable * pTokenTable,
+ const char * sEndText,
+ const char * pParentContains,
+ enum tNodeType nCDataType,
+ enum tNodeType nForceType,
+ int bUnescape,
+ const char * pParentNodeName,
+ tNode xParentNode,
+ int level)
{
unsigned char * pStartChars = pTokenTable -> cStartChars ;
@@ -461,6 +522,13 @@
while (pCurr < pEnd)
{
struct tToken * pToken = NULL ;
+
+ if (level == 0 && pTokenTable != r -> pTokenTable)
+ { /* syntax has changed */
+ pTokenTable = r -> pTokenTable ;
+ pStartChars = pTokenTable -> cStartChars ;
+ }
+
if (pStartChars [*pCurr >> 3] & 1 << (*pCurr & 7))
{ /* valid token start char found */
struct tTokenTable * pNextTokenTab = pTokenTable ;
@@ -618,6 +686,7 @@
tNode xNewAttrNode ;
if (pEndCurr - pCurr && pToken -> nCDataType)
{
+ int nLine ;
if (pToken -> bUnescape)
{
r -> bEscInUrl = pToken -> bUnescape - 1 ;
@@ -625,8 +694,11 @@
r -> bEscInUrl = 0 ;
}
- if (!(xNewAttrNode = Node_appendChild (pDomTree,
pToken -> nCDataType, 0, pCurr, pEndCurr - pCurr, xNewNode, level+1, GetLineNoOf (r,
pCurr))))
+ if (!(xNewAttrNode = Node_appendChild (pDomTree,
pToken -> nCDataType, 0, pCurr, pEndCurr - pCurr, xNewNode, level+1, nLine =
GetLineNoOf (r, pCurr))))
return 1 ;
+ if (pToken -> sParseTimePerlCode)
+ if ((rc = ExecParseTimeCode (r, pToken, pCurr,
pEndCurr - pCurr, nLine)) != ok)
+ return rc ;
}
pCurr = pEndCurr + nSkip ;
}
@@ -694,8 +766,8 @@
tNode xDocNode ;
tNode xNode ;
tDomTree * pDomTree = DomTree_self (r -> xCurrDomTree) ;
+ tTokenTable * pTokenTableSave ;
-
if (!(r -> xCurrDomTree = DomTree_new (&pDomTree)))
return 1 ;
@@ -715,8 +787,12 @@
pDomTree -> xDocument = xDocNode ;
+ pTokenTableSave = r -> pTokenTable ;
+
if ((rc = ParseTokens (r, &pStart, pEnd, r -> pTokenTable, "", NULL, ntypCDATA,
0, 0, "root", xDocNode, 0)) != ok)
return rc ;
+
+ r -> pTokenTable = pTokenTableSave ;
1.15.4.5 +39 -0 embperl/eputil.c
Index: eputil.c
===================================================================
RCS file: /home/cvs/embperl/eputil.c,v
retrieving revision 1.15.4.4
retrieving revision 1.15.4.5
diff -u -r1.15.4.4 -r1.15.4.5
--- eputil.c 2001/03/07 08:18:27 1.15.4.4
+++ eputil.c 2001/03/22 09:04:43 1.15.4.5
@@ -165,6 +165,8 @@
while (TRUE) ;
}
+
+
/* ---------------------------------------------------------------------------- */
/* make string lower case */
/* */
@@ -188,6 +190,43 @@
}
#endif
+
+
+/* ---------------------------------------------------------------------------- */
+/* find substring with max len */
+/* */
+/* in pSring = string to search in */
+/* in pSubStr = string to search for
*/
+/* */
+/* out ret = pointer to pSubStr in pStringvalue or NULL if not found */
+/* */
+/* ---------------------------------------------------------------------------- */
+
+
+
+const char * strnstr (/*in*/ const char * pString,
+ /*in*/ const char * pSubString,
+ /*in*/ int nMax)
+
+ {
+ char c = *pSubString ;
+ int l = strlen (pSubString) ;
+
+ while (nMax-- > 0)
+ {
+ while (*pString && *pString != c)
+ pString++ ;
+
+ if (*pString == '\0')
+ return NULL ;
+
+ if (strncmp (pString, pSubString, l) == 0)
+ return pString ;
+ pString++ ;
+ }
+ }
+
+
/* ---------------------------------------------------------------------------- */
/* save strdup */
No revision
No revision
1.1.4.25 +2 -1 embperl/Embperl/Attic/Syntax.pm
Index: Syntax.pm
===================================================================
RCS file: /home/cvs/embperl/Embperl/Attic/Syntax.pm,v
retrieving revision 1.1.4.24
retrieving revision 1.1.4.25
diff -u -r1.1.4.24 -r1.1.4.25
--- Syntax.pm 2001/03/20 08:01:54 1.1.4.24
+++ Syntax.pm 2001/03/22 09:04:49 1.1.4.25
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: Syntax.pm,v 1.1.4.24 2001/03/20 08:01:54 richter Exp $
+# $Id: Syntax.pm,v 1.1.4.25 2001/03/22 09:04:49 richter Exp $
#
###################################################################################
@@ -205,6 +205,7 @@
use strict ;
}
+ $self -> {-name} = $name ;
BuildTokenTable ($self) ;
$Syntax{$name} = $self ;
return $self ;
No revision
No revision
1.1.2.9 +13 -2 embperl/Embperl/Syntax/Attic/EmbperlBlocks.pm
Index: EmbperlBlocks.pm
===================================================================
RCS file: /home/cvs/embperl/Embperl/Syntax/Attic/EmbperlBlocks.pm,v
retrieving revision 1.1.2.8
retrieving revision 1.1.2.9
diff -u -r1.1.2.8 -r1.1.2.9
--- EmbperlBlocks.pm 2001/03/17 22:20:52 1.1.2.8
+++ EmbperlBlocks.pm 2001/03/22 09:04:51 1.1.2.9
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: EmbperlBlocks.pm,v 1.1.2.8 2001/03/17 22:20:52 richter Exp $
+# $Id: EmbperlBlocks.pm,v 1.1.2.9 2001/03/22 09:04:51 richter Exp $
#
###################################################################################
@@ -70,7 +70,7 @@
sub AddMetaCmd
{
- my ($self, $cmdname, $procinfo) = @_ ;
+ my ($self, $cmdname, $procinfo, $taginfo) = @_ ;
my $tagtype = 'Embperl meta command' ;
my $ttref ;
@@ -83,6 +83,7 @@
'cdatatype' => ntypAttrValue,
'forcetype' => 1,
'unescape' => 1,
+ (ref($taginfo) eq 'HASH'?%$taginfo:()),
} ;
$tag -> {'procinfo'} = { $self -> {-procinfotype} => $procinfo } if ($procinfo)
;
@@ -95,6 +96,7 @@
'cdatatype' => ntypAttrValue,
'forcetype' => 1,
'unescape' => 2,
+ (ref($taginfo) eq 'HASH'?%$taginfo:()),
} ;
$tag -> {'procinfo'} = { $self -> {-procinfotype} => $procinfo } if ($procinfo)
;
@@ -307,6 +309,15 @@
perlcode => '_ep_hid(%$n%,%&\'<noname>%);',
removenode => 8,
}) ;
+ $self -> AddMetaCmd ('syntax',
+ {
+ compiletimeperlcode => '$_ep_req -> Syntax
(HTML::Embperl::Syntax::GetSyntax(%&\'<noname>%));',
+ removenode => 3,
+ },
+ {
+ parsetimeperlcode => '$_ep_req -> Syntax
(HTML::Embperl::Syntax::GetSyntax(\'%%\')) ;',
+ },
+ ) ;
$self -> AddMetaCmdBlock ('sub', 'endsub',
{
perlcode => 'sub _ep_sub_%&<noname>% { ',
1.1.2.9 +3 -2 embperl/Embperl/Syntax/Attic/HTML.pm
Index: HTML.pm
===================================================================
RCS file: /home/cvs/embperl/Embperl/Syntax/Attic/HTML.pm,v
retrieving revision 1.1.2.8
retrieving revision 1.1.2.9
diff -u -r1.1.2.8 -r1.1.2.9
--- HTML.pm 2001/03/17 22:20:52 1.1.2.8
+++ HTML.pm 2001/03/22 09:04:52 1.1.2.9
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: HTML.pm,v 1.1.2.8 2001/03/17 22:20:52 richter Exp $
+# $Id: HTML.pm,v 1.1.2.9 2001/03/22 09:04:52 richter Exp $
#
###################################################################################
@@ -66,7 +66,7 @@
sub AddElement
{
- my ($self, $tagtype, $tagname, $attrs, $attrsurl, $attrsnoval, $procinfo) = @_ ;
+ my ($self, $tagtype, $tagname, $attrs, $attrsurl, $attrsnoval, $procinfo,
$taginfo) = @_ ;
my $ttref ;
@@ -76,6 +76,7 @@
my $tag = $ttfollow -> {$tagname} = {
'text' => $tagname,
'unescape' => 1,
+ (ref($taginfo) eq 'HASH'?%$taginfo:()),
} ;
$tag -> {'procinfo'} = { $self -> {-procinfotype} => $procinfo } if ($procinfo)
;
1.1.2.7 +10 -1 embperl/Embperl/Syntax/Attic/SSI.pm
Index: SSI.pm
===================================================================
RCS file: /home/cvs/embperl/Embperl/Syntax/Attic/SSI.pm,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -u -r1.1.2.6 -r1.1.2.7
--- SSI.pm 2001/03/17 22:20:52 1.1.2.6
+++ SSI.pm 2001/03/22 09:04:52 1.1.2.7
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: SSI.pm,v 1.1.2.6 2001/03/17 22:20:52 richter Exp $
+# $Id: SSI.pm,v 1.1.2.7 2001/03/22 09:04:52 richter Exp $
#
###################################################################################
@@ -139,6 +139,15 @@
stackname => 'ssicmd',
stackmatch => 'if',
} ) ;
+ $self -> AddComment ('#syntax', ['type'], undef, undef,
+ {
+ compiletimeperlcode => '$_ep_req -> Syntax
(HTML::Embperl::Syntax::GetSyntax(%&\'type%));',
+ removenode => 3,
+ },
+ {
+ parsetimeperlcode => '$_ep_req -> Syntax
(HTML::Embperl::Syntax::GetSyntax(\'%%\')) ;',
+ },
+ ) ;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]