program optdemo; { Simple demo of how to iterate through tidy's option settings. } {$H+} uses tidy_h; procedure ShowOption(doc:pTidyDoc; opt:pTidyOption; id:TidyOptionId; MaxLen:LongInt); var name:string; begin if ( id in [TidyUnknownOption, N_TIDY_OPTIONS] ) then EXIT; name:=tidyOptGetName(opt); name:=name+StringOfChar(' ', MaxLen-length(name)); Write(' ', name); if tidyOptIsReadOnly(opt) then Write(' RO') else Write(' RW'); case tidyOptGetType(opt) of TidyString: WriteLn(' String = ', tidyOptGetValue(doc, id)); TidyInteger: WriteLn(' Integer = ', tidyOptGetInt(doc, id)); TidyBoolean: WriteLn(' Boolean = ', tidyOptGetBool(doc, id)); end; end; var doc:pTidyDoc; iter:pTidyIterator; opt:pTidyOption; id:TidyOptionId; cat:TidyConfigCategory; MaxLen, L:LongInt; USE_ITERATOR:Boolean; begin USE_ITERATOR:=True; doc:=tidyCreate; MaxLen:=0; for id :=low(TidyOptionId) to high(TidyOptionId) do begin L:=length(string(tidyOptGetName(tidyGetOption(doc, id)))); if ( L > MaxLen ) then MaxLen:=L; end; for cat:=low(TidyConfigCategory) to high(TidyConfigCategory) do begin case cat of TidyMarkup: WriteLn('Markup Options:'); TidyDiagnostics: WriteLn('Diagnostics Options:'); TidyPrettyPrint: WriteLn('Pretty Print Options:'); TidyEncoding: WriteLn('Encoding Options:'); TidyMiscellaneous: WriteLn('Miscellaneous Options:'); end; if USE_ITERATOR then begin iter:=tidyGetOptionList(doc); repeat opt:=tidyGetNextOption(doc, @iter); if ( opt = nil ) then BREAK; if ( tidyOptGetCategory(opt) = cat ) then ShowOption(doc, opt, tidyOptGetID(opt), MaxLen); until FALSE; end else begin for id :=low(TidyOptionId) to high(TidyOptionId) do begin opt:=tidyGetOption(doc, id); if ( tidyOptGetCategory(opt) = cat ) then ShowOption(doc, opt, id, MaxLen); end; end; WriteLn; end; end.