diff --git a/examples/convert_code_to_doc.py b/examples/convert_code_to_doc.py index b6b97b3024c3b083fc33b2d8225426dc38ce833b..68a1d847e8e310b8158363782224737ca0a8328d 100755 --- a/examples/convert_code_to_doc.py +++ b/examples/convert_code_to_doc.py @@ -50,12 +50,21 @@ def cppRules(): return [suppressHeader, suppressHeaderGuard, suppressEndHeaderGuard, docTransforms] -def transformCode(code, rules): +def transformCode(code, rules, codeFileName): # exclude stuff between [[exclude]] and [[/exclude]] exclude = parseTaggedContent("exclude", action=replaceWith("")) code = exclude.transformString(code) + # Enable toggling content between [[content]] and [[/content]] + def wrapContentIntoDetails(token): + beginDetails = "//\n// <details open>\n" + summmary = "// <summary><b>Click to hide/show the file documentation</b> (or inspect the [source code]({}))</summary>\n//\n".format(codeFileName) + endDetails = "\n//\n// </details>\n" + return beginDetails + summmary + token[0] + endDetails + wrapContent = parseTaggedContent("content", action=wrapContentIntoDetails) + code = wrapContent.transformString(code) + for transform in rules: code = transform.transformString(code) return code diff --git a/examples/generate_example_docs.py b/examples/generate_example_docs.py index d167fe351d838fd11d947c4ba5a8913e66158adb..dc97ba7da5b7a13abcfbe48e7087a3f8a0cafc76 100755 --- a/examples/generate_example_docs.py +++ b/examples/generate_example_docs.py @@ -27,7 +27,8 @@ def convertToMarkdownAndMerge(dir, config): targetFile.write(markdown.read()) elif fileExtension == ".hh" or fileExtension == ".cc": with open(os.path.join(dir, source), "r") as cppCode: - targetFile.write("\n\n" + transformCode(cppCode.read(), cppRules()) + "\n") + sourceRelPath = os.path.relpath(os.path.abspath(os.path.join(dir, source)), os.path.split(os.path.abspath(targetPath))[0]) + targetFile.write("\n\n" + transformCode(cppCode.read(), cppRules(), sourceRelPath) + "\n") else: raise IOError("Unsupported or unknown file extension *{}".format(fileExtension))