search.py 1.1 KB

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