Source code for jsoncrack_for_sphinx.core.extension
"""Main Sphinx extension module for JSONCrack JSON schema visualization."""importloggingasstd_loggingfrompathlibimportPathfromtypingimportAny,Dictfromsphinx.applicationimportSphinxfromsphinx.utilimportloggingfrom.autodocimportautodoc_process_docstring,autodoc_process_signaturefrom.directiveimportSchemaDirectivelogger=logging.getLogger(__name__)
[docs]defsetup(app:Sphinx)->Dict[str,Any]:"""Set up the Sphinx extension."""# Add configuration values for new structured configapp.add_config_value("json_schema_dir",None,"env")app.add_config_value("jsoncrack_default_options",{},"env")app.add_config_value("jsoncrack_debug_logging",False,"env")# Add configuration values for backward compatibilityapp.add_config_value("jsoncrack_render_mode","onclick","env")app.add_config_value("jsoncrack_theme",None,"env")app.add_config_value("jsoncrack_direction","RIGHT","env")app.add_config_value("jsoncrack_height","500","env")app.add_config_value("jsoncrack_width","100%","env")app.add_config_value("jsoncrack_onscreen_threshold",0.1,"env")app.add_config_value("jsoncrack_onscreen_margin","50px","env")app.add_config_value("jsoncrack_disable_autodoc",False,"env")app.add_config_value("jsoncrack_autodoc_ignore",[],"env")# Configure logging level if debug is enabledifgetattr(app.config,"jsoncrack_debug_logging",False):# Enable verbose loggingstd_logger=std_logging.getLogger("jsoncrack_for_sphinx")std_logger.setLevel(std_logging.DEBUG)logger.info("JSONCrack debug logging enabled")# Add directiveapp.add_directive("schema",SchemaDirective)# Connect to autodoc eventsapp.connect("autodoc-process-signature",autodoc_process_signature)app.connect("autodoc-process-docstring",autodoc_process_docstring)# Add CSS and JS for styling and functionalitystatic_path=Path(__file__).parent.parent/"static"app.config.html_static_path.append(str(static_path))app.add_css_file("jsoncrack-schema.css")app.add_js_file("jsoncrack-sphinx.js")logger.info("JSONCrack Sphinx extension initialized")return{"version":"0.1.0","parallel_read_safe":True,"parallel_write_safe":True,}