|
| 1 | +using Documenter |
| 2 | +using DemoCards |
| 3 | +using JSON |
| 4 | + |
| 5 | +root = joinpath(@__DIR__, "..") |
| 6 | +page_root = joinpath(root, "docs", "problems") |
| 7 | +page_src = joinpath(root, "src", "problems") |
| 8 | +page_dest = joinpath(page_root, "id") |
| 9 | + |
| 10 | +# prepare page contents and page meta |
| 11 | +if isdir(page_root) |
| 12 | + rm(page_root; force=true, recursive=true) |
| 13 | +end |
| 14 | +mkpath(page_root) |
| 15 | +cp(page_src, page_dest; force=true) |
| 16 | +rm(joinpath(page_dest, "problems.jl")) # no need to render this |
| 17 | + |
| 18 | +# provide a configuration file to tell DemoCards that we want to use number order instead |
| 19 | +# of string order |
| 20 | +open(joinpath(page_dest, "config.json"), "w") do io |
| 21 | + files = filter(x->x!="config.json", readdir(page_dest)) |
| 22 | + sort!(files; by=x->parse(Int, split(x, ".")[1])) |
| 23 | + JSON.print(io, Dict("title"=>"By ID", "order"=>files)) |
| 24 | +end |
| 25 | + |
| 26 | +## build docs |
| 27 | + |
| 28 | +# 1. generate demo files |
| 29 | +demopage, postprocess_cb = makedemos("problems") # the relative path to docs/ |
| 30 | + |
| 31 | +# 2. normal Documenter usage |
| 32 | +format = Documenter.HTML(prettyurls=get(ENV, "CI", nothing) == "true") |
| 33 | +makedocs(format = format, |
| 34 | + pages = [ |
| 35 | + "Home" => "index.md", |
| 36 | + demopage, |
| 37 | + ], |
| 38 | + sitename = "LeetCode") |
| 39 | + |
| 40 | +# 3. postprocess after makedocs |
| 41 | +postprocess_cb() |
0 commit comments