Path Bar

Path display, breadcrumbs navigation, and optional path input for the file browser.

Path Parsing

Utilities for parsing paths into breadcrumb segments.


source

parse_path_segments


def parse_path_segments(
    path:str, # Full path to parse
    separator:str='/', # Path separator
)->List: # List of (name, full_path) tuples

Parse a path into breadcrumb segments.

# Test path parsing
segments = parse_path_segments("/home/user/Documents")
assert len(segments) == 4  # /, home, user, Documents
assert segments[0] == ("/", "/")
assert segments[1][0] == "home"
assert segments[-1][0] == "Documents"

# Test single segment
segments = parse_path_segments("/")
assert len(segments) == 1
assert segments[0] == ("/", "/")

print("Path parsing tests passed!")
Path parsing tests passed!

Path Input

Optional text input for direct path entry.


source

render_path_input


def render_path_input(
    current_path:str, # Current path to display
    navigate_url:str, # URL for navigation
    hx_target:Optional=None, # HTMX target for swaps
    input_id:Optional=None, # HTML ID for input
)->Any: # Path input component

Render a text input for direct path entry.

# Test path input
path_input = render_path_input("/home/user", "/navigate")
html = to_xml(path_input)
assert "<form" in html.lower()
assert "<input" in html.lower()
assert "/home/user" in html
assert "Go" in html

print("Path input tests passed!")
Path input tests passed!

Path Bar

Complete path bar component combining breadcrumbs, buttons, and optional input.


source

render_path_bar


def render_path_bar(
    current_path:str, # Current directory path
    parent_path:Optional, # Parent directory path
    home_path:str, # Home directory path
    config:FileBrowserConfig, # Browser configuration
    navigate_url:str, # URL for navigation
    refresh_url:Optional=None, # URL for refresh
    hx_target:Optional=None, # HTMX target for swaps
    path_bar_id:Optional=None, # HTML ID for path bar
)->Any: # Path bar component

Render the complete path bar.

# Test complete path bar
config = FileBrowserConfig()
path_bar = render_path_bar(
    current_path="/home/user/Documents",
    parent_path="/home/user",
    home_path="/home/user",
    config=config,
    navigate_url="/navigate"
)
html = to_xml(path_bar)
assert "breadcrumbs" in html  # Default shows breadcrumbs
assert "Documents" in html
assert "<button" in html.lower()  # Nav buttons

# Test with path input
config_input = FileBrowserConfig(show_path_input=True, show_breadcrumbs=False)
path_bar = render_path_bar(
    current_path="/home/user",
    parent_path="/home",
    home_path="/home/user",
    config=config_input,
    navigate_url="/navigate"
)
html = to_xml(path_bar)
assert "<input" in html.lower()  # Path input shown
assert "<form" in html.lower()

print("Path bar tests passed!")
Path bar tests passed!