Module

orchestration.feature_detector

Feature detection for CSS optimization.

Detects features that require specific CSS from page content:

  • Mermaid diagrams (```mermaid code blocks)
  • Data tables (tabulator initialization)
  • Graph visualizations (graph config)

This runs during content discovery to populate site.features_detected, which the CSSOptimizer uses to include only necessary CSS.

Usage:

from bengal.orchestration.feature_detector import FeatureDetector

detector = FeatureDetector()
features = detector.detect_features_in_content(content)
# Returns: {"mermaid", "data_tables"} etc.

See Also:

  • bengal/orchestration/css_optimizer.py: Consumes detected features
  • plan/drafted/rfc-css-tree-shaking.md: Design rationale

Classes

FeatureDetector 4
Detects CSS-requiring features in page content. This class analyzes page content to find features …

Detects CSS-requiring features in page content.

This class analyzes page content to find features that need specific CSS files (mermaid, data_tables, etc.).

Thread-safe: Can be used from parallel page parsing.

Attributes

Name Type Description
PATTERNS ClassVar[dict[str, re.Pattern[str]]]
DIRECTIVE_PATTERNS ClassVar[dict[str, re.Pattern[str]]]

Methods

detect_features_in_content 1 set[str]
Detect features in page content. Analyzes content for patterns that indicate s…
def detect_features_in_content(self, content: str) -> set[str]

Detect features in page content.

Analyzes content for patterns that indicate specific CSS is needed.

Parameters
Name Type Description
content

Raw markdown content

Returns
set[str] Set of detected feature names
detect_features_in_page 1 set[str]
Detect features in a page object. Checks both content and metadata for feature…
def detect_features_in_page(self, page: PageLike) -> set[str]

Detect features in a page object.

Checks both content and metadata for feature indicators.

Parameters
Name Type Description
page

Page object to analyze

Returns
set[str] Set of detected feature names

Functions

detect_site_features 1 set[str]
Detect all features used across a site. Convenience function to scan all pages…
def detect_site_features(site: SiteContent) -> set[str]

Detect all features used across a site.

Convenience function to scan all pages and collect features.

Parameters
Name Type Description
site SiteContent

Site with populated pages list

Returns
set[str]