You are viewing a plain text version of this content. The canonical link for it is here.
Posted to embperl-cvs@perl.apache.org by ri...@locus.apache.org on 2000/05/29 16:23:46 UTC
cvs commit: embperl/test/html input.htm table.htm
richter 00/05/29 07:23:45
Modified: . Tag: Embperl2 epcomp.c epdom.c epdom.h eputil.c
test.pl
Embperl Tag: Embperl2 Syntax.pm
test/cmp Tag: Embperl2 error.htm
test/html Tag: Embperl2 input.htm table.htm
Log:
Embperl 2 - Input & Tables
Revision Changes Path
No revision
No revision
1.1.2.17 +244 -92 embperl/Attic/epcomp.c
Index: epcomp.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epcomp.c,v
retrieving revision 1.1.2.16
retrieving revision 1.1.2.17
diff -u -r1.1.2.16 -r1.1.2.17
--- epcomp.c 2000/05/29 07:34:29 1.1.2.16
+++ epcomp.c 2000/05/29 14:22:08 1.1.2.17
@@ -19,6 +19,9 @@
{
const char * * sPerlCode ;
const char * sPerlCodeEnd ;
+ const char * sStackName ;
+ const char * sPushStack ;
+ int bPopStack ;
int numPerlCode ;
int bRemoveNode ;
int bMayJump ;
@@ -26,7 +29,6 @@
typedef struct tEmbperlCmd tEmbperlCmd ;
-char * pCode = NULL ;
char * pProg = NULL ;
tStringIndex nMaxEmbperlCmd ;
@@ -106,8 +108,11 @@
}
pEmbperlCmds[nNodeName].sPerlCodeEnd = GetHashValueStr (pHash, "perlcodeend", NULL) ;
+ pEmbperlCmds[nNodeName].sStackName = GetHashValueStr (pHash, "stackname", NULL) ;
+ pEmbperlCmds[nNodeName].sPushStack = GetHashValueStr (pHash, "push", NULL) ;
pEmbperlCmds[nNodeName].bRemoveNode = GetHashValueInt (pHash, "removenode", 0) ;
pEmbperlCmds[nNodeName].bMayJump = GetHashValueInt (pHash, "mayjump", 0) ;
+ pEmbperlCmds[nNodeName].bPopStack = GetHashValueInt (pHash, "pop", 0) ;
if (r -> bDebug & dbgParse)
@@ -139,37 +144,34 @@
}
-
/* ------------------------------------------------------------------------ */
/* */
-/* embperl_CompileAddChildNode */
+/* embperl_CompileAddValue */
/* */
-/* Add value of child node to perl code */
+/* Add value to perl code */
/* */
/* ------------------------------------------------------------------------ */
-int embperl_CompileAddChildNode (/*in*/ tDomTree * pDomTree,
- /*in*/ tNodeData * pNode,
+static int embperl_CompileAddValue (/*in*/ const char * sText,
const char * p,
const char * q,
+ const char * eq,
char op,
- char out)
+ char out,
+ /*i/o*/ char * * ppCode )
+
{
const char * or ;
- const char * eq = strchr (p, ':') ;
- const char * e = eq && eq < q?eq:q;
- int nChildNo = atoi (p) ;
- struct tNodeData * pChildNode = Node_selfNthChild (pDomTree, pNode, nChildNo) ;
- const char * sText ;
+ const char * e ;
+
- if (pChildNode)
+ if (sText)
{
- sText = Node_selfNodeName(pChildNode) ;
- if (op == '=' && eq)
+ if (op == '=' && eq)
{
eq++ ;
do
@@ -199,47 +201,187 @@
}
while (or) ;
}
- else if (op == '!' && pChildNode)
+ else if (op == '!' && sText)
{
return 0 ;
}
- }
+
+ if (out)
+ StringAdd (ppCode, sText, 0) ;
+ }
else
- if (op != '!')
+ {
+ if (op != '!')
return 0 ;
+ }
+
+ return 1 ;
+ }
+
- if (pChildNode && out)
- StringAdd (&pCode, sText, 0) ;
+/* ------------------------------------------------------------------------ */
+/* */
+/* embperl_CompilePushStack */
+/* */
+/* Add value of child node to perl code */
+/* */
+/* ------------------------------------------------------------------------ */
+
+
+static void embperl_CompilePushStack (/*in*/ tDomTree * pDomTree,
+ const char * sStackName,
+ const char * sStackValue)
+
+ {
+ SV ** ppSV ;
+ SV * pSV ;
+ AV * pAV ;
+
+ ppSV = hv_fetch((HV *)(pDomTree -> pSV), (char *)sStackName, strlen (sStackName), 1) ;
+ if (ppSV == NULL)
+ return ;
+
+ if (*ppSV == NULL || SvTYPE (*ppSV) != SVt_RV)
+ *ppSV = newRV_noinc ((SV *)(pAV = newAV ())) ;
else
- ; // mydie ("missing child") ;
+ pAV = (AV *)SvRV (*ppSV) ;
+
+
+ pSV = newSVpv ((char *)sStackValue, strlen (sStackValue)) ;
+ SvUPGRADE (pSV, SVt_PVIV) ;
+ SvIVX (pSV) = 0 ;
+ av_push (pAV, pSV) ;
+ }
- return 1 ;
+
+/* ------------------------------------------------------------------------ */
+/* */
+/* embperl_CompilePopStack */
+/* */
+/* Add value of child node to perl code */
+/* */
+/* ------------------------------------------------------------------------ */
+
+
+static void embperl_CompilePopStack (/*in*/ tDomTree * pDomTree,
+ const char * sStackName)
+
+ {
+ SV ** ppSV ;
+ SV * pSV ;
+
+ ppSV = hv_fetch((HV *)(pDomTree -> pSV), (char *)sStackName, strlen (sStackName), 0) ;
+ if (ppSV == NULL || *ppSV == NULL || SvTYPE (*ppSV) != SVt_RV)
+ return ;
+
+ av_pop ((AV *)SvRV (*ppSV)) ;
}
/* ------------------------------------------------------------------------ */
/* */
-/* embperl_CompileAddAttribut */
+/* embperl_CompileAddStack */
+/* */
+/* Add value of child node to perl code */
+/* */
+/* ------------------------------------------------------------------------ */
+
+
+static int embperl_CompileAddStack (/*in*/ tDomTree * pDomTree,
+ const char * p,
+ const char * q,
+ char op,
+ char out,
+ char str,
+ /*i/o*/ char * * ppCode )
+ {
+ const char * eq = strchr (p, ':') ;
+ const char * e = eq && eq < q?eq:q;
+ IV l ;
+ const char * sText = NULL ;
+ SV ** ppSV ;
+ AV * pAV ;
+
+
+ ppSV = hv_fetch((HV *)(pDomTree -> pSV), (char *)p, e - p, 0) ;
+ if (ppSV == NULL || *ppSV == NULL || SvTYPE (*ppSV) != SVt_RV)
+ return op == '!'?1:0 ;
+
+ pAV = (AV *)SvRV (*ppSV) ;
+
+ if (SvTYPE (pAV) != SVt_PVAV)
+ return op == '!'?1:0 ;
+
+ ppSV = av_fetch (pAV, av_len (pAV), 0) ;
+ if (ppSV == NULL || *ppSV == NULL)
+ return op == '!'?1:0 ;
+
+ if (str)
+ {
+ sText = SvPV (*ppSV, l) ;
+ (SvIVX (*ppSV))++ ;
+ }
+ else
+ sText = SvIVX (*ppSV)?"1":NULL ;
+
+
+ return embperl_CompileAddValue (sText, p, q, eq, op, out, ppCode) ;
+ }
+
+/* ------------------------------------------------------------------------ */
/* */
+/* embperl_CompileAddChildNode */
+/* */
/* Add value of child node to perl code */
/* */
/* ------------------------------------------------------------------------ */
-int embperl_CompileAddAttribut (/*in*/ tDomTree * pDomTree,
+static int embperl_CompileAddChildNode (/*in*/ tDomTree * pDomTree,
/*in*/ tNodeData * pNode,
const char * p,
const char * q,
char op,
- char out)
+ char out,
+ /*i/o*/ char * * ppCode )
{
- const char * or ;
const char * eq = strchr (p, ':') ;
+ int nChildNo = atoi (p) ;
+ struct tNodeData * pChildNode = Node_selfNthChild (pDomTree, pNode, nChildNo) ;
+ const char * sText = NULL ;
+
+ if (pChildNode)
+ sText = Node_selfNodeName(pChildNode) ;
+
+ return embperl_CompileAddValue (sText, p, q, eq, op, out, ppCode) ;
+ }
+
+/* ------------------------------------------------------------------------ */
+/* */
+/* embperl_CompileAddAttribut */
+/* */
+/* Add value of child node to perl code */
+/* */
+/* ------------------------------------------------------------------------ */
+
+
+static int embperl_CompileAddAttribut (/*in*/ tDomTree * pDomTree,
+ /*in*/ tNodeData * pNode,
+ const char * p,
+ const char * q,
+ char op,
+ char out,
+ /*i/o*/ char * * ppCode )
+
+
+
+ {
+ const char * eq = strchr (p, ':') ;
const char * e = eq && eq < q?eq:q;
tAttrData * pChildNode = Element_selfGetAttribut (pDomTree, pNode, p, e - p) ;
- const char * sText ;
+ const char * sText = NULL ;
if (pChildNode)
@@ -248,53 +390,10 @@
sText = Node_selfNodeName (Node_selfFirstChild (pDomTree, (tNodeData *)pChildNode)) ;
else
sText = Ndx2String (pChildNode -> xValue) ;
- if (op == '=' && eq)
- {
- eq++ ;
- do
- {
- or = strchr (eq + 1, '|') ;
- e = or?or - 1:q - 1 ;
- if (strncmp (sText, eq, e - eq) == 0)
- break ;
- if (or == NULL)
- return 0 ;
- eq = or + 1 ;
- }
- while (or) ;
- }
- else if (op == '~' && eq)
- {
- eq++ ;
- do
- {
- or = strchr (eq + 1, '|') ;
- e = or?or - 1:q - 1 ;
- if (strstrn (sText, eq, e - eq))
- break ;
- if (or == NULL)
- return 0 ;
- eq = or + 1 ;
- }
- while (or) ;
- }
- else if (op == '!' && pChildNode)
- {
- return 0 ;
- }
- }
- else
- if (op != '!')
- return 0 ;
- if (pChildNode && out && pChildNode -> xValue != 0)
- {
- StringAdd (&pCode, sText, 0) ;
- }
- else
- ; // mydie ("missing child") ;
-
- return 1 ;
+ }
+
+ return embperl_CompileAddValue (sText, p, q, eq, op, out, ppCode) ;
}
/* ------------------------------------------------------------------------ */
@@ -306,9 +405,10 @@
/* ------------------------------------------------------------------------ */
-int embperl_CompileToPerlCode (/*in*/ tDomTree * pDomTree,
- /*in*/ tNodeData * pNode,
- /*in*/ const char * sPerlCode)
+static int embperl_CompileToPerlCode (/*in*/ tDomTree * pDomTree,
+ /*in*/ tNodeData * pNode,
+ /*in*/ const char * sPerlCode,
+ /*out*/ char * * ppCode )
{
@@ -316,15 +416,15 @@
const char * q ;
int valid = 1 ;
+ StringNew (ppCode, 512) ;
if (sPerlCode)
{
- StringNew (&pCode, 512) ;
p = strchr (sPerlCode, '%') ;
while (p)
{
int n = p - sPerlCode ;
if (n)
- StringAdd (&pCode, sPerlCode, n) ;
+ StringAdd (ppCode, sPerlCode, n) ;
q = strchr (p+1, '%') ;
if (q)
{
@@ -347,27 +447,43 @@
if (type == '#')
{
- if (!embperl_CompileAddChildNode (pDomTree, pNode ,p, q, op, out))
+ if (!embperl_CompileAddChildNode (pDomTree, pNode ,p, q, op, out, ppCode))
{
valid = 0 ;
break ;
}
}
else if (type == '&')
+ {
+ if (!embperl_CompileAddAttribut (pDomTree, pNode ,p, q, op, out, ppCode))
+ {
+ valid = 0 ;
+ break ;
+ }
+ }
+ else if (type == '^')
{
- if (!embperl_CompileAddAttribut (pDomTree, pNode ,p, q, op, out))
+ if (!embperl_CompileAddStack (pDomTree, p, q, op, out, 1, ppCode))
{
valid = 0 ;
break ;
}
}
+ else if (type == '?')
+ {
+ if (!embperl_CompileAddStack (pDomTree, p, q, op, out, 0, ppCode))
+ {
+ valid = 0 ;
+ break ;
+ }
+ }
else if (type == '$')
{
if (*p == 'n')
{
char s [20] ;
int l = sprintf (s, "$_ep_DomTree,%u", pNode -> xNdx) ;
- StringAdd (&pCode, s, l) ;
+ StringAdd (ppCode, s, l) ;
}
}
@@ -381,13 +497,7 @@
}
}
if (valid)
- {
- int l = ArrayGetSize (pCode) ;
- if (l)
- StringAdd (&pProg, pCode, l) ;
- StringAdd (&pProg, sPerlCode, 0) ;
- StringAdd (&pProg, "\n", 1) ;
- }
+ StringAdd (ppCode, sPerlCode, 0) ;
}
return valid ;
}
@@ -414,6 +524,9 @@
tNodeData * pNode = Node_self (pDomTree, xNode) ;
tAttrData * pAttr ;
int nAttr = 0 ;
+ char * pCode = NULL ;
+ char * sStackValue = NULL ;
+
if (*bCheckpointPending && (pNode -> nType == ntypText || pNode -> nType == ntypCDATA) && pNode -> bFlags && (pNode -> bFlags & nflgIgnore) == 0)
{
@@ -453,8 +566,17 @@
for (i = 0; i < pCmd -> numPerlCode; i++)
{
- if (embperl_CompileToPerlCode (pDomTree, pNode, pCmd -> sPerlCode[i]))
+ if (embperl_CompileToPerlCode (pDomTree, pNode, pCmd -> sPerlCode[i], &pCode))
+ {
+ if (pCode)
+ {
+ int l = ArrayGetSize (pCode) ;
+ if (l)
+ StringAdd (&pProg, pCode, l) ;
+ StringAdd (&pProg, "\n", 1) ;
+ }
break ;
+ }
}
if (pCmd -> bRemoveNode & 6)
@@ -488,6 +610,15 @@
Node_selfRemoveChild(pDomTree, -1, pNode) ;
else if (pCmd -> bRemoveNode & 8)
pNode -> bFlags |= nflgIgnore ;
+
+ if (pCmd -> sStackName && pCmd -> sPushStack)
+ {
+ if (embperl_CompileToPerlCode (pDomTree, pNode, pCmd -> sPushStack, &sStackValue))
+ {
+ embperl_CompilePushStack (pDomTree, pCmd -> sStackName, sStackValue) ;
+ }
+
+ }
}
}
else
@@ -516,10 +647,26 @@
if (pCmd)
{
- embperl_CompileToPerlCode (pDomTree, pNode, pCmd -> sPerlCodeEnd) ;
+ if (embperl_CompileToPerlCode (pDomTree, pNode, pCmd -> sPerlCodeEnd, &pCode))
+ {
+ if (pCode)
+ {
+ int l = ArrayGetSize (pCode) ;
+ if (l)
+ StringAdd (&pProg, pCode, l) ;
+ StringAdd (&pProg, "\n", 1) ;
+ }
+ }
if (pCmd -> sPerlCodeEnd && pCmd -> bMayJump)
*bCheckpointPending = 1 ;
+ if (pCmd -> sStackName && pCmd -> sPushStack)
+ {
+ embperl_CompilePopStack (pDomTree, pCmd -> sStackName) ;
+ }
}
+
+ StringFree (&sStackValue) ;
+ StringFree (&pCode) ;
}
/* ------------------------------------------------------------------------ */
@@ -574,15 +721,20 @@
StringNew (&pProg, r -> Buf.pFile -> nFilesize / 4) ;
StringAdd (&pProg, "my $_ep_DomTree = $_[1];\nmy $_ep_EscMask = 5;\n*_ep_rp=\\&XML::Embperl::DOM::Node_replaceChildWithCDATA;\n*_ep_rpurl=\\&XML::Embperl::DOM::Node_replaceChildWithUrlDATA;\n*_ep_cp=\\&XML::Embperl::DOM::DomTree_checkpoint;\n ", 0) ;
-
+
+ pDomTree -> pSV = (SV *)newHV () ;
+
while (xNode)
{
embperl_CompileNode (pDomTree, xNode, &bCheckpointPending) ;
xNode = Node_nextSibling (pDomTree, xNode) ;
}
+
+ SvREFCNT_dec (pDomTree -> pSV) ;
+ pDomTree -> pSV = NULL ;
- StringAdd (&pProg, "", 1) ;
+ StringAdd (&pProg, "", 1) ;
cl3 = clock () ;
1.1.2.21 +45 -0 embperl/Attic/epdom.c
Index: epdom.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epdom.c,v
retrieving revision 1.1.2.20
retrieving revision 1.1.2.21
diff -u -r1.1.2.20 -r1.1.2.21
--- epdom.c 2000/05/29 07:34:30 1.1.2.20
+++ epdom.c 2000/05/29 14:22:08 1.1.2.21
@@ -32,6 +32,7 @@
tIndex xNoName = 0 ;
#define dom_malloc(s) (nMemUsage += s, malloc(s))
+#define dom_free(s) (free(s))
/* ------------------------------------------------------------------------ */
/* */
@@ -64,6 +65,28 @@
/* ------------------------------------------------------------------------ */
/* */
+/* ArrayFree */
+/* */
+/* Create a new dynamic array */
+/* */
+/* ------------------------------------------------------------------------ */
+
+int ArrayFree (/*in*/ const tArray * pArray)
+
+
+ {
+ struct tArrayCtrl * pCtrl = ((struct tArrayCtrl *)(*(void * *)pArray)) - 1 ;
+
+ if (pCtrl)
+ dom_free (pCtrl) ;
+
+ (*(void * *)pArray) = NULL ;
+
+ return ok ;
+ }
+
+/* ------------------------------------------------------------------------ */
+/* */
/* ArrayClone */
/* */
/* Create a new dynamic array as exact copy of old one */
@@ -228,7 +251,24 @@
ArraySetSize (pArray, 0);
}
+/* ------------------------------------------------------------------------ */
+/* */
+/* StringFree */
+/* */
+/* Free String memory */
+/* */
+/* ------------------------------------------------------------------------ */
+
+void StringFree (/*in*/ char * * pArray)
+
+
+ {
+ if ((*(void * *)pArray) != NULL)
+ ArrayFree (pArray) ;
+ }
+
+
/* ------------------------------------------------------------------------ */
/* */
/* StringAdd */
@@ -369,6 +409,7 @@
pDomTree -> xNdx = n ;
pDomTree -> pLookup[0] = NULL ;
+ pDomTree -> pSV = NULL ;
*pNewLookup = pDomTree ;
@@ -397,6 +438,10 @@
ArrayClone (pOrgDomTree, &pDomTree -> pLookup) ;
ArrayNew (&pDomTree -> pOrder, 128, sizeof (tNode)) ;
+ if (pDomTree -> pSV = pOrgDomTree -> pSV)
+ SvREFCNT_inc (pDomTree -> pSV) ;
+
+
*pNewDomTree = pDomTree ;
return n ;
1.1.2.17 +12 -0 embperl/Attic/epdom.h
Index: epdom.h
===================================================================
RCS file: /home/cvs/embperl/Attic/epdom.h,v
retrieving revision 1.1.2.16
retrieving revision 1.1.2.17
diff -u -r1.1.2.16 -r1.1.2.17
--- epdom.h 2000/05/29 07:34:30 1.1.2.16
+++ epdom.h 2000/05/29 14:22:10 1.1.2.17
@@ -142,6 +142,7 @@
tNode * pOrder ; /* Order of dom tree after execution of code */
tIndex xNdx ; /* Index of Dom Tree */
tNode xDocument ; /* root document node */
+ SV * pSV ;
} ;
typedef struct tDomTree tDomTree ;
@@ -169,6 +170,8 @@
/*in*/ int nAdd,
/*in*/ int nElementSize) ;
+int ArrayFree (/*in*/ const tArray * pArray) ;
+
int ArraySet (/*in*/ const tArray * pArray,
/*in*/ int numElements) ;
@@ -176,6 +179,15 @@
/*in*/ int numElements) ;
int ArrayGetSize (/*in*/ const tArray * pArray) ;
+
+void StringNew (/*in*/ char * * pArray,
+ /*in*/ int nAdd) ;
+
+void StringFree (/*in*/ char * * pArray) ;
+
+void StringAdd (/*in*/ char * * pArray,
+ /*in*/ const char * sAdd,
+ /*in*/ int nLen) ;
1.14.2.3 +15 -0 embperl/eputil.c
Index: eputil.c
===================================================================
RCS file: /home/cvs/embperl/eputil.c,v
retrieving revision 1.14.2.2
retrieving revision 1.14.2.3
diff -u -r1.14.2.2 -r1.14.2.3
--- eputil.c 2000/05/23 16:00:51 1.14.2.2
+++ eputil.c 2000/05/29 14:22:10 1.14.2.3
@@ -576,6 +576,21 @@
}
+
+void SetHashValueStr (/*in*/ HV * pHash,
+ /*in*/ const char * sKey,
+ /*in*/ char * sValue)
+
+ {
+ SV * pSV = newSVpv (sValue, 0) ;
+
+ /*EPENTRY (GetHashValueInt) ;*/
+
+ hv_store(pHash, (char *)sKey, strlen (sKey), pSV, 0) ;
+ }
+
+
+
/* ------------------------------------------------------------------------- */
/* */
/* GetLineNo */
1.57.2.13 +4 -4 embperl/test.pl
Index: test.pl
===================================================================
RCS file: /home/cvs/embperl/test.pl,v
retrieving revision 1.57.2.12
retrieving revision 1.57.2.13
diff -u -r1.57.2.12 -r1.57.2.13
--- test.pl 2000/05/24 21:08:18 1.57.2.12
+++ test.pl 2000/05/29 14:22:11 1.57.2.13
@@ -15,15 +15,15 @@
'plain.htm',
## 'plainblock.htm',
## 'plainblock.htm',
- 'error.htm???6',
- 'error.htm???6',
- 'error.htm???6',
+ 'error.htm???8',
+ 'error.htm???8',
+ 'error.htm???8',
## 'unclosed.htm???1',
# 'errorright.htm???1',
'notfound.htm???1',
'notallow.xhtm???1',
## 'noerr/noerrpage.htm???6?2',
- 'errdoc/errdoc.htm???6?262144',
+ 'errdoc/errdoc.htm???8?262144',
## 'rawinput/rawinput.htm????16',
'var.htm',
'varerr.htm???-1',
No revision
No revision
1.1.2.11 +43 -10 embperl/Embperl/Attic/Syntax.pm
Index: Syntax.pm
===================================================================
RCS file: /home/cvs/embperl/Embperl/Attic/Syntax.pm,v
retrieving revision 1.1.2.10
retrieving revision 1.1.2.11
diff -u -r1.1.2.10 -r1.1.2.11
--- Syntax.pm 2000/05/29 07:34:31 1.1.2.10
+++ Syntax.pm 2000/05/29 14:22:35 1.1.2.11
@@ -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.2.10 2000/05/29 07:34:31 richter Exp $
+# $Id: Syntax.pm,v 1.1.2.11 2000/05/29 14:22:35 richter Exp $
#
###################################################################################
@@ -92,7 +92,7 @@
embperl => {
perlcode =>
[
- 'if (!defined (_ep_rp(%$n%,scalar(do{%#~0:$row|$col|$cnt%})))) { last ; }',
+ 'if (!defined (_ep_rp(%$n%,scalar(do{%#~0:$row|$col|$cnt%})))) { last ; } %^*-htmltable%',
'_ep_rp(%$n%,scalar(do{%#0%}));',
],
removenode => 4,
@@ -106,7 +106,7 @@
'procinfo' => {
embperl => {
perlcode => [
- 'if (!defined (scalar (do {%#~0:$row|$col|$cnt%}))) { last ; }',
+ 'if (!defined (scalar (do {%#~0:$row|$col|$cnt%}))) { last ; } %^*-htmltable%',
'{%#0%;}',
],
removenode => 3,
@@ -152,7 +152,7 @@
$CmdsLink{'Embperl output code'}{'nodename'} = '[+url' ;
$CmdsLink{'Embperl output code'}{'procinfo'}{'embperl'}{'perlcode'} =
[
- 'if (!defined (_ep_rpurl(%$n%,scalar(do{%#~0:$row|$col|$cnt%})))) { last ; }',
+ 'if (!defined (_ep_rpurl(%$n%,scalar(do{%#~0:$row|$col|$cnt%})))) { last ; } %^*-htmltable%',
'_ep_rpurl(%$n%,scalar(do{%#0%}));',
] ;
@@ -267,7 +267,7 @@
embperl => {
perlcode =>
[
- 'XML::Embperl::DOM::Node_appendChild (%$n%, HTML::Embperl::Syntax::ntypText, $fdat{\'%#&*name%\'}) ; %#!-0%',
+ 'XML::Embperl::DOM::Node_appendChild (%$n%, HTML::Embperl::Syntax::ntypText, $fdat{\'%&*name%\'}) ; %#!-0%',
'$idat{\'%&*name%\'} = \'%#*0%\' ; ',
]
}
@@ -282,6 +282,14 @@
'text' => 'tr',
'nodetype' => ntypStartTag,
%HtmlTagsStd,
+ 'procinfo' => {
+ embperl => {
+ perlcode => 'for (my $col = 0; $col < $maxcol; $col++) {' ,
+ perlcodeend => '}' ,
+ stackname => 'htmltable',
+ push => '1',
+ }
+ },
},
'/tr' => {
'text' => '/tr',
@@ -292,6 +300,14 @@
'text' => 'table',
'nodetype' => ntypStartTag,
%HtmlTagsStd,
+ 'procinfo' => {
+ embperl => {
+ perlcode => 'for (my $row = 0; $row < $maxrow; $row++) {' ,
+ perlcodeend => '}' ,
+ stackname => 'htmltable',
+ push => '1',
+ }
+ },
},
'/table' => {
'text' => '/table',
@@ -310,21 +326,38 @@
},
'select' => {
'text' => 'select',
+ 'nodetype' => ntypStartTag,
'inside' =>
{
'name' => { 'text' => 'name', 'nodename' => 'name', follow => \%AssignAttr },
+ %Cmds,
},
- 'nodetype' => ntypStartTag,
- %HtmlTagsStd,
+ 'procinfo' => {
+ embperl => {
+ stackname => 'htmlselect',
+ push => '%&*name%',
+ }
+ },
},
'option' => {
'text' => 'option',
+ 'nodetype' => ntypStartTag,
+ %HtmlTagsStd,
'inside' =>
{
- 'value' => { 'text' => 'value', 'nodename' => 'value', follow => \%AssignAttr },
+ 'value' => { 'text' => 'value', 'nodename' => 'value', follow => \%AssignAttr },
+ 'selected' => { 'text' => 'selected', 'nodetype' => ntypAttr, },
+ %Cmds,
},
- 'nodetype' => ntypStartTag,
- %HtmlTagsStd,
+ 'procinfo' => {
+ embperl => {
+ perlcode =>
+ [
+ 'if ($fdat{\'%^*htmlselect%\'} eq \'%&*value%\') { XML::Embperl::DOM::Element_setAttribut (%$n%, \'selected\', undef) } else {XML::Embperl::DOM::Element_removeAttribut (%$n%, \'selected\') }; %&*-value% ',
+ 'if ($fdat{\'%^*htmlselect%\'} eq \'%#*0%\') { XML::Embperl::DOM::Element_setAttribut (%$n%, \'selected\', undef) } else {XML::Embperl::DOM::Element_removeAttribut (%$n%, \'selected\') }; %&*-value% ',
+ ]
+ }
+ },
},
'/option' => {
'text' => '/option',
No revision
No revision
1.5.2.2 +4 -1 embperl/test/cmp/error.htm
Index: error.htm
===================================================================
RCS file: /home/cvs/embperl/test/cmp/error.htm,v
retrieving revision 1.5.2.1
retrieving revision 1.5.2.2
diff -u -r1.5.2.1 -r1.5.2.2
--- error.htm 2000/05/23 07:05:08 1.5.2.1
+++ error.htm 2000/05/29 14:23:14 1.5.2.2
@@ -10,7 +10,10 @@
^<br> syntax error at test/html/error.htm line \d+, at EOF
^<br> syntax error at test/html/error.htm line \d+, near "\$error is here "
^<br> syntax error at test/html/error.htm line \d+, near "}
-^<br> _ep_cp"<p>
+^<br> _ep_cp"
+^<br> syntax error at test/html/error.htm line \d+, near "}
+^<br>
+^<br> }"<p>
^\[.*?\]ERR: 24: Line \d+: Error in Perl code: <p>
^ HTML\:\:Embperl.*?<P>
</BODY></HTML>
No revision
No revision
1.9.2.5 +5 -1 embperl/test/html/input.htm
Index: input.htm
===================================================================
RCS file: /home/cvs/embperl/test/html/input.htm,v
retrieving revision 1.9.2.4
retrieving revision 1.9.2.5
diff -u -r1.9.2.4 -r1.9.2.5
--- input.htm 2000/05/29 07:34:32 1.9.2.4
+++ input.htm 2000/05/29 14:23:43 1.9.2.5
@@ -1,4 +1,8 @@
-<input type="checkbox" value="cbv1" name="cb1" checked >
+ <textarea Name=feld1></textarea>
+ <textarea Name=feld5></textarea>
+
+ <textarea Name=feld1>text1</textarea>
+ <textarea Name=feld5>text5</textarea>
<html>
1.4.2.1 +12 -0 embperl/test/html/table.htm
Index: table.htm
===================================================================
RCS file: /home/cvs/embperl/test/html/table.htm,v
retrieving revision 1.4
retrieving revision 1.4.2.1
diff -u -r1.4 -r1.4.2.1
--- table.htm 1999/11/17 07:29:37 1.4
+++ table.htm 2000/05/29 14:23:44 1.4.2.1
@@ -7,6 +7,17 @@
<table>
<tr>
+ <td>[+ $c[$row] +] </td>
+ </tr>
+</table>
+<table>
+ <tr>
+ <td>[+ $c[$col] +] </td>
+ </tr>
+</table>
+[#
+<table>
+ <tr>
<td>[+ $c[$row][$col] +] </td>
</tr>
</table>
@@ -233,3 +244,4 @@
</body>
</html>
+#]
\ No newline at end of file