Centralize control of message output to the messageOut() method in order to:

- Prevent the message filter from missing possible messages due to dispered
    control.
  - Single decision point for the types of messages to be output given current
    conditions and options settings.
This commit is contained in:
Jim Derry 2017-10-05 15:04:22 -04:00
parent 4c74b14991
commit fa30773938
6 changed files with 55 additions and 43 deletions

View file

@ -2480,19 +2480,18 @@ int main( int argc, char** argv )
if ( argc <= 1 ) if ( argc <= 1 )
break; break;
} /* read command line loop */ } /* read command line loop */
/* blank line for screen formatting */
if (!tidyOptGetBool(tdoc, TidyQuiet) && if ( errout == stderr && !contentErrors && !tidyOptGetBool( tdoc, TidyQuiet ) )
errout == stderr && !contentErrors)
fprintf(errout, "\n"); fprintf(errout, "\n");
if (contentErrors + contentWarnings > 0 && /* footnote printing only if errors or warnings */
!tidyOptGetBool(tdoc, TidyQuiet)) if ( contentErrors + contentWarnings > 0 )
tidyErrorSummary(tdoc); tidyErrorSummary(tdoc);
if (!tidyOptGetBool(tdoc, TidyQuiet)) /* prints the general info, if applicable */
tidyGeneralInfo(tdoc); tidyGeneralInfo(tdoc);
/* called to free hash tables etc. */ /* called to free hash tables etc. */
tidyRelease( tdoc ); tidyRelease( tdoc );

View file

@ -1812,7 +1812,7 @@ static languageDefinition language_en = { whichPluralForm_en, {
{ STRING_CONTENT_LOOKS, 0, "Document content looks like %s" }, { STRING_CONTENT_LOOKS, 0, "Document content looks like %s" },
{ STRING_DOCTYPE_GIVEN, 0, "Doctype given is \"%s\"" }, { STRING_DOCTYPE_GIVEN, 0, "Doctype given is \"%s\"" },
{/* The strings "Tidy" and "HTML Tidy" are the program name and must not be translated. */ {/* The strings "Tidy" and "HTML Tidy" are the program name and must not be translated. */
STRING_ERROR_COUNT, 0, "Tidy found %u %s and %u %s!" STRING_ERROR_COUNT, 0, "Tidy found %u %s and %u %s!\n"
}, },
{/* This console output should be limited to 78 characters per line. {/* This console output should be limited to 78 characters per line.
- The strings "Tidy" and "HTML Tidy" are the program name and must not be translated. */ - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated. */
@ -1820,9 +1820,9 @@ static languageDefinition language_en = { whichPluralForm_en, {
"This document has errors that must be fixed before\n" "This document has errors that must be fixed before\n"
"using HTML Tidy to generate a tidied up version.\n" "using HTML Tidy to generate a tidied up version.\n"
}, },
{ STRING_NO_ERRORS, 0, "No warnings or errors were found." }, { STRING_NO_ERRORS, 0, "No warnings or errors were found.\n" },
{ STRING_NO_SYSID, 0, "No system identifier in emitted doctype" }, { STRING_NO_SYSID, 0, "No system identifier in emitted doctype" },
{ STRING_NOT_ALL_SHOWN, 0, "Tidy found %u %s and %u %s! Not all warnings/errors were shown." }, { STRING_NOT_ALL_SHOWN, 0, "Tidy found %u %s and %u %s! Not all warnings/errors were shown.\n" },
{/* This console output should be limited to 78 characters per line. {/* This console output should be limited to 78 characters per line.
- The strings "Tidy" and "HTML Tidy" are the program name and must not be translated. */ - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated. */
TEXT_GENERAL_INFO, 0, TEXT_GENERAL_INFO, 0,

View file

@ -1,4 +1,4 @@
#ifndef language_fr_h #ifndef language_fr_h
#define language_fr_h #define language_fr_h
/* /*
* language_fr.h * language_fr.h
@ -742,14 +742,14 @@ static languageDefinition language_fr = { whichPluralForm_fr, {
}, },
{ STRING_CONTENT_LOOKS, 0, "Le contenu du document ressemble à %s" }, { STRING_CONTENT_LOOKS, 0, "Le contenu du document ressemble à %s" },
{ STRING_DOCTYPE_GIVEN, 0, "DOCTYPE donnée est «%s»" }, { STRING_DOCTYPE_GIVEN, 0, "DOCTYPE donnée est «%s»" },
{ STRING_ERROR_COUNT, 0, "Tidy a trouvé %u %s et %u %s!" }, { STRING_ERROR_COUNT, 0, "Tidy a trouvé %u %s et %u %s!\n" },
{ STRING_NEEDS_INTERVENTION, 0, { STRING_NEEDS_INTERVENTION, 0,
"Ce document contient des erreurs qui doivent d'abord être résolues\n" "Ce document contient des erreurs qui doivent d'abord être résolues\n"
"en utilisant HTML Tidy pour produire une version nettoyée.\n" "en utilisant HTML Tidy pour produire une version nettoyée.\n"
}, },
{ STRING_NO_ERRORS, 0, "Aucun avertissement ou erreur trouvée." }, { STRING_NO_ERRORS, 0, "Aucun avertissement ou erreur trouvée.\n" },
{ STRING_NO_SYSID, 0, "Aucun identifiant système dans le doctype soumis" }, { STRING_NO_SYSID, 0, "Aucun identifiant système dans le doctype soumis" },
{ STRING_NOT_ALL_SHOWN, 0, "Tidy a trouvé %u %s et %u %s! Tous les avertissements et erreurs n'ont pas été affichés." }, { STRING_NOT_ALL_SHOWN, 0, "Tidy a trouvé %u %s et %u %s! Tous les avertissements et erreurs n'ont pas été affichés.\n" },
{ TEXT_GENERAL_INFO, 0, { TEXT_GENERAL_INFO, 0,
"À propos de HTML Tidy: https://github.com/htacg/tidy-html5\n" "À propos de HTML Tidy: https://github.com/htacg/tidy-html5\n"
"Rapports de bugs et commentaires: https://github.com/htacg/tidy-html5/issues\n" "Rapports de bugs et commentaires: https://github.com/htacg/tidy-html5/issues\n"

View file

@ -1,4 +1,4 @@
#ifndef language_pt_br_h #ifndef language_pt_br_h
#define language_pt_br_h #define language_pt_br_h
/* /*
* language_pt_br.h * language_pt_br.h
@ -837,14 +837,14 @@ static languageDefinition language_pt_br = { whichPluralForm_pt_br, {
{ TEXT_USING_BODY, 0, "É recomendável usar CSS para especificar cores de página e link" }, { TEXT_USING_BODY, 0, "É recomendável usar CSS para especificar cores de página e link" },
{ STRING_CONTENT_LOOKS, 0, "O conteúdo do documento se parece com %s" }, { STRING_CONTENT_LOOKS, 0, "O conteúdo do documento se parece com %s" },
{ STRING_DOCTYPE_GIVEN, 0, "Doctype dado é \"%s\"" }, { STRING_DOCTYPE_GIVEN, 0, "Doctype dado é \"%s\"" },
{ STRING_ERROR_COUNT, 0, "Tidy encontrou %u %s e %u %s!" }, { STRING_ERROR_COUNT, 0, "Tidy encontrou %u %s e %u %s!\n" },
{ STRING_NEEDS_INTERVENTION, 0, { STRING_NEEDS_INTERVENTION, 0,
"Esse documento possui erros que devem ser corrigidos\n" "Esse documento possui erros que devem ser corrigidos\n"
"antes de usar HTML Tidy para gerar uma versão arrumada.\n" "antes de usar HTML Tidy para gerar uma versão arrumada.\n"
}, },
{ STRING_NO_ERRORS, 0, "Nenhum aviso ou erro foi localizado." }, { STRING_NO_ERRORS, 0, "Nenhum aviso ou erro foi localizado.\n" },
{ STRING_NO_SYSID, 0, "Nenhum identificado de sistema no doctype emitido" }, { STRING_NO_SYSID, 0, "Nenhum identificado de sistema no doctype emitido" },
{ STRING_NOT_ALL_SHOWN, 0, "Tidy encontrou %u %s e %u %s! Nem todos avisos/erros foram mostrados." }, { STRING_NOT_ALL_SHOWN, 0, "Tidy encontrou %u %s e %u %s! Nem todos avisos/erros foram mostrados.\n" },
{ TEXT_GENERAL_INFO, 0, { TEXT_GENERAL_INFO, 0,
"Sobre o HTML Tidy: https://github.com/htacg/tidy-html5\n" "Sobre o HTML Tidy: https://github.com/htacg/tidy-html5\n"
"Relatórios de erro e comentários: https://github.com/htacg/tidy-html5/" "Relatórios de erro e comentários: https://github.com/htacg/tidy-html5/"

View file

@ -159,16 +159,22 @@ static void messageOut( TidyMessageImpl *message )
go = go & ( doc->errors < cfg(doc, TidyShowErrors) ); go = go & ( doc->errors < cfg(doc, TidyShowErrors) );
} }
// /* Suppress TidyInfo on Reports if applicable. */ /* Check for conditions to suppress TidyInfo. */
// if ( message->level == TidyInfo ) if ( message->level == TidyInfo )
// {
// go = go & (cfgBool(doc, TidyShowInfo) == yes);
// }
/* If suppressing TidyInfo/TidyDialogueInfo on Reports, suppress them. */
if ( message->level == TidyInfo || message->level == TidyDialogueInfo )
{ {
go = go & (cfgBool(doc, TidyShowInfo) == yes); go = go & (cfgBool(doc, TidyShowInfo) == yes);
/* Temporary; we currently let TidyQuiet hide these: */
switch ( message->code )
{
case STRING_DOCTYPE_GIVEN:
case STRING_CONTENT_LOOKS:
case STRING_NO_SYSID:
go = go && !cfgBool(doc, TidyQuiet);
break;
default:
break;
}
} }
/* Suppress TidyWarning on Reports if applicable. */ /* Suppress TidyWarning on Reports if applicable. */
@ -177,6 +183,23 @@ static void messageOut( TidyMessageImpl *message )
go = go & (cfgBool(doc, TidyShowWarnings) == yes); go = go & (cfgBool(doc, TidyShowWarnings) == yes);
} }
/* Check for conditions to suppress TidyDialogueInfo */
if ( message->level == TidyDialogueInfo )
{
/* Temporary; TidyShowInfo shouldn't affect TidyDialogueInfo, but
right now such messages are hidden until we granularize the
output controls. */
go = go & (cfgBool(doc, TidyShowInfo) == yes);
go = go | (cfgBool(doc, TidyQuiet) == yes);
}
/* Check for conditions to suppress TidyDialogueSummary */
/* Temporary; TidyQuiet shouldn't hide this type of message. */
if ( message->level == TidyDialogueSummary && message->code != STRING_NEEDS_INTERVENTION )
{
go = go & !cfgBool(doc, TidyQuiet);
}
/* If we're TidyQuiet and handling any type of dialogue above summaries, /* If we're TidyQuiet and handling any type of dialogue above summaries,
then suppress. */ then suppress. */
if ( message->level > TidyDialogueSummary ) if ( message->level > TidyDialogueSummary )
@ -1225,7 +1248,6 @@ void TY_(ErrorSummary)( TidyDocImpl* doc )
if (doc->footnotes & FN_TRIM_EMPTY_ELEMENT) if (doc->footnotes & FN_TRIM_EMPTY_ELEMENT)
TY_(Dialogue)( doc, FOOTNOTE_TRIM_EMPTY_ELEMENT ); TY_(Dialogue)( doc, FOOTNOTE_TRIM_EMPTY_ELEMENT );
} }
} }
@ -1277,8 +1299,6 @@ void TY_(ReportNumWarnings)( TidyDocImpl* doc )
{ {
TY_(Dialogue)( doc, STRING_NO_ERRORS ); TY_(Dialogue)( doc, STRING_NO_ERRORS );
} }
TY_(WriteChar)( '\n', doc->errout );
} }

View file

@ -1380,17 +1380,10 @@ int TY_(DocParseStream)( TidyDocImpl* doc, StreamIn* in )
int tidyDocRunDiagnostics( TidyDocImpl* doc ) int tidyDocRunDiagnostics( TidyDocImpl* doc )
{ {
Bool quiet = cfgBool( doc, TidyQuiet ); TY_(ReportMarkupVersion)( doc );
Bool force = cfgBool( doc, TidyForceOutput ); TY_(ReportNumWarnings)( doc );
if ( !quiet ) if ( doc->errors > 0 && !cfgBool( doc, TidyForceOutput ) )
{
TY_(ReportMarkupVersion)( doc );
TY_(ReportNumWarnings)( doc );
}
if ( doc->errors > 0 && !force )
TY_(Dialogue)(doc, STRING_NEEDS_INTERVENTION ); TY_(Dialogue)(doc, STRING_NEEDS_INTERVENTION );
return tidyDocStatus( doc ); return tidyDocStatus( doc );