search.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. from pathlib import Path
  2. from fastapi.responses import JSONResponse
  3. from nicegui import app
  4. from ..examples import examples
  5. from .content import registry
  6. PATH = Path(__file__).parent.parent / 'static' / 'search_index.json'
  7. search_index: list[dict[str, str]] = []
  8. @app.get('/static/search_index.json')
  9. def _get_search_index() -> JSONResponse:
  10. return JSONResponse(search_index)
  11. def build_search_index() -> None:
  12. """Build search index."""
  13. search_index.clear()
  14. search_index.extend([
  15. {
  16. 'title': f'{documentation.heading.replace("*", "")}: {part.title}',
  17. 'content': part.description or '',
  18. 'url': f'/documentation/{documentation.name}#{part.link_target}',
  19. }
  20. for documentation in registry.values()
  21. for part in documentation.parts
  22. ])
  23. search_index.extend([
  24. {
  25. 'title': f'Example: {example.title}',
  26. 'content': example.description,
  27. 'url': example.url,
  28. }
  29. for example in examples
  30. ])