generate-param-doc-tooltips.py 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. """
  2. Grab all parameter files (markdown) and convert them to html files
  3. """
  4. import os
  5. import glob
  6. import markdown
  7. parameterDocsFolder = "../../param-docs/parameter-pages"
  8. docsMainFolder = "../../sd-card/html"
  9. configPageTemplate = "edit_config_param_template.html"
  10. configPage = "edit_config_param.html"
  11. refImagePage = "edit_reference.html"
  12. htmlTooltipPrefix = """
  13. <div class="rst-content"><div class="tooltip"><img src="help.png" width="32px"><span class="tooltiptext">
  14. """
  15. htmlTooltipSuffix = """
  16. </span></div></div>
  17. """
  18. os.system("cp " + docsMainFolder + "/" + configPageTemplate + " " + docsMainFolder + "/" + configPage)
  19. folders = sorted( filter( os.path.isdir, glob.glob(parameterDocsFolder + '/*') ) )
  20. def generateHtmlTooltip(section, parameter, markdownFile):
  21. # print(section, parameter, markdownFile)
  22. with open(markdownFile, 'r') as markdownFileHandle:
  23. markdownFileContent = markdownFileHandle.read()
  24. markdownFileContent = markdownFileContent.replace("# ", "### ") # Move all headings 2 level down
  25. htmlTooltip = markdown.markdown(markdownFileContent, extensions=['admonition'])
  26. # Make all links to be opened in a new page
  27. htmlTooltip = htmlTooltip.replace("a href", "a target=_blank href")
  28. # Replace relative documentation links with absolute ones pointing to the external documentation
  29. htmlTooltip = htmlTooltip.replace("href=\"../", "href=\"https://jomjol.github.io/AI-on-the-edge-device-docs/")
  30. # Add custom styles
  31. htmlTooltip = htmlTooltip.replace("<h3>", "<h3 style=\"margin: 0\">")
  32. # Update image paths and copy images to right folder
  33. if "../img/" in htmlTooltip:
  34. htmlTooltip = htmlTooltip.replace("../img/", "/")
  35. htmlTooltip = htmlTooltipPrefix + htmlTooltip + htmlTooltipSuffix
  36. # Add the tooltip to the config page
  37. with open(docsMainFolder + "/" + configPage, 'r') as configPageHandle:
  38. configPageContent = configPageHandle.read()
  39. configPageContent = configPageContent.replace("<td>$TOOLTIP_" + section + "_" + parameter + "</td>", "<td>" + htmlTooltip + "</td>")
  40. with open(docsMainFolder + "/" + configPage, 'w') as configPageHandle:
  41. configPageHandle.write(configPageContent)
  42. # Add the tooltip to the reference image page
  43. with open(docsMainFolder + "/" + refImagePage, 'r') as refImagePageHandle:
  44. refImagePageContent = refImagePageHandle.read()
  45. refImagePageContent = refImagePageContent.replace("<td>$TOOLTIP_" + section + "_" + parameter + "</td>", "<td>" + htmlTooltip + "</td>")
  46. with open(docsMainFolder + "/" + refImagePage, 'w') as refImagePageHandle:
  47. refImagePageHandle.write(refImagePageContent)
  48. print("Generating Tooltips...")
  49. """
  50. Generate a HTML tooltip for each markdown page
  51. """
  52. for folder in folders:
  53. folder = folder.split("/")[-1]
  54. files = sorted(filter(os.path.isfile, glob.glob(parameterDocsFolder + "/" + folder + '/*')))
  55. for file in files:
  56. if not ".md" in file: # Skip non-markdown files
  57. continue
  58. parameter = file.split("/")[-1].replace(".md", "")
  59. parameter = parameter.replace("<", "").replace(">", "")
  60. generateHtmlTooltip(folder, parameter, file)
  61. """
  62. Copy images to main folder
  63. """
  64. os.system("cp " + parameterDocsFolder + "/img/* " + docsMainFolder + "/")