code: private function addCustomDefinition(array $definitionConfig, HTMLPurifier_Config $configObject = null)
      {
          if (!$configObject) {
              $configObject = HTMLPurifier_Config::createDefault();
              $configObject->loadArray($this->getConfig());
          }
  
          // Setup the custom definition
          $configObject->set('HTML.DefinitionID', $definitionConfig['id']);
          $configObject->set('HTML.DefinitionRev', $definitionConfig['rev']);
  
          // Enable debug mode
          if (!isset($definitionConfig['debug']) || $definitionConfig['debug']) {
              $configObject->set('Cache.DefinitionImpl', null);
          }
  
          // Start configuring the definition
          if ($def = $configObject->maybeGetRawHTMLDefinition()) {
              // Create the definition attributes
              if (!empty($definitionConfig['attributes'])) {
                  $this->addCustomAttributes($definitionConfig['attributes'], $def);
              }
  
              // Create the definition elements
              if (!empty($definitionConfig['elements'])) {
                  $this->addCustomElements($definitionConfig['elements'], $def);
              }
          }
  
          return $configObject;
      }
docs: Add a custom definition
  
  @see http://htmlpurifier.org/docs/enduser-customize.html
  @param array $definitionConfig
  @param HTMLPurifier_Config $configObject Defaults to using default config
  
  @return HTMLPurifier_Config $configObject