Yunqa • The Delphi Inspiration

Delphi Components and Applications

User Tools

Site Tools


products:tidy:history

DITidy: Version History

DITidy is an embedded HTML parser and pretty printer for Delphi (Embarcadero / CodeGear / Borland). It reads HTML and XML into a DOM tree, checks for and repairs errors, and writes valid HTML.

DITidy v6.7.0 – 22 Nov 2023

  • Support Delphi 12 Athens Win32 and Win64.

DITidy 6.6.0 – 16 Sept 2021

  • Support Delphi 11 Alexandria Win32 and Win64.

DITidy 6.5.0 – 22 Jul 2021

Update libtidy to version 5.8.0 final. Main changes:

  • Add support for the <slot> tag.
  • Add IMG loading attribute TidyAttr_LOADING, like <img loading=“lazy” src=“…”>.
  • Add SVG paint attributes: TidyAttr_FILL, TidyAttr_FILLRULE, TidyAttr_STROKE, TidyAttr_STROKEDASHARRAY, TidyAttr_STROKEDASHOFFSET, TidyAttr_STROKELINECAP, TidyAttr_STROKELINEJOIN, TidyAttr_STROKEMITERLIMIT, TidyAttr_STROKEWIDTH, TidyAttr_COLORINTERPOLATION, TidyAttr_COLORRENDERING, TidyAttr_OPACITY, TidyAttr_STROKEOPACITY, TidyAttr_FILLOPACITY.
  • Add support for HTML5 extended color names.
  • Warn and clean up multiple <title> elements. Also issue a warning if the <title> element is empty.
  • Fix <open> tag to boolean.
  • Fix percentage validation.
  • Fix TidyWrapPhp wrapping multiple lines.
  • Fix warning about missing </summary>.
  • Fix integer overflow parsing huge HTML documents.
  • Fix case-insensitive compare of html in doctype.
  • Fix AV when cleaning unbalanced <![if …]> … <![endif]>.
  • Fix HTML parsing memory leaks.
  • Fix parsing files with the readonly attributes set.
  • Fix missing bounds check decoding MacRoman.

Other changes:

  • Add the TidyCloseQuotedValuesAtGt option. It instructs the parser to close a quoted value prematurely if it encounters a “>” character before or instead of the closing quote character. This can improve parsing of HTML tag attribute values which are accidentally missing a closing quote character.

DITidy 6.4.0 – 5 Jun 2020

  • Support Delphi 10.4 Sydney Win32 and Win64.

DITidy 6.3.0 – 10 Jan 2020

  • Add support for DATA element.
  • Keep case of anchors for HTML5.

DITidy 6.2.0 – 24 Dec 2018

  • Support Delphi 10.3 Rio Win32 and Win64.

DITidy 6.1.0 – 30 Sept 2018

New:

  • TidyShowFilename option to show file names in error messages and warnings.

Bug Fixes:

  • tidyCleanAndRepair a malformed meta tag could cause an access violation.
  • COLOR attribute no longer causes a warning for LINK tags.
  • Fix SCRIPT parsing in HTML5 mode.
  • Allow “auto” for DIR attribute for HTML5.

DITidy 6.0.0 – 8 Dec 2017

New:

  • tidyErrorSummary – Write error information to the current error sink.
  • tidyGeneralInfo – Write markup information to the current error sink.
  • tidyPlatform – The Tidy build platform.
  • tidyOptionIsList – Does an option take a list of items?
  • tidyOptGetPriorityAttrList – Create a new priority attributes iterator.
  • tidyOptGetNextPriorityAttr – Retrieve the first / next priority attribute from an iterator.
  • tidyOptGetMutedMessageList – Create a muted messages iterator.
  • tidyOptGetNextMutedMessage – Retrieve the first / next muted message from an iteraor.
  • tidySetEmacsFile – Set the file path to use for reports with TidyEmacs.
  • tidyGetEmacsFile – Get the file path to use for reports with TidyEmacs.
  • tidySetConfigCallback – Extend configuration file options.
  • tidySetConfigChangeCallback – Monitor configuration changes.
  • tidySetReportCallback – Use a va_lists callback to send reports.
  • tidySetMessageCallback – Use a TidyMessage callback to send reports.
  • tidyGetMessageDoc – Get the TidyDoc of a message.
  • tidyGetMessageCode – Get the integer code of a message.
  • tidyGetMessageKey – Get the text key of a message.
  • tidyGetMessageLine – Get the line number a message applies to.
  • tidyGetMessageColumn – Get the column a message applies to.
  • tidyGetMessageLevel – Get the TidyReportLevel of the message.
  • tidyGetMessageArguments – Create a new message arguments iterator.
  • tidyGetNextMessageArgument – Retrieve the first / next TidyMessageArgument from an iterator.
  • tidyGetArgType – Return the TidyFormatParameterType of the given message argument.
  • tidyGetArgFormat – Return the format specifier of the given message argument.
  • tidyGetArgValueString – Return the string value of the given message argument.
  • tidyGetArgValueUInt – Return the unsigned integer value of the given message argument.
  • tidyGetArgValueInt – Return the integer value of the given message argument.
  • tidyGetArgValueDouble – Return the double value of the given message argument.
  • tidyErrorCodeAsKey – Return the text message key from an integer message code.
  • tidyErrorCodeFromKey – Return the integer message code from a text message key.
  • getErrorCodeList – Create a new message code iterator.
  • getNextErrorCode – Get the first / next integer error code from an error code iterator.
  • tidySetLanguage – Set the Tidy output language.
  • tidyGetLanguage – Get the current Tidy output language.
  • tidyLocalizedStringN – Retrieve the localized string of a quantity.
  • tidyLocalizedString – Retrieve the localized string for a MessageType.
  • tidyDefaultString – Retrieve a MessageType string in the default localization.
  • getStringKeyList – Initiate an iterator for a list of string key codes available in Tidy.
  • getNextStringKey – Get the next key from a string key list iterator.
  • getInstalledLanguageList – Initiate an iterator for a list of Tidy's installed languages.
  • getNextInstalledLanguage – Get the next language string from the list of installed languages.
  • getWindowsLanguageList – Create a new Windows ↔ POSIX locale mappings iterator.
  • getNextWindowsLanguage – Get the next tidyLocaleMapItemPtr from a Windows language list iterator.
  • TidyLangWindowsName – Return the Windows name from a tidyLocaleMapItem.
  • TidyLangPosixName – Return the POSIX name from a tidyLocaleMapItem.

Removed:

  • Delphi 4 and Delphi 5 support.
  • tidyAttrIsProp – it did not know the element which is required to tell whether an attribute is proprietary.
  • tidySetReportFilter2 – replaced by similar function tidySetReportCallback.
  • tidySetReportFilter3 – replaced by similar function tidySetMessageCallback.
  • All tidyNodeIs… functions – use tidyNodeGetId.
  • All tidyAttrIs… functions – use tidyAttrGetId.

Changed:

  • tidySetReportFilter.
  • TidyConfigCategory elements.
  • TidyDialogueDoc is deprecated: Use TidyDialogueFootnote instead.

Bug Fixes:

  • Add missing TidyDoc argument to tidyFileExists.
  • Fix memory leak in tidyCleanAndRepair when converting XHTML input to HTML output.
  • Fix memory leaks with nested <a><div><a href=1>.

DITidy 5.11.0 – 1 Jun 2017

  • Add TidyAttr_XMLNSXLINK attribute “xmlns:xlink” to support inline <svg>.
  • If <table> is encountered when already in a <table>, close the first <table>. The previous action was to discard the second, while it is the second table that browsers will render.
  • Fix space missing when opening tag at end of a line.
  • Fix generating invalid UTF-8 (surrogate pairs).

DITidy 5.10.0 – 3 Apr 2017

  • Support Delphi 10.2 Tokyo Win32 and Win64.

DITidy 5.9.0 – 19 Dec 2016

  • Add a set of new parser options to disable detection of non-HTML tokens sometimes found in server contexts.
  • Fix: Especially crafted HTML could cause the parser to enter an infinite loop.
  • Fix a tidyOptParseValue access violation crash when writing a read-only option.

DITidy 5.8.0 – 9 Sep 2016

  • Add option TidyEscapeScripts to control how DITidy escapes items that look like closing tags in scripts. Enabled by default.
  • Add support for HTML5 attributes TidyAttr_CROSSORIGIN, TidyAttr_INTEGRITY, TidyAttr_AS.
  • Fix wrong indentation if TidyOmitOptionalTags is enabled.
  • Allow zero <li> in <ul> in HTML5.
  • Do not crash tidyCleanAndRepair if no document was loaded.

DITidy 5.7.0 – 7 May 2016

  • Support Delphi 10.1 Berlin Win32 and Win64.

DITidy 5.6.3 – 10 Mar 2016

  • New tidySetReportFilter3 and TidyReportFilter3.
  • New tidySetPrettyPrinterCallback and TidyPPProgress.
  • Add options TidySkipNested and TidyStrictTagsAttr.
  • HTML5 improvements and bug fixes.

DITidy 5.6.2 – 15 Sep 2015

  • Support Delphi 10 Seattle Win32 and Win64.
  • Add tidyAttrDiscard and tidyDiscardElement interfaces.

DITidy 5.6.1 – 25 Apr 2015

  • Add support for Delphi XE8 Win32 and Win64.
  • New tidyLibraryVersion to replace deprecated tidyReleaseDate.
  • New tidySetReportFilter2 message filter using a TidyReportFilter2 callback.
  • New tidyReportDoctype.
  • Numerous HTML5 improvements and bug fixes.

DITidy 5.6.0 – 3 Oct 2014

  • Support Delphi XE7 Win32 and Win64.
  • Improved documentation.

DITidy 5.5.0 – 28 Apr 2014

  • Support Delphi XE6 Win32 and Win64.

DITidy 5.0.1 – 17 Feb 2014

  • New DITidyUtils unit with useful functions to simplify document parsing from TStream, among others.
  • New example project to show how to iterate a node tree without recursion in Demos\DITidy_Traverse_Tree\DITidy_Traverse_Tree_non_recursive.dpr.

DITidy 5.0.0 – 25 Sep 2013

  • Support Delphi XE5 Win32 and Win64.

DITidy 4.5.0 – 14 Jun 2013

  • Support Delphi XE4 Win32 and Win64.

DITidy 4.0.0 – 4 Oct 2012

  • Support Delphi XE3 Win32 and Win64.
  • Support HTML5 tag and attribute processing.
  • New options: TidyShowInfo, TidyOmitOptionalTags, TidyGDocClean, and TidyDropEmptyElems.
  • Option TidyHideEndTags renamed to TidyCoerceEndTags, but still supported.
  • Fix: TidyMakeClean must not merge inline scripts into <p> or <div>.
  • Other bug fixes.

DITidy 3.1.0 – 22 Dec 2011

  • Support Delphi XE2 Win64.

DITidy 3.0.0 – 15 Oct 2011

  • Support Delphi XE2 Win32.

DITidy 2.2.0 – 28 Sep 2010

  • Delphi XE support.

DITidy 2.1.0 – 14 Sep 2009

  • Delphi 2010 support.
  • Some minor Tidy bug fixes.

DITidy 2.0.0 – 11 Mar 2009

  • Delphi 2009 support.
  • New TidyAnchorAsName option.
  • Fix backslash in a URI in with javascript, which was converted to slash.
  • Fix some Word 2000 HTML parsing which could remove some content.
  • Fix an AV in HTML parsing.

DITidy 1.1 – 6 Sep 2007

  • Fix interface for TidyAllocator and TidyAllocatorVtbl.
  • New Tidy options TidySortAttributes and TidyMergeSpans.
  • New proprietary option TidyDropEmptyHeadings.
  • New TidyTagIdSet type.
  • New Delphi extra function tidyBufAppendStr.
  • Remove “type” from definition of tmbstr = C_char_ptr; to achieve compatiblity with PAnsiChar.
  • New DITidy_Analyse GUI demo.
  • DITidy_Node_TreeView demo: Show node types for Start, End, and StartEnd, Reload button, Options tab sheet, auto-restore options on startup.

DITidy 1.0 – 31 May 2007

  • First public release.
products/tidy/history.txt · Last modified: 2023/11/23 10:18 by 127.0.0.1