# Ruby wrapper for HTML Tidy Library Project (http://tidy.sf.net) # module Tidylib extend DL::Importable module_function # Load library (requires that $TIDYLIB be defined) # def load() raise LoadError, 'Tidy requires that $TIDYLIB be defined' if $TIDYLIB.nil? begin dlload($TIDYLIB) rescue raise LoadError, sprintf('Unable to load %s', $TIDYLIB) end extern "void *tidyCreate()" extern "void tidyBufFree(void*)" extern "int tidyCleanAndRepair(void*)" extern "int tidyLoadConfig(void*, char*)" extern "int tidyOptGetIdForName(char*)" extern "char tidyOptGetValue(void*, unsigned int)" extern "int tidyOptParseValue(void*, char*, char*)" extern "int tidyParseString(void*, char*)" extern "void tidyRelease(void*)" extern "char* tidyReleaseDate()" extern "int tidyRunDiagnostics(void*)" extern "int tidySaveBuffer(void*, void*)" extern "int tidySetErrorBuffer(void*, void*)" end # tidyBufFree # def buf_free(buf) tidyBufFree(buf) end # tidyCreate # def create() tidyCreate() end # tidyCleanAndRepair # def clean_and_repair(doc) tidyCleanAndRepair(doc) end # tidyLoadConfig # def load_config(doc, file) tidyLoadConfig(doc, file.to_s) end # tidyOptParseValue # def opt_parse_value(doc, name, value) tidyOptParseValue(doc, translate_name(name), value.to_s) end # tidyOptGetValue (returns true/false instead of 1/0) # def opt_get_value(doc, name) value = tidyOptGetValue(doc, tidyOptGetIdForName(translate_name(name))) Tidy.to_b(value) end # tidyParseString # def parse_string(doc, str) tidyParseString(doc, str.to_s) end # tidyRelease # def release(doc) tidyRelease(doc) end # tidyReleaseDate # def release_date() tidyReleaseDate() end # tidyRunDiagnostics # def run_diagnostics(doc) tidyRunDiagnostics(doc) end # tidySaveBuffer # def save_buffer(doc, buf) tidySaveBuffer(doc, buf) end # tidySetErrorBuffer # def set_error_buffer(doc, buf) tidySetErrorBuffer(doc, buf) end # Convert to string replacing underscores with dashes. # :output_xml becomes 'output-xml' # def translate_name(name) name.to_s.sub('_', '-') end end Tidylib.load