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

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

View file

@ -1812,7 +1812,7 @@ static languageDefinition language_en = { whichPluralForm_en, {
{ STRING_CONTENT_LOOKS, 0, "Document content looks like %s" },
{ STRING_DOCTYPE_GIVEN, 0, "Doctype given is \"%s\"" },
{/* 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.
- 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"
"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_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.
- The strings "Tidy" and "HTML Tidy" are the program name and must not be translated. */
TEXT_GENERAL_INFO, 0,

View file

@ -1,4 +1,4 @@
#ifndef language_fr_h
#ifndef language_fr_h
#define 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_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,
"Ce document contient des erreurs qui doivent d'abord être résolues\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_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,
"À propos de HTML Tidy: https://github.com/htacg/tidy-html5\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
/*
* 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" },
{ STRING_CONTENT_LOOKS, 0, "O conteúdo do documento se parece com %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,
"Esse documento possui erros que devem ser corrigidos\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_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,
"Sobre o HTML Tidy: https://github.com/htacg/tidy-html5\n"
"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) );
}
// /* Suppress TidyInfo on Reports if applicable. */
// 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 )
/* Check for conditions to suppress TidyInfo. */
if ( message->level == TidyInfo )
{
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. */
@ -177,6 +183,23 @@ static void messageOut( TidyMessageImpl *message )
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,
then suppress. */
if ( message->level > TidyDialogueSummary )
@ -1225,7 +1248,6 @@ void TY_(ErrorSummary)( TidyDocImpl* doc )
if (doc->footnotes & FN_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_(WriteChar)( '\n', doc->errout );
}

View file

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