Experimentally working.
This commit is contained in:
parent
2e2062ddec
commit
483d17e39b
|
@ -243,6 +243,9 @@ extern "C" {
|
|||
FN(NOFRAMES_CONTENT) \
|
||||
FN(NON_MATCHING_ENDTAG) \
|
||||
FN(OBSOLETE_ELEMENT) \
|
||||
FN(OPTION_REMOVED) \
|
||||
FN(OPTION_REMOVED_APPLIED) \
|
||||
FN(OPTION_REMOVED_UNAPPLIED) \
|
||||
FN(PREVIOUS_LOCATION) \
|
||||
FN(PROPRIETARY_ATTR_VALUE) \
|
||||
FN(PROPRIETARY_ATTRIBUTE) \
|
||||
|
|
34
src/config.c
34
src/config.c
|
@ -303,7 +303,12 @@ static const TidyOptionImpl option_defs[] =
|
|||
};
|
||||
|
||||
|
||||
/* List of deprecated options and their replacements. */
|
||||
/* Deleted options. This array keeps track of options that have been
|
||||
** removed from Tidy, and suggests a replacement. When a deleted option is
|
||||
** used, client programs will have the opportunity to consume the option
|
||||
** first via the callback, and if not handled by the callback, will be
|
||||
** handled by Tidy, generally by setting an alternate or new option.
|
||||
*/
|
||||
static const struct {
|
||||
ctmbstr name; /**< name of the deprecated option */
|
||||
TidyOptionId replacementId; /**< Id of the replacement option, or 0 if none. */
|
||||
|
@ -503,7 +508,11 @@ static void ReparseTagDecls( TidyDocImpl* doc, uint changedUserTags )
|
|||
}
|
||||
|
||||
|
||||
/* returns the option id of the replacement Tidy option for optName. */
|
||||
/* Returns the option id of the replacement Tidy option for optName. Because
|
||||
** an option might not have a replacement (0, TidyUnknownOption), a return
|
||||
** value of N_TIDY_OPTIONS indicates an error, i.e., that the option isn't
|
||||
** in the deprecated list.
|
||||
*/
|
||||
static TidyOptionId getOptionReplacement( ctmbstr optName )
|
||||
{
|
||||
uint i = 0;
|
||||
|
@ -519,26 +528,31 @@ static TidyOptionId getOptionReplacement( ctmbstr optName )
|
|||
}
|
||||
|
||||
|
||||
/* indicates whether or not optName is deprecated */
|
||||
/* Indicates whether or not optName is deprecated */
|
||||
static Bool isOptionDeprecated( ctmbstr optName )
|
||||
{
|
||||
return getOptionReplacement( optName ) != N_TIDY_OPTIONS;
|
||||
}
|
||||
|
||||
/* forward declaration */
|
||||
/* Forward declaration */
|
||||
Bool GetPickListValue();
|
||||
|
||||
/* substitute the new option for the deprecated one. */
|
||||
/* Aubstitute the new option for the deprecated one. */
|
||||
static Bool subDeprecatedOption( TidyDocImpl* doc, ctmbstr oldName, ctmbstr oldValue)
|
||||
{
|
||||
TidyOptionId newOptId = getOptionReplacement( oldName );
|
||||
ctmbstr newName = TY_(getOption)( newOptId )->name;
|
||||
TidyDoc tdoc = tidyImplToDoc( doc );
|
||||
|
||||
if ( newOptId == TidyUnknownOption )
|
||||
{
|
||||
printf("%s has been removed, and there is no replacement.\n", oldName);
|
||||
TY_(Report)( doc, NULL, NULL, OPTION_REMOVED, oldName );
|
||||
return no;
|
||||
}
|
||||
|
||||
/********************/
|
||||
/* `show-body-only` */
|
||||
/********************/
|
||||
if ( TY_(tmbstrcasecmp)( oldName, "show-body-only" ) == 0 )
|
||||
{
|
||||
uint value;
|
||||
|
@ -548,22 +562,24 @@ static Bool subDeprecatedOption( TidyDocImpl* doc, ctmbstr oldName, ctmbstr oldV
|
|||
{
|
||||
if ( value == TidyNoState )
|
||||
{
|
||||
printf("show-body-only is deprecated; use show-markup. No action taken.\n");
|
||||
TY_(Report)( doc, NULL, NULL, OPTION_REMOVED_UNAPPLIED, oldName, newName );
|
||||
TY_(SetOptionBool)( doc, newOptId, value );
|
||||
}
|
||||
else
|
||||
{
|
||||
TY_(SetOptionBool)( doc, newOptId, value );
|
||||
printf("show-body-only has been removed; use show-markup, which has been set to `body-only`.\n");
|
||||
ctmbstr val = tidyOptGetCurrPick( tdoc, newOptId );
|
||||
TY_(Report)( doc, NULL, NULL, OPTION_REMOVED_APPLIED, oldName, newName, val );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Report bad argument %s\n", oldValue);
|
||||
printf("-->Report bad argument %s\n", oldValue);
|
||||
}
|
||||
return yes;
|
||||
}
|
||||
|
||||
|
||||
return no;
|
||||
}
|
||||
|
||||
|
|
|
@ -1906,6 +1906,9 @@ static languageDefinition language_en = { whichPluralForm_en, {
|
|||
{ NOFRAMES_CONTENT, 0, "%s not inside 'noframes' element" },
|
||||
{ NON_MATCHING_ENDTAG, 0, "replacing unexpected %s with </%s>" },
|
||||
{ OBSOLETE_ELEMENT, 0, "replacing obsolete element %s with %s" },
|
||||
{ OPTION_REMOVED, 0, "option \"%s\" no longer exists, and no replacement could be found." },
|
||||
{ OPTION_REMOVED_APPLIED, 0, "option \"%s\" replaced with \"%s\", which Tidy has set to \"%s\"." },
|
||||
{ OPTION_REMOVED_UNAPPLIED, 0, "option \"%s\" replaced with \"%s\", but Tidy could not set it for you." },
|
||||
{ PREVIOUS_LOCATION, 0, "<%s> previously mentioned" },
|
||||
{ PROPRIETARY_ATTR_VALUE, 0, "%s proprietary attribute value \"%s\"" },
|
||||
{ PROPRIETARY_ATTRIBUTE, 0, "%s proprietary attribute \"%s\"" },
|
||||
|
|
|
@ -345,6 +345,9 @@ static struct _dispatchTable {
|
|||
{ NOFRAMES_CONTENT, TidyWarning, formatStandard },
|
||||
{ NON_MATCHING_ENDTAG, TidyWarning, formatStandard },
|
||||
{ OBSOLETE_ELEMENT, TidyWarning, formatStandard },
|
||||
{ OPTION_REMOVED, TidyConfig, formatStandard },
|
||||
{ OPTION_REMOVED_APPLIED, TidyConfig, formatStandard },
|
||||
{ OPTION_REMOVED_UNAPPLIED, TidyConfig, formatStandard },
|
||||
{ PREVIOUS_LOCATION, TidyInfo, formatStandard },
|
||||
{ PROPRIETARY_ATTR_VALUE, TidyWarning, formatAttributeReport },
|
||||
{ PROPRIETARY_ATTRIBUTE, TidyWarning, formatAttributeReport },
|
||||
|
@ -749,12 +752,29 @@ TidyMessageImpl *formatStandard(TidyDocImpl* doc, Node *element, Node *node, uin
|
|||
} break;
|
||||
|
||||
case STRING_UNKNOWN_OPTION:
|
||||
case OPTION_REMOVED:
|
||||
{
|
||||
ctmbstr str;
|
||||
if ( (str = va_arg( args, ctmbstr)) )
|
||||
return TY_(tidyMessageCreateWithLexer)(doc, code, level, str);
|
||||
} break;
|
||||
|
||||
case OPTION_REMOVED_UNAPPLIED:
|
||||
{
|
||||
ctmbstr s1 = va_arg( args, ctmbstr );
|
||||
ctmbstr s2 = va_arg( args, ctmbstr );
|
||||
return TY_(tidyMessageCreateWithLexer)(doc, code, level, s1, s2);
|
||||
}
|
||||
|
||||
case OPTION_REMOVED_APPLIED:
|
||||
{
|
||||
ctmbstr s1 = va_arg( args, ctmbstr );
|
||||
ctmbstr s2 = va_arg( args, ctmbstr );
|
||||
ctmbstr s3 = va_arg( args, ctmbstr );
|
||||
return TY_(tidyMessageCreateWithLexer)(doc, code, level, s1, s2, s3);
|
||||
}
|
||||
|
||||
|
||||
case BAD_SURROGATE_LEAD:
|
||||
case BAD_SURROGATE_PAIR:
|
||||
case BAD_SURROGATE_TAIL:
|
||||
|
|
Loading…
Reference in a new issue