collective.html2blocks.registry#
Registry for block, element, and iframe converters in collective.html2blocks.
This module provides decorators and accessors for registering and retrieving converter functions that transform HTML elements into Volto blocks or Slate items.
Converters are registered using decorators and stored in a global registry. This enables extensible and dynamic HTML-to-block conversion for Plone/Volto.
Example
from collective.html2blocks.registry import block_converter
@block_converter('p')
def convert_paragraph(element):
See also
- class collective.html2blocks.registry.block_converter[source]#
Decorator to register a block converter function for one or more tag names.
- Parameters:
*tag_names (str) -- One or more HTML tag names to register the converter for.
Example
@block_converter('p', 'div') def convert_paragraph(element):
- collective.html2blocks.registry.default_converter(func: BlockConverter) BlockConverter[source]#
Register the default block converter.
- Parameters:
func (BlockConverter) -- The converter function to use as default.
- Returns:
The registered default converter.
- Return type:
BlockConverter
Example
@default_converter def convert_default(element):
- class collective.html2blocks.registry.element_converter[source]#
Decorator to register an element converter function for one or more tag names.
- Parameters:
Example
@element_converter(['span'], 'strong') def convert_span(element, type_name):
- collective.html2blocks.registry.get_block_converter(element: Tag | None = None, tag_name: str = '', strict: bool = True) Callable | None[source]#
Return a registered block converter for a given element or tag name.
- Parameters:
- Returns:
The registered converter function, or
Noneif not found.- Return type:
Callable | None
Example
>>> get_block_converter(tag_name='p') <function convert_paragraph ...>
- collective.html2blocks.registry.get_element_converter(element: Tag | None = None, tag_name: str = '') ElementConverter | None[source]#
Return a registered element converter for a given element or tag name.
- Parameters:
element (Tag, optional) -- The HTML element to get the converter for.
tag_name (str, optional) -- The tag name to get the converter for.
- Returns:
- The registered converter function,
or
Noneif not found.
- Return type:
ElementConverter | None
Example
>>> get_element_converter(tag_name='span') <function convert_span ...>
- collective.html2blocks.registry.get_iframe_converter(src: str) EmbedInfo[source]#
Return a registered iframe converter for a given
srcURL.- Parameters:
src (str) -- The iframe
srcURL to match against registered patterns.- Returns:
Information about the matched provider and converter.
- Return type:
EmbedInfo
Example
>>> get_iframe_converter('https://youtube.com/embed/abc123') EmbedInfo(url='...', provider_id='abc123', converter=<function ...>)
- class collective.html2blocks.registry.iframe_converter[source]#
Decorator to register an iframe converter function for a provider and pattern.
- Parameters:
provider (str) -- The provider name (e.g., "youtube").
src_pattern (re.Pattern | str, optional) -- Regex pattern for matching src URLs.
url_pattern (str, optional) -- Replacement pattern for URLs.
Example
@iframe_converter("youtube", r"https://youtube.com/embed/(?P<provider_id>[^/]+)") def convert_youtube_iframe(element):
- collective.html2blocks.registry.report_registrations() ReportRegistrations[source]#
Return information about current converter registrations.
- Returns:
Dictionary with block, element, and iframe registrations.
- Return type:
ReportRegistrations
Example
>>> report_registrations() {'block': {...}, 'element': {...}, 'iframe': {...}}