|
|
|
|
"""Sphinx extension to handle the signal directive in the method."""
|
|
|
|
|
|
|
|
|
|
__version__ = '2024.10'
|
|
|
|
|
|
|
|
|
|
from typing import get_overloads
|
|
|
|
|
from typing import TYPE_CHECKING, Any, ClassVar, NamedTuple, cast
|
|
|
|
|
|
|
|
|
|
from sphinx.util.inspect import signature, stringify_signature
|
|
|
|
|
|
|
|
|
|
from sphinx import addnodes
|
|
|
|
|
from docutils import nodes
|
|
|
|
|
from docutils.parsers.rst import directives
|
|
|
|
|
from sphinx.domains.python import PyMethod, PyObject
|
|
|
|
|
|
|
|
|
|
if True or TYPE_CHECKING:
|
|
|
|
|
from collections.abc import Sequence
|
|
|
|
|
|
|
|
|
|
from docutils.nodes import Node, system_message
|
|
|
|
|
|
|
|
|
|
from sphinx.application import Sphinx
|
|
|
|
|
from sphinx.extension import Extension
|
|
|
|
|
from sphinx.util.typing import ExtensionMetadata, OptionSpec
|
|
|
|
|
from sphinx.writers.html5 import HTML5Translator
|
|
|
|
|
|
|
|
|
|
def demo_link_role_int(name, rawtext, text, lineno, inliner, options={}, content=[]):
|
|
|
|
|
"""
|
|
|
|
|
Custom role to generate GitHub and TryItOnline links with optional prefix removal.
|
|
|
|
|
"""
|
|
|
|
|
base_github_url = "https://github.com/ceccopierangiolieugenio/pyTermTk/blob/main/"
|
|
|
|
|
|
|
|
|
|
# Split text into prefix and actual file path
|
|
|
|
|
|
|
|
|
|
file_name = text.split(',')[-1].strip()
|
|
|
|
|
file_path = '/'.join([s.strip() for s in text.split(',')])
|
|
|
|
|
|
|
|
|
|
# Generate GitHub and TryItOnline links
|
|
|
|
|
github_url = f"{base_github_url}{file_path.strip()}"
|
|
|
|
|
|
|
|
|
|
# Format the output
|
|
|
|
|
paragraph_node = nodes.inline()
|
|
|
|
|
github_link = nodes.reference(rawtext, file_name , refuri=github_url, **options)
|
|
|
|
|
|
|
|
|
|
# Add links and combine
|
|
|
|
|
paragraph_node += github_link
|
|
|
|
|
|
|
|
|
|
return [paragraph_node], []
|
|
|
|
|
|
|
|
|
|
def demo_link_role_int_sb(name, rawtext, text, lineno, inliner, options={}, content=[]):
|
|
|
|
|
"""
|
|
|
|
|
Custom role to generate GitHub and TryItOnline links with optional prefix removal.
|
|
|
|
|
"""
|
|
|
|
|
base_github_url = "https://github.com/ceccopierangiolieugenio/pyTermTk/blob/main/"
|
|
|
|
|
base_tio_url = "https://ceccopierangiolieugenio.github.io/pyTermTk-Docs/sandbox/sandbox.html?filePath="
|
|
|
|
|
|
|
|
|
|
# Split text into prefix and actual file path
|
|
|
|
|
|
|
|
|
|
file_name = text.split(',')[-1].strip()
|
|
|
|
|
file_path = '/'.join([s.strip() for s in text.split(',')])
|
|
|
|
|
|
|
|
|
|
# Generate GitHub and TryItOnline links
|
|
|
|
|
github_url = f"{base_github_url}{file_path.strip()}"
|
|
|
|
|
tio_url = f"{base_tio_url}{file_path.strip()}"
|
|
|
|
|
|
|
|
|
|
# Format the output
|
|
|
|
|
paragraph_node = nodes.inline()
|
|
|
|
|
github_link = nodes.reference(rawtext, file_name , refuri=github_url, **options)
|
|
|
|
|
tio_link = nodes.reference(rawtext, "tryItOnline", refuri=tio_url , **options)
|
|
|
|
|
|
|
|
|
|
# Add links and combine
|
|
|
|
|
paragraph_node += github_link
|
|
|
|
|
paragraph_node += nodes.Text(" ")
|
|
|
|
|
paragraph_node += nodes.Text("(")
|
|
|
|
|
paragraph_node += tio_link
|
|
|
|
|
paragraph_node += nodes.Text(")")
|
|
|
|
|
|
|
|
|
|
return [paragraph_node], []
|
|
|
|
|
|
|
|
|
|
def demo_link_role_ext_sb(name, rawtext, text, lineno, inliner, options={}, content=[]):
|
|
|
|
|
"""
|
|
|
|
|
Custom role to generate GitHub and TryItOnline links with optional prefix removal.
|
|
|
|
|
"""
|
|
|
|
|
base_tio_url = "https://ceccopierangiolieugenio.github.io/pyTermTk-Docs/sandbox/sandbox.html?fileUri="
|
|
|
|
|
|
|
|
|
|
# Split text into prefix and actual file path
|
|
|
|
|
|
|
|
|
|
file_name = text.split(',')[-1].strip()
|
|
|
|
|
file_uri = '/'.join([s.strip() for s in text.split(',')])
|
|
|
|
|
|
|
|
|
|
# Generate GitHub and TryItOnline links
|
|
|
|
|
tio_url = f"{base_tio_url}{file_uri.strip()}"
|
|
|
|
|
|
|
|
|
|
# Format the output
|
|
|
|
|
paragraph_node = nodes.inline()
|
|
|
|
|
github_link = nodes.reference(rawtext, file_name , refuri=file_uri, **options)
|
|
|
|
|
tio_link = nodes.reference(rawtext, "tryItOnline", refuri=tio_url , **options)
|
|
|
|
|
|
|
|
|
|
# Add links and combine
|
|
|
|
|
paragraph_node += github_link
|
|
|
|
|
paragraph_node += nodes.Text(" ")
|
|
|
|
|
paragraph_node += nodes.Text("(")
|
|
|
|
|
paragraph_node += tio_link
|
|
|
|
|
paragraph_node += nodes.Text(")")
|
|
|
|
|
|
|
|
|
|
return [paragraph_node], []
|
|
|
|
|
|
|
|
|
|
# Register the custom role
|
|
|
|
|
def setup(app):
|
|
|
|
|
app.add_role("ttk:ghIntLink", demo_link_role_int)
|
|
|
|
|
app.add_role("ttk:sbIntLink", demo_link_role_int_sb)
|
|
|
|
|
app.add_role("ttk:sbExtLink", demo_link_role_ext_sb)
|