Configuration Configuration is documented on a per-use case: if a class uses a certain value from the configuration object, it has to define its name and what the value is used for. This means decentralized configuration declarations that are nevertheless error checking and a centralized configuration object. Directives are divided into namespaces, indicating the major portion of functionality they cover (although there may be overlaps). Please consult the documentation in ConfigDef for more information on these namespaces. Since configuration is dependant on context, internal classes require a configuration object to be passed as a parameter. (They also require a Context object). A majority of classes do not need the config object, but for those who do, it is a lifesaver. Definition objects are complex datatypes influenced by their respective directive namespaces (HTMLDefinition with HTML and CSSDefinition with CSS). If any of these directives is updated, HTML Purifier forces the definition to be regenerated.