mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2024-12-22 16:31:53 +00:00
Add documents on how to restructure configuration directives.
Signed-off-by: Edward Z. Yang <edwardzyang@thewritingpot.com>
This commit is contained in:
parent
bfbe29d5a1
commit
bf71c3f392
164
docs/dev-config-naming.txt
Normal file
164
docs/dev-config-naming.txt
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
Configuration naming
|
||||||
|
|
||||||
|
HTML Purifier 4.0.0 features a new configuration naming system that
|
||||||
|
allows arbitrary nesting of namespaces. While there are certain cases
|
||||||
|
in which using two namespaces is obviously better (the canonical example
|
||||||
|
is where we were using AutoFormatParam to contain directives for AutoFormat
|
||||||
|
parameters), it is unclear whether or not a general migration to highly
|
||||||
|
namespaced directives is a good idea or not.
|
||||||
|
|
||||||
|
== Case studies ==
|
||||||
|
|
||||||
|
=== Attr.* ===
|
||||||
|
|
||||||
|
We have a dead duck HTML.Attr.Name.UseCDATA which migrated before we decided
|
||||||
|
to think this out thoroughly.
|
||||||
|
|
||||||
|
We currently have a large number of directives in the Attr.* namespace.
|
||||||
|
These directives tweak the behavior of some HTML attributes. They have
|
||||||
|
the properties:
|
||||||
|
|
||||||
|
* While they apply to only one attribute at a time, the attribute can
|
||||||
|
span over multiple elements (not necessarily all attributes, either).
|
||||||
|
The information of which elements it impacts is either omitted or
|
||||||
|
informally stated (EnableID applies to all elements, DefaultImageAlt
|
||||||
|
applies to <img> tags, AllowedRev doesn't say but only applies to a tags).
|
||||||
|
|
||||||
|
* There is a certain degree of clustering that could be applied, especially
|
||||||
|
to the ID directives. The clustering could be done with respect to
|
||||||
|
what element/attribute was used, i.e.
|
||||||
|
|
||||||
|
*.id -> EnableID, IDBlacklistRegexp, IDBlacklist, IDPrefixLocal, IDPrefix
|
||||||
|
img.src -> DefaultInvalidImage
|
||||||
|
img.alt -> DefaultImageAlt, DefaultInvalidImageAlt
|
||||||
|
bdo.dir -> DefaultTextDir
|
||||||
|
a.rel -> AllowedRel
|
||||||
|
a.rev -> AllowedRev
|
||||||
|
a.target -> AllowedFrameTargets
|
||||||
|
a.name -> Name.UseCDATA
|
||||||
|
|
||||||
|
* The directives often reference generic attribute types that were specified
|
||||||
|
in the DTD/specification. However, some of the behavior specifically relies
|
||||||
|
on the fact that other use cases of the attribute are not, at current,
|
||||||
|
supported by HTML Purifier.
|
||||||
|
|
||||||
|
AllowedRel, AllowedRev -> heavily <a> specific; if <link> ends up being
|
||||||
|
allowed, we will also have to give users specificity there (we also
|
||||||
|
want to preserve generality) DTD %Linktypes, HTML5 distinguishes
|
||||||
|
between <link> and <a>/<area>
|
||||||
|
AllowedFrameTargets -> heavily <a> specific, but also used by <area>
|
||||||
|
and <form>. Transitional DTD %FrameTarget, not present in strict,
|
||||||
|
HTML5 calls them "browsing contexts"
|
||||||
|
Default*Image* -> as a default parameter, is almost entirely exlcusive
|
||||||
|
to <img>
|
||||||
|
EnableID -> global attribute
|
||||||
|
Name.UseCDATA -> heavily <a> specific, but has heavy other usage by
|
||||||
|
many things
|
||||||
|
|
||||||
|
== AutoFormat.* ==
|
||||||
|
|
||||||
|
These have the fairly normal pluggable architecture that lends itself to
|
||||||
|
large amounts of namespaces (pluggability may be the key to figuring
|
||||||
|
out when gratuitous namespacing is good.) Properties:
|
||||||
|
|
||||||
|
* Boolean directives are fair game for being namespaced: for example,
|
||||||
|
RemoveEmpty.RemoveNbsp triggers RemoveEmpty.RemoveNbsp.Exceptions,
|
||||||
|
the latter of which only makes sense when RemoveEmpty.RemoveNbsp
|
||||||
|
is set to true. (The same applies to RemoveNbsp too)
|
||||||
|
|
||||||
|
The AutoFormat string is a bit long, but is the only bit of repeated
|
||||||
|
context.
|
||||||
|
|
||||||
|
== Core.* ==
|
||||||
|
|
||||||
|
Core is the potpourri of directives, mostly regarding some minor behavioral
|
||||||
|
tweaks for HTML handling abilities.
|
||||||
|
|
||||||
|
AggressivelyFixLt
|
||||||
|
ConvertDocumentToFragment
|
||||||
|
DirectLexLineNumberSyncInterval
|
||||||
|
LexerImpl
|
||||||
|
MaintainLineNumbers
|
||||||
|
Lexer
|
||||||
|
CollectErrors
|
||||||
|
Language
|
||||||
|
Error handling (Language is ostensibly a little more general, but
|
||||||
|
it's only used for error handling right now)
|
||||||
|
ColorKeywords
|
||||||
|
CSS and HTML
|
||||||
|
Encoding
|
||||||
|
EscapeNonASCIICharacters
|
||||||
|
Character encoding
|
||||||
|
EscapeInvalidChildren
|
||||||
|
EscapeInvalidTags
|
||||||
|
HiddenElements
|
||||||
|
RemoveInvalidImg
|
||||||
|
Lexing/Output
|
||||||
|
RemoveScriptContents
|
||||||
|
Deprecated
|
||||||
|
|
||||||
|
== HTML.* ==
|
||||||
|
|
||||||
|
AllowedAttributes
|
||||||
|
AllowedElements
|
||||||
|
AllowedModules
|
||||||
|
Allowed
|
||||||
|
ForbiddenAttributes
|
||||||
|
ForbiddenElements
|
||||||
|
Element set tuning
|
||||||
|
BlockWrapper
|
||||||
|
Child def advanced twiddle
|
||||||
|
CoreModules
|
||||||
|
CustomDoctype
|
||||||
|
Advanced HTMLModuleManager twiddles
|
||||||
|
DefinitionID
|
||||||
|
DefinitionRev
|
||||||
|
Caching
|
||||||
|
Doctype
|
||||||
|
Parent
|
||||||
|
Strict
|
||||||
|
XHTML
|
||||||
|
Global environment
|
||||||
|
MaxImgLength
|
||||||
|
Attribute twiddle? (applies to two attributes)
|
||||||
|
Proprietary
|
||||||
|
SafeEmbed
|
||||||
|
SafeObject
|
||||||
|
Trusted
|
||||||
|
Extra functionality/tagsets
|
||||||
|
TidyAdd
|
||||||
|
TidyLevel
|
||||||
|
TidyRemove
|
||||||
|
Tidy
|
||||||
|
|
||||||
|
== Output.* ==
|
||||||
|
|
||||||
|
These directly affect the output of Generator. These are all advanced
|
||||||
|
twiddles.
|
||||||
|
|
||||||
|
== URI.* ==
|
||||||
|
|
||||||
|
AllowedSchemes
|
||||||
|
OverrideAllowedSchemes
|
||||||
|
Scheme tuning
|
||||||
|
Base
|
||||||
|
DefaultScheme
|
||||||
|
Host
|
||||||
|
Global environment
|
||||||
|
DefinitionID
|
||||||
|
DefinitionRev
|
||||||
|
Caching
|
||||||
|
DisableExternalResources
|
||||||
|
DisableExternal
|
||||||
|
DisableResources
|
||||||
|
Disable
|
||||||
|
Contextual/authority tuning
|
||||||
|
HostBlacklist
|
||||||
|
Authority tuning
|
||||||
|
MakeAbsolute
|
||||||
|
MungeResources
|
||||||
|
MungeSecretKey
|
||||||
|
Munge
|
||||||
|
Transformation behavior (munge can be grouped)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user