using XM_40017 using Documenter using Glob const md_nb_template = """ ```@meta EditURL = "https://github.com/fverdugo/XM_40017/blob/main/docs/src/notebooks/SCRIPT_NAME.ipynb" ``` ```@raw html
Tip
``` ```@raw html ``` """ function convert_embedded_img_to_base64(notebook_path) doc = open(io->read(io, String), notebook_path) # Regex matching: extract filename and base64 code regex = r"attachments\\\":\s*\{\s*\\\"(?.*).png\\\":\s*\{\s*\\\"image/png\\\":\s*\\\"(?.*)\\\"" res = eachmatch(regex, doc) matches = collect(res) # Replace img src with base64 code for m in matches filename = m[:filename] base64 = m[:base64code] doc = replace(doc, "attachment:$filename.png" => "data:image/png;base64,$base64") end filename = splitpath(notebook_path)[end] write("docs/src/notebooks/$filename", doc); end # Write markdown file that includes notebook html function create_md_nb_file( filename ) global md_nb_template; content = replace(md_nb_template, "SCRIPT_NAME" => filename) md_path = joinpath(@__DIR__, "src/notebooks", filename * ".md" ) open(md_path, "w") do md_file write(md_file, content) end return md_path end # Convert to html using nbconvert function convert_notebook_to_html(notebook_path; output_name = "index", output_dir = "./docs/src/notebook-html", theme = "light") command_jup = "jupyter" command_nbc = "nbconvert" output_format = "--to=html" theme = "--theme=$theme" output = "--output=$output_name" output_dir = "--output-dir=$output_dir" infile = notebook_path run(`$command_jup $command_nbc $output_format $output $output_dir $theme $infile`) end # Modify html contents function modify_notebook_html( html_filepath ) content = open( html_filepath, "r" ) do html_file read( html_file, String ) end # Resize iframes using IframeResizer content = replace(content, r"(]*>[\s\S]*?<\/script>\K)" => s"\1\n\t\n"; count = 1 ) open( html_filepath, "w" ) do html_file write( html_file, content ) end return nothing end # Loop over notebooks and generate html and markdown notebook_files = glob("*.ipynb", "notebooks/") for filepath in notebook_files convert_embedded_img_to_base64(filepath) filename_with_ext = splitpath(filepath)[end] filename = splitext(filename_with_ext)[1] create_md_nb_file(filename) convert_notebook_to_html("docs/src/notebooks/$filename_with_ext", output_name = filename) modify_notebook_html("docs/src/notebook-html/$(filename).html") end makedocs(; modules=[XM_40017], authors="Francesc Verdugo ", repo="https://github.com/fverdugo/XM_40017/blob/{commit}{path}#{line}", sitename="XM_40017", format=Documenter.HTML(; assets = ["assets/favicon.ico", "assets/iframeResizer.min.js", "assets/custom.css"], prettyurls=get(ENV, "CI", "false") == "true", canonical="https://fverdugo.github.io/XM_40017", edit_link="main",), pages=["Home" => "index.md","Getting started"=>"getting_started_with_julia.md", "Notebooks"=>[ "Julia Basics" => "notebooks/julia_basics.md", "Tasks and channels" => "notebooks/julia_async.md", "Remote calls and remote channels" => "notebooks/julia_distributed.md", "Matrix Multiplication"=>"notebooks/matrix_matrix.md", "Jacobi" => "notebooks/jacobi_method.md", "Solutions" => "notebooks/sol_matrix_matrix.md" ]], ) deploydocs(; repo="github.com/fverdugo/XM_40017", devbranch="main", )