commit
3708d429bc
|
@ -631,6 +631,9 @@ TIDY_EXPORT Bool TIDY_CALL tidyInitSink( TidyOutputSink* sink,
|
||||||
TIDY_EXPORT void TIDY_CALL tidyPutByte( TidyOutputSink* sink, uint byteValue );
|
TIDY_EXPORT void TIDY_CALL tidyPutByte( TidyOutputSink* sink, uint byteValue );
|
||||||
|
|
||||||
|
|
||||||
|
/****************
|
||||||
|
Errors
|
||||||
|
****************/
|
||||||
/** Callback to filter messages by diagnostic level:
|
/** Callback to filter messages by diagnostic level:
|
||||||
** info, warning, etc. Just set diagnostic output
|
** info, warning, etc. Just set diagnostic output
|
||||||
** handler to redirect all diagnostics output. Return true
|
** handler to redirect all diagnostics output. Return true
|
||||||
|
@ -656,6 +659,18 @@ TIDY_EXPORT int TIDY_CALL tidySetErrorBuffer( TidyDoc tdoc, TidyBuffer* errb
|
||||||
/** Set error sink to given generic sink */
|
/** Set error sink to given generic sink */
|
||||||
TIDY_EXPORT int TIDY_CALL tidySetErrorSink( TidyDoc tdoc, TidyOutputSink* sink );
|
TIDY_EXPORT int TIDY_CALL tidySetErrorSink( TidyDoc tdoc, TidyOutputSink* sink );
|
||||||
|
|
||||||
|
|
||||||
|
/****************
|
||||||
|
Printing
|
||||||
|
****************/
|
||||||
|
/** Callback to track the progress of the pretting printing process.
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
typedef void (TIDY_CALL *TidyPPProgress)( TidyDoc tdoc, uint line, uint col, uint destLine );
|
||||||
|
|
||||||
|
TIDY_EXPORT Bool TIDY_CALL tidySetPrettyPrinterCallback( TidyDoc tdoc,
|
||||||
|
TidyPPProgress callback );
|
||||||
|
|
||||||
/** @} end IO group */
|
/** @} end IO group */
|
||||||
|
|
||||||
/* TODO: Catalog all messages for easy translation
|
/* TODO: Catalog all messages for easy translation
|
||||||
|
|
19
src/pprint.c
19
src/pprint.c
|
@ -312,6 +312,7 @@ void TY_(InitPrintBuf)( TidyDocImpl* doc )
|
||||||
InitIndent( &doc->pprint.indent[0] );
|
InitIndent( &doc->pprint.indent[0] );
|
||||||
InitIndent( &doc->pprint.indent[1] );
|
InitIndent( &doc->pprint.indent[1] );
|
||||||
doc->pprint.allocator = doc->allocator;
|
doc->pprint.allocator = doc->allocator;
|
||||||
|
doc->pprint.line = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TY_(FreePrintBuf)( TidyDocImpl* doc )
|
void TY_(FreePrintBuf)( TidyDocImpl* doc )
|
||||||
|
@ -613,6 +614,7 @@ static void WrapLine( TidyDocImpl* doc )
|
||||||
TY_(WriteChar)( '\\', doc->docOut );
|
TY_(WriteChar)( '\\', doc->docOut );
|
||||||
|
|
||||||
TY_(WriteChar)( '\n', doc->docOut );
|
TY_(WriteChar)( '\n', doc->docOut );
|
||||||
|
pprint->line++;
|
||||||
ResetLineAfterWrap( pprint );
|
ResetLineAfterWrap( pprint );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -666,6 +668,7 @@ static void WrapAttrVal( TidyDocImpl* doc )
|
||||||
TY_(WriteChar)( ' ', doc->docOut );
|
TY_(WriteChar)( ' ', doc->docOut );
|
||||||
|
|
||||||
TY_(WriteChar)( '\n', doc->docOut );
|
TY_(WriteChar)( '\n', doc->docOut );
|
||||||
|
pprint->line++;
|
||||||
ResetLineAfterWrap( pprint );
|
ResetLineAfterWrap( pprint );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -686,7 +689,7 @@ static void PFlushLineImpl( TidyDocImpl* doc )
|
||||||
|
|
||||||
for ( i = 0; i < pprint->linelen; ++i )
|
for ( i = 0; i < pprint->linelen; ++i )
|
||||||
TY_(WriteChar)( pprint->linebuf[i], doc->docOut );
|
TY_(WriteChar)( pprint->linebuf[i], doc->docOut );
|
||||||
|
|
||||||
if ( IsInString(pprint) )
|
if ( IsInString(pprint) )
|
||||||
TY_(WriteChar)( '\\', doc->docOut );
|
TY_(WriteChar)( '\\', doc->docOut );
|
||||||
ResetLine( pprint );
|
ResetLine( pprint );
|
||||||
|
@ -701,6 +704,7 @@ void TY_(PFlushLine)( TidyDocImpl* doc, uint indent )
|
||||||
PFlushLineImpl( doc );
|
PFlushLineImpl( doc );
|
||||||
|
|
||||||
TY_(WriteChar)( '\n', doc->docOut );
|
TY_(WriteChar)( '\n', doc->docOut );
|
||||||
|
pprint->line++;
|
||||||
pprint->indent[ 0 ].spaces = indent;
|
pprint->indent[ 0 ].spaces = indent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -713,6 +717,7 @@ static void PCondFlushLine( TidyDocImpl* doc, uint indent )
|
||||||
PFlushLineImpl( doc );
|
PFlushLineImpl( doc );
|
||||||
|
|
||||||
TY_(WriteChar)( '\n', doc->docOut );
|
TY_(WriteChar)( '\n', doc->docOut );
|
||||||
|
pprint->line++;
|
||||||
pprint->indent[ 0 ].spaces = indent;
|
pprint->indent[ 0 ].spaces = indent;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -733,6 +738,7 @@ void TY_(PFlushLineSmart)( TidyDocImpl* doc, uint indent )
|
||||||
/* Issue #228 - cfgBool( doc, TidyVertSpace ); */
|
/* Issue #228 - cfgBool( doc, TidyVertSpace ); */
|
||||||
if(TidyAddVS) {
|
if(TidyAddVS) {
|
||||||
TY_(WriteChar)( '\n', doc->docOut );
|
TY_(WriteChar)( '\n', doc->docOut );
|
||||||
|
pprint->line++;
|
||||||
}
|
}
|
||||||
|
|
||||||
pprint->indent[ 0 ].spaces = indent;
|
pprint->indent[ 0 ].spaces = indent;
|
||||||
|
@ -749,6 +755,7 @@ static void PCondFlushLineSmart( TidyDocImpl* doc, uint indent )
|
||||||
/* Issue #228 - cfgBool( doc, TidyVertSpace ); */
|
/* Issue #228 - cfgBool( doc, TidyVertSpace ); */
|
||||||
if(TidyAddVS) {
|
if(TidyAddVS) {
|
||||||
TY_(WriteChar)( '\n', doc->docOut );
|
TY_(WriteChar)( '\n', doc->docOut );
|
||||||
|
pprint->line++;
|
||||||
}
|
}
|
||||||
|
|
||||||
pprint->indent[ 0 ].spaces = indent;
|
pprint->indent[ 0 ].spaces = indent;
|
||||||
|
@ -2115,6 +2122,11 @@ void TY_(PPrintTree)( TidyDocImpl* doc, uint mode, uint indent, Node *node )
|
||||||
if ( node == NULL )
|
if ( node == NULL )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (doc->progressCallback)
|
||||||
|
{
|
||||||
|
doc->progressCallback( tidyImplToDoc(doc), node->line, node->column, doc->pprint.line + 1 );
|
||||||
|
}
|
||||||
|
|
||||||
if (node->type == TextNode)
|
if (node->type == TextNode)
|
||||||
{
|
{
|
||||||
PPrintText( doc, mode, indent, node );
|
PPrintText( doc, mode, indent, node );
|
||||||
|
@ -2379,6 +2391,11 @@ void TY_(PPrintXMLTree)( TidyDocImpl* doc, uint mode, uint indent, Node *node )
|
||||||
if (node == NULL)
|
if (node == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (doc->progressCallback)
|
||||||
|
{
|
||||||
|
doc->progressCallback( tidyImplToDoc(doc), node->line, node->column, doc->pprint.line + 1 );
|
||||||
|
}
|
||||||
|
|
||||||
if ( node->type == TextNode)
|
if ( node->type == TextNode)
|
||||||
{
|
{
|
||||||
PPrintText( doc, mode, indent, node );
|
PPrintText( doc, mode, indent, node );
|
||||||
|
|
|
@ -53,6 +53,7 @@ typedef struct _TidyPrintImpl
|
||||||
uint lbufsize;
|
uint lbufsize;
|
||||||
uint linelen;
|
uint linelen;
|
||||||
uint wraphere;
|
uint wraphere;
|
||||||
|
uint line;
|
||||||
|
|
||||||
uint ixInd;
|
uint ixInd;
|
||||||
TidyIndent indent[2]; /* Two lines worth of indent state */
|
TidyIndent indent[2]; /* Two lines worth of indent state */
|
||||||
|
|
|
@ -59,6 +59,7 @@ struct _TidyDocImpl
|
||||||
TidyReportFilter mssgFilt;
|
TidyReportFilter mssgFilt;
|
||||||
TidyReportFilter2 mssgFilt2;
|
TidyReportFilter2 mssgFilt2;
|
||||||
TidyOptCallback pOptCallback;
|
TidyOptCallback pOptCallback;
|
||||||
|
TidyPPProgress progressCallback;
|
||||||
|
|
||||||
/* Parse + Repair Results */
|
/* Parse + Repair Results */
|
||||||
uint optionErrors;
|
uint optionErrors;
|
||||||
|
|
|
@ -752,6 +752,19 @@ int TIDY_CALL tidySetErrorSink( TidyDoc tdoc, TidyOutputSink* sink )
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Use TidyPPProgress to monitor the progress of the pretty printer.
|
||||||
|
*/
|
||||||
|
Bool TIDY_CALL tidySetPrettyPrinterCallback(TidyDoc tdoc, TidyPPProgress callback)
|
||||||
|
{
|
||||||
|
TidyDocImpl* impl = tidyDocToImpl( tdoc );
|
||||||
|
if ( impl )
|
||||||
|
{
|
||||||
|
impl->progressCallback = callback;
|
||||||
|
return yes;
|
||||||
|
}
|
||||||
|
return no;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Document info */
|
/* Document info */
|
||||||
int TIDY_CALL tidyStatus( TidyDoc tdoc )
|
int TIDY_CALL tidyStatus( TidyDoc tdoc )
|
||||||
|
|
Loading…
Reference in a new issue