Файл: htmlpurifier-4.3.0/docs/dev-config-naming.txt
Строк: 192
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)