richter 01/07/25 00:20:09
Modified: . Tag: Embperl2c epdat.h epparse.c
Embperl/Syntax Tag: Embperl2c RTF.pm
test/cmp Tag: Embperl2c rtfbasic.asc rtfloop.asc
test/html/rtf Tag: Embperl2c rtfbasic.asc
Log:
Embperl 2 - RTF enhancements
Revision Changes Path
No revision
No revision
1.20.4.20 +2 -1 embperl/epdat.h
Index: epdat.h
===================================================================
RCS file: /home/cvs/embperl/epdat.h,v
retrieving revision 1.20.4.19
retrieving revision 1.20.4.20
diff -u -r1.20.4.19 -r1.20.4.20
--- epdat.h 2001/05/29 06:27:37 1.20.4.19
+++ epdat.h 2001/07/25 07:20:09 1.20.4.20
@@ -10,7 +10,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: epdat.h,v 1.20.4.19 2001/05/29 06:27:37 richter Exp $
+# $Id: epdat.h,v 1.20.4.20 2001/07/25 07:20:09 richter Exp $
#
###################################################################################*/
@@ -114,6 +114,7 @@
int bUnescape ; /* translate input? */
int bAddFlags ; /* add flags to node */
int bRemoveSpaces ; /* 1 remove spaces before tag,
2 remove after */
+ int bInsideMustExist ; /* if inside definition
doesn't exists, ignore whole tag */
unsigned char * pContains ; /* chars that could be contained in the string
*/
struct tTokenTable * pFollowedBy;/* table of tokens that can follow this one
*/
struct tTokenTable * pInside ; /* table of tokens that can apear
inside this one */
1.4.2.29 +38 -7 embperl/Attic/epparse.c
Index: epparse.c
===================================================================
RCS file: /home/cvs/embperl/Attic/epparse.c,v
retrieving revision 1.4.2.28
retrieving revision 1.4.2.29
diff -u -r1.4.2.28 -r1.4.2.29
--- epparse.c 2001/07/25 04:03:12 1.4.2.28
+++ epparse.c 2001/07/25 07:20:09 1.4.2.29
@@ -9,7 +9,7 @@
# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
# WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
#
-# $Id: epparse.c,v 1.4.2.28 2001/07/25 04:03:12 richter Exp $
+# $Id: epparse.c,v 1.4.2.29 2001/07/25 07:20:09 richter Exp $
#
###################################################################################*/
@@ -308,6 +308,7 @@
p -> nCDataType = GetHashValueInt (pHash, "cdatatype", ntypCDATA) ;
p -> nForceType = GetHashValueInt (pHash, "forcetype", 0) ;
p -> bRemoveSpaces = GetHashValueInt (pHash, "removespaces", p ->
nNodeType != ntypCDATA?2:0) ;
+ p -> bInsideMustExist = GetHashValueInt (pHash, "insidemustexist", 0) ;
p -> pStartTag = (struct tToken *)GetHashValueStrDup (pHash, "starttag",
NULL) ;
p -> pEndTag = (struct tToken *)GetHashValueStrDup (pHash, "endtag",
NULL) ;
p -> sParseTimePerlCode = GetHashValueStrDup (pHash, "parsetimeperlcode",
NULL) ;
@@ -530,6 +531,7 @@
enum tNodeType nCDataType,
enum tNodeType nForceType,
int bUnescape,
+ int bInsideMustExist,
const char * pParentNodeName,
tNode xParentNode,
int level,
@@ -741,6 +743,8 @@
}
if (pToken -> bAddFlags)
Node_self (pDomTree, xNewNode) -> bFlags |= pToken ->
bAddFlags ;
+ if (!pToken -> pInside)
+ bInsideMustExist = 0 ;
}
else
{
@@ -749,17 +753,44 @@
if (pInside = pToken -> pInside)
{ /* parse for further tokens inside of this token */
- ParseTokens (r, &pCurr, pEnd, pInside,
+ rc = ParseTokens (r, &pCurr, pEnd, pInside,
pToken -> sEndText,
pToken -> pContains,
pToken -> nCDataType == ntypCDATA &&
!pToken -> sNodeName?ntypAttrValue:pToken -> nCDataType,
0,
pToken -> bUnescape,
+ pToken -> bInsideMustExist +
bInsideMustExist,
pNodeName,
xNewNode,
level+1,
pToken -> nNodeType ==
ntypCDATA?pCurrTokenStart:NULL,
sEndText && *sEndText?sEndText:NULL) ;
+ if (rc == ok)
+ bInsideMustExist = 0 ;
+ else if (pToken -> bInsideMustExist && rc == rcNotFound)
+ {
+ rc = ok ;
+ /*
+ pToken = NULL ;
+ bFollow = 0 ;
+ sEndText = NULL ;
+ nEndText = 0 ;
+ pCurr = pCurrTokenStart ;
+ */
+ if (xNewNode != xParentNode)
+ {
+ Node_removeChild (pDomTree, xParentNode, xNewNode) ;
+ if (r -> bDebug & dbgParse)
+ lprintf (pCurrReq, "[%d]PARSE: DelNode: +%02d %*s
parent=%d node=%d\n",
+ pCurrReq -> nPid, level, level * 2, "",
xParentNode, xNewNode) ;
+ }
+
+ /* add as cdata*/
+ if (!(xNewNode = Node_appendChild (pDomTree, ntypCDATA, 0,
pCurrStart, pCurr - pCurrStart, xParentNode, level, GetLineNoOf (r, pCurrStart))))
+ return 1 ;
+ }
+ else if (rc != rcNotFound)
+ return rc ;
}
else
{ /* nothing more inside of this token allowed, so search for
the end of the token */
@@ -846,7 +877,7 @@
return 1 ;
}
*ppCurr = pCurr ;
- return 0 ;
+ return bInsideMustExist?rcNotFound:ok ;
}
else if (sEndText == NULL ||
(*pCurr == *sEndText && strncmp (pCurr, sEndText, nEndText) == 0))
@@ -859,18 +890,18 @@
if (!pCDATAStart && !sStopText)
pCurr += nEndText ;
*ppCurr = pCurr ;
- return 0 ;
+ return bInsideMustExist?rcNotFound:ok ;
}
else if (!pToken && bFollow < 2)
pCurr++ ;
}
- if (nCDataType)
+ if (nCDataType && pCurr - pCurrStart)
if (!(xNewNode = Node_appendChild (pDomTree, nCDataType, 0,pCurrStart, pCurr
- pCurrStart, xParentNode, level, GetLineNoOf (r, pCurrStart))))
return 1 ;
*ppCurr = pCurr ;
- return 0 ;
+ return bInsideMustExist?rcNotFound:ok ;
}
@@ -920,7 +951,7 @@
pTokenTableSave = r -> pTokenTable ;
- if ((rc = ParseTokens (r, &pStart, pEnd, r -> pTokenTable, "", NULL, ntypCDATA,
0, 0, "root", xDocNode, 0, NULL, NULL)) != ok)
+ if ((rc = ParseTokens (r, &pStart, pEnd, r -> pTokenTable, "", NULL, ntypCDATA,
0, 0, 0, "root", xDocNode, 0, NULL, NULL)) != ok)
return rc ;
/* Add one child node end the end to catch loops that end at the very last node
*/
No revision
No revision
1.1.2.11 +7 -13 embperl/Embperl/Syntax/Attic/RTF.pm
Index: RTF.pm
===================================================================
RCS file: /home/cvs/embperl/Embperl/Syntax/Attic/RTF.pm,v
retrieving revision 1.1.2.10
retrieving revision 1.1.2.11
diff -u -r1.1.2.10 -r1.1.2.11
--- RTF.pm 2001/05/16 14:04:44 1.1.2.10
+++ RTF.pm 2001/07/25 07:20:09 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: RTF.pm,v 1.1.2.10 2001/05/16 14:04:44 richter Exp $
+# $Id: RTF.pm,v 1.1.2.11 2001/07/25 07:20:09 richter Exp $
#
###################################################################################
@@ -56,6 +56,7 @@
#$self -> {-rtfCmds} = $self -> {-rtfBlocks}{'RTF field'}{'follow'}{'RTF
fieldstart'}{'follow'}{'RTF block cmd'}{'follow'} ;
$self -> {-rtfCmds} = $self -> {-rtfBlocks}{'RTF first
paragraph'}{'inside'}{'RTF field'}{'inside'}{'RTF fieldstart'}{'inside'}{'RTF block
cmd'}{'inside'} ;
+ $self -> {-rtfCmds2} = $self -> {-rtfBlocks}{'RTF first
paragraph'}{'inside'}{'RTF field'}{'inside'}{'RTF fieldstart'}{'inside'} ;
Init ($self) ;
}
@@ -86,7 +87,8 @@
(ref($taginfo) eq 'HASH'?%$taginfo:()),
} ;
$tag -> {'procinfo'} = { $self -> {-procinfotype} => $procinfo } if ($procinfo)
;
-
+ $self -> {-rtfCmds2} -> {$cmdname} = $tag ;
+
return $tag ;
}
@@ -415,22 +417,13 @@
'end' => '}',
'nodename' => ':{:}:',
'cdatatype' => ntypAttrValue,
+ 'insidemustexist' => 1,
'inside' => \%FieldStart,
},
) ;
# Basic definition of Block in a RTF file
-my %Blockx = (
- '-lsearch' => 1,
- 'RTF field' => {
- 'text' => '{\field',
- 'end' => '}',
- 'nodename' => ':{:}:',
- 'cdatatype' => ntypAttrValue,
- 'inside' => \%FieldStart,
- },
- ) ;
%Block = (
'-lsearch' => 1,
@@ -447,7 +440,8 @@
'end' => '}',
'nodename' => ':{:}:',
'cdatatype' => ntypAttrValue,
- 'inside' => \%FieldStart,
+ 'insidemustexist' => 1,
+ 'inside' => \%FieldStart,
},
'RTF escape open' => {
'text' => '\\{',
No revision
No revision
1.1.2.3 +13 -1 embperl/test/cmp/Attic/rtfbasic.asc
Index: rtfbasic.asc
===================================================================
RCS file: /home/cvs/embperl/test/cmp/Attic/rtfbasic.asc,v
retrieving revision 1.1.2.2
retrieving revision 1.1.2.3
diff -u -r1.1.2.2 -r1.1.2.3
--- rtfbasic.asc 2001/05/16 14:04:49 1.1.2.2
+++ rtfbasic.asc 2001/07/25 07:20:09 1.1.2.3
@@ -8,8 +8,20 @@
{hash.c.2: }{1111}
{hash.c.3: }{2222}
-{\b\f1\fs80\lang1024 1}
+{1.1} {\b\f1\fs80\lang1024 1}
+{1.2} {\b\f1\fs80\lang1024 1}
+{1.3} {1}
+{1.4} {1}
+{1.5} {1}
+{1.6} {1}
+{1.7} {1}
+{2.1} {1}
+{2.2} {1}
+{2.3} {1}
{���}
{open \{ close \} end}
+
+
+{pass this thru: }{\field{\*\fldinst { PAGE \\* MERGEFORMAT }}{\fldrslt
{\lang1024\langfe1024\noproof 1}}}
1.1.2.2 +2 -2 embperl/test/cmp/Attic/rtfloop.asc
Index: rtfloop.asc
===================================================================
RCS file: /home/cvs/embperl/test/cmp/Attic/rtfloop.asc,v
retrieving revision 1.1.2.1
retrieving revision 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- rtfloop.asc 2001/05/08 12:56:22 1.1.2.1
+++ rtfloop.asc 2001/07/25 07:20:09 1.1.2.2
@@ -18,7 +18,7 @@
\jcompress\viewkind1\viewscale50\pgbrdrhead\pgbrdrfoot\nolnhtadjtbl \fet0\sectd
\psz9\linex0\headery709\footery284\colsx709\endnhere\sectdefaultcl
{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
\pnucltr\pnstart1\pnindent720\pnhang{\pntxta
.}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta
.}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta
)}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta
)}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta
)}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta
)}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
-{\pntxtb (}{\pntxta )}}\pard\plain \qc
\li0\ri0\widctlpar\faauto\adjustright\rin0\lin0\itap0
\fs20\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 {- }{PAGE \\* MERGEFORMAT }{-
+{\pntxtb (}{\pntxta )}}\pard\plain \qc
\li0\ri0\widctlpar\faauto\adjustright\rin0\lin0\itap0
\fs20\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 {- }{\field{\*\fldinst { PAGE
\\* MERGEFORMAT }}{\fldrslt {\lang1024\langfe1024\noproof 1}}}{-
\par }{\expnd23\expndtw116
\par }\pard\plain \s17\qc \li0\ri0\widctlpar\faauto\adjustright\rin0\lin0\itap0
\b\f121\fs44\lang1031\langfe1031\cgrid\langnp1031\langfenp1031
{\f120\fs48\expnd23\expndtw116 Teilnehmerliste
\par
@@ -67,7 +67,7 @@
\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10
\clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2693
\cellx5103\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10
\clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10
\cltxlrtb\clftsWidth3\clwWidth4111 \cellx9214\row }\pard \ql
\li0\ri0\widctlpar\faauto\adjustright\rin0\lin0\itap0 {\f120
\par
-\par }\plain \qc \li0\ri0\widctlpar\faauto\adjustright\rin0\lin0\itap0
\fs20\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 {- }{PAGE \\* MERGEFORMAT }{-
+\par }\plain \qc \li0\ri0\widctlpar\faauto\adjustright\rin0\lin0\itap0
\fs20\lang1031\langfe1031\cgrid\langnp1031\langfenp1031 {- }{\field{\*\fldinst { PAGE
\\* MERGEFORMAT }}{\fldrslt {\lang1024\langfe1024\noproof 1}}}{-
\par }{\expnd23\expndtw116
\par }\pard\plain \s17\qc \li0\ri0\widctlpar\faauto\adjustright\rin0\lin0\itap0
\b\f121\fs44\lang1031\langfe1031\cgrid\langnp1031\langfenp1031
{\f120\fs48\expnd23\expndtw116 Teilnehmerliste
\par
No revision
No revision
1.1.2.7 +13 -1 embperl/test/html/rtf/Attic/rtfbasic.asc
Index: rtfbasic.asc
===================================================================
RCS file: /home/cvs/embperl/test/html/rtf/Attic/rtfbasic.asc,v
retrieving revision 1.1.2.6
retrieving revision 1.1.2.7
diff -u -r1.1.2.6 -r1.1.2.7
--- rtfbasic.asc 2001/05/16 14:04:57 1.1.2.6
+++ rtfbasic.asc 2001/07/25 07:20:09 1.1.2.7
@@ -8,7 +8,19 @@
{hash.c.2: }{\field{\*\fldinst { MERGEFIELD hash.c.0 \\* MERGEFORMAT }}{\fldrslt }}
{hash.c.3: }{\field{\*\fldinst { MERGEFIELD hash.c.1 }}{\fldrslt }}
-{\field{\*\fldinst {\b\f1\fs80\lang1024 MERGEFIELD one }}{\fldrslt
{\b\f1\fs80\lang1024 ----}}}
+{1.1} {\field{\*\fldinst {\b\f1\fs80\lang1024 MERGEFIELD one }}{\fldrslt
{\b\f1\fs80\lang1024 ----}}}
+{1.2} {\field{\*\fldinst { \b\f1\fs80\lang1024 MERGEFIELD one}}{\fldrslt
{\b\f1\fs80\lang1024 ----}}}
+{1.3} {\field{\*\fldinst {MERGEFIELD one}}{\fldrslt {\b\f1\fs80\lang1024 ----}}}
+{1.4} {\field{\*\fldinst { MERGEFIELD one}}{\fldrslt {\b\f1\fs80\lang1024 ----}}}
+{1.5} {\field{\*\fldinst { MERGEFIELD one }}{\fldrslt {\b\f1\fs80\lang1024 ----}}}
+{1.6} {\field{\*\fldinst {MERGEFIELD one }}{\fldrslt {\b\f1\fs80\lang1024 ----}}}
+{1.7} {\field{\*\fldinst {MERGEFIELD one }} {\fldrslt {\b\f1\fs80\lang1024
----}}}
+{2.1} {\field{\*\fldinst MERGEFIELD one}{\fldrslt one}}
+{2.2} {\field{\*\fldinst MERGEFIELD one}{\fldrslt one}}
+{2.3} {\field{\*\fldinst MERGEFIELD one }{\fldrslt one}}
{\field{\*\fldinst {MERGEFIELD uml }}{\fldrslt {\b\f1\fs80\lang1024 ----}}}
{\field{\*\fldinst {MERGEFIELD brace }}{\fldrslt {\b\f1\fs80\lang1024 ----}}}
+
+
+{pass this thru: }{\field{\*\fldinst { PAGE \\* MERGEFORMAT }}{\fldrslt
{\lang1024\langfe1024\noproof 1}}}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]