From e9a58d237477dc22ec08784387a2e5120b2d462a Mon Sep 17 00:00:00 2001 From: Nishi Date: Mon, 30 Sep 2024 05:05:58 +0000 Subject: [PATCH] working git-svn-id: file:///raid/svn-personal/docgen/trunk@1 44bc13e5-44cb-984e-b856-1907bf1ada44 --- README | 1 + docgen | 338 ++++++++++++++++++ example/docgen.conf | 8 + example/icon.png | Bin 0 -> 8043 bytes example/input/getstarted/index.md | 24 ++ .../input/getstarted2/getstarted3/index.md | 24 ++ example/input/getstarted2/index.md | 24 ++ 7 files changed, 419 insertions(+) create mode 100644 README create mode 100755 docgen create mode 100644 example/docgen.conf create mode 100644 example/icon.png create mode 100644 example/input/getstarted/index.md create mode 100644 example/input/getstarted2/getstarted3/index.md create mode 100644 example/input/getstarted2/index.md diff --git a/README b/README new file mode 100644 index 0000000..bfa9e9b --- /dev/null +++ b/README @@ -0,0 +1 @@ +This is docgen - Document generator diff --git a/docgen b/docgen new file mode 100755 index 0000000..95e4635 --- /dev/null +++ b/docgen @@ -0,0 +1,338 @@ +#!/usr/bin/env tclsh +# $Id$ + +set DOCGEN_VERSION "1.00" +set INPUT "docgen.conf" +foreach arg $argv { + if { [string range "$arg" 0 0] == "-" } { + if { "$arg" == "-V" } { + puts "Docgen version $DOCGEN_VERSION" + exit 0 + } else { + puts "Invalid option: $arg" + exit 1 + } + } else { + set INPUT "$arg" + } +} + +if { ![file exists "$INPUT"] } { + puts "Config $INPUT does not exist" + exit 1 +} + +set input_directory "" +set output_directory "" +set title "" +set icon "" +set footer "" +set links "" + +source "$INPUT" + +if { "$input_directory" == "" } { + puts "Set input_directory" + exit 1 +} +if { "$output_directory" == "" } { + puts "Set output_directory" + exit 1 +} +if { "$title" == "" } { + puts "Set title" + exit 1 +} + +if { "$icon" != "" && ![file exists "$icon"] } { + puts "Icon $icon does not exist" + exit 1 +} + +if { "$links" != "" } { + set links " | $links" +} + +set genre_list {} + +puts "Docgen version $DOCGEN_VERSION" + +proc start_html {fid title toc dots} { + global links + puts $fid "" + puts $fid "" + puts $fid " " + puts $fid " " + puts $fid " $title" + puts $fid " " + puts $fid " " + puts $fid " " + puts $fid "
$title
" + puts $fid " Root$links" + puts $fid "
" + if { "$toc" != "" } { + puts $fid "
" + puts $fid "
" + puts $fid "
" + puts $fid " $toc" + puts $fid "
" + puts $fid "
" + puts $fid "
" + } +} + +proc end_html {fid} { + global footer + puts $fid "
" + puts $fid "
" + if { "$footer" != "" } { + puts $fid "
" + puts $fid " $footer" + } + puts $fid " " + puts $fid "" +} + +proc parse_markdown {path _result} { + global title icon + upvar $_result result + + set result(title) "$title" + set result(body) "" + set result(toc) "" + set result(genre) "" + + set fid [open "$path" "r"] + + set blank 0 + set has_h2 0 + set codeblock "" + set code "" + + while { [gets $fid line] >= 0} { + while 1 { + if { $codeblock != "" } { + if { [regexp -- {```} "$line"] } { + set hl "" + if { "$codeblock" == "plain" } { + set hl [exec -keepnewline -ignorestderr enscript --color=1 -whtml -o - << $code 2>/dev/null] + } else { + set hl [exec -keepnewline -ignorestderr enscript --color=1 -whtml -o - -E$codeblock << $code 2>/dev/null] + } + regexp -- {
.+
} "$hl" line + set result(body) "$result(body)$line" + set codeblock "" + break + } else { + set code "$code$line\n" + } + } elseif { [string length "$line"] == 0 } { + incr blank + if { $blank == 2 } { + set result(body) "$result(body)\n
" + set blank 0 + } + } else { + set blank 1 + set line "[regsub -all {\*\*\*(.+)\*\*\*} "$line" {\1}]" + set line "[regsub -all {\*\*(.+)\*\*} "$line" {\1}]" + set line "[regsub -all {\*(.+)\*} "$line" {\1}]" + while 1 { + if { [regexp -- {```} "$line"] } { + if { $codeblock == "" } { + regexp -- {```([a-zA-Z\-]+)?} "$line" -> codeblock + if { $codeblock == "" } { + set codeblock "plain" + } + set line "[regsub {```([a-zA-Z\-]+)?} "$line" ""]" + set code "" + } + } else { + break + } + } + set line "[regsub -all {\`([^`]+)\`} "$line" {\1}]" + set line "[regsub -all {\!\[([^\]]+)\]\(([^\)]+)\)} "$line" {\1}]" + set line "[regsub -all {\[([^\]]+)\]\(([^\)]+)\)} "$line" {\1}]" + if { [regexp -- {^#+ } "$line" ] } { + regexp -- {^(#+) } "$line" -> hashes + set n [string length "$hashes"] + set link "" + set name "" + + if { $n == 1 } { + if { [regexp -- {^(.+) \{([^\}]+)\}$} "[regsub {^(#+) } "$line" {}]" -> pagetitle genre] } { + set result(genre) "$genre" + } elseif { [regexp -- {^(.+)$} "[regsub {^(#+) } "$line" {}]" -> pagetitle] } { + } + set result(title) "$pagetitle - $title" + set name "$pagetitle" + } else { + if { $has_h2 == 0 } { + set result(body) "$result(body)\n
" + } + set has_h2 1 + set result(toc) "$result(toc)[regsub {^(#+) } "$line" {}]
" + set link "#" + set name [regsub {^(#+) } "$line" {}] + } + set line "$link $name" + } + if { [regexp -- {\\$} "$line" ] } { + set line "[regsub {\\$} "$line" {
}]" + } + set result(body) "$result(body)$line" + } + break + } + } + + if { $has_h2 == 1 } { + set result(body) "$result(body)\n
" + } + + close $fid +} + +proc rescan {path dots} { + global output_directory input_directory icon genre_list + foreach name [glob -tails -nocomplain -directory "$input_directory/$path" *] { + if { [file type "$input_directory/$path/$name"] == "directory" } { + file mkdir "$output_directory/$path/$name" + rescan "$path/$name" "$dots../" + } elseif { "$path" == "" } { + puts "Putting the file on the top-level directory is illegal" + exit 1 + } elseif { "[file extension "$input_directory/$path/$name"]" == ".md" } { + puts "* $path/$name" + array set result {} + parse_markdown "$input_directory/$path/$name" result + + set esc "[regsub -all { } "$result(genre)" _]" + set name "genre_$esc" + global $name + if { [lsearch $genre_list "$esc"] == -1 } { + lappend genre_list "$esc" + } + lappend "$name" "$path" "$result(title)"; + + set outfid [open "$output_directory/$path/index.html" "w"] + if { "$icon" != "" } { + set result(toc) "\"logo\"
$result(toc)" + } + start_html $outfid "$result(title)" "$result(toc)" "$dots" + puts $outfid "$result(body)" + end_html $outfid + close $outfid + } + } +} + +file mkdir "$output_directory" +rescan "" "" + +if { "$icon" != "" } { + file copy -force "$icon" "$output_directory/[file tail "$icon"]" +} + +set fid [open "$output_directory/style.css" "w"] + +set COLOR_PURPLE "#600060" +set COLOR_WHITE "#ffffff" +set COLOR_GRAY "#c0c0c0" +set COLOR_BLUEDARKGRAY "#606080" +set COLOR_DARKGRAY "#808080" +set COLOR_LIGHTGRAY "#f0f0f0" + +set COLOR_BG "$COLOR_WHITE" +set COLOR_TEXT "$COLOR_BLUEDARKGRAY" +set COLOR_VISITED "#a0a0a0" +set COLOR_LINK "#8080f0" + +puts $fid "#title {" +puts $fid " font-size: 30px;" +puts $fid " font-family: sans-serif;" +puts $fid " background-color: $COLOR_TEXT;" +puts $fid " color: $COLOR_BG;" +puts $fid " padding: 5px 0;" +puts $fid " padding-right: 25%;" +puts $fid " text-align: right;" +puts $fid "}" +puts $fid "html {" +puts $fid " color: $COLOR_TEXT;" +puts $fid " font-family: sans-serif;" +puts $fid "}" +puts $fid "a {" +puts $fid " color: $COLOR_LINK;" +puts $fid "}" +puts $fid "a:visited {" +puts $fid " color: $COLOR_VISITED;" +puts $fid "}" +puts $fid "h1 {" +puts $fid " font-size: 30px;" +puts $fid " font-family: sans-serif;" +puts $fid " padding: 5px;" +puts $fid " text-align: left;" +puts $fid " border: solid 1px $COLOR_TEXT;" +puts $fid "}" +puts $fid "#toc {" +puts $fid " float: right;" +puts $fid " width: 13em;" +puts $fid " background-color: $COLOR_LIGHTGRAY;" +puts $fid "}" +puts $fid "pre {" +puts $fid " background-color: $COLOR_LIGHTGRAY;" +puts $fid " padding: 10px;" +puts $fid "}" +puts $fid "img {" +puts $fid " border: none;" +puts $fid "}" +puts $fid "code {" +puts $fid " background-color: $COLOR_LIGHTGRAY;" +puts $fid " padding: 0px 5px;" +puts $fid "}" +puts $fid "#docinside {" +puts $fid " padding-right: 14em;" +puts $fid "}" +puts $fid "#tocinside {" +puts $fid " padding: 5px;" +puts $fid "}" +puts $fid "#shift {" +puts $fid " padding-left: 30px;" +puts $fid "}" +puts $fid "hr {" +puts $fid " border: solid 1px $COLOR_TEXT;" +puts $fid "}" +puts $fid "h2 {" +puts $fid " font-size: 20px;" +puts $fid " font-family: sans-serif;" +puts $fid " background-color: $COLOR_TEXT;" +puts $fid " color: $COLOR_BG;" +puts $fid " padding: 5px 0;" +puts $fid " padding-left: 20px;" +puts $fid " text-align: left;" +puts $fid "}" +puts $fid "h3 {" +puts $fid " font-size: 15px;" +puts $fid " font-family: sans-serif;" +puts $fid " background-color: $COLOR_LIGHTGRAY;" +puts $fid " color: $COLOR_TEXT;" +puts $fid " padding: 5px 0;" +puts $fid " padding-left: 10px;" +puts $fid " text-align: left;" +puts $fid "}" + +close $fid + +set outfid [open "$output_directory/index.html" "w"] +start_html $outfid "$title" "" "./" +puts $outfid "

$title Documentation

" +foreach genre $genre_list { + set name "genre_$genre" + puts $outfid "

[regsub -all {_} "$genre" " "]

" + foreach {k v} [set $name] { + puts $outfid "$v
" + } +} +end_html $outfid +close $outfid diff --git a/example/docgen.conf b/example/docgen.conf new file mode 100644 index 0000000..d6dd20b --- /dev/null +++ b/example/docgen.conf @@ -0,0 +1,8 @@ +# vim: syntax=tcl + +set input_directory "input" +set output_directory "output" +set title "Example Project" +set icon "icon.png" +set footer "Some good footer" +set links "nishi.boats" diff --git a/example/icon.png b/example/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fa8a162221c559b89c18cc7d7eb265a16c39d028 GIT binary patch literal 8043 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 literal 0 HcmV?d00001 diff --git a/example/input/getstarted/index.md b/example/input/getstarted/index.md new file mode 100644 index 0000000..b37d843 --- /dev/null +++ b/example/input/getstarted/index.md @@ -0,0 +1,24 @@ +# Getting Started {User Guide} +blah blah blah blah + +## Download +blah blah blah.\ +blah\ +*BLAH* **BLAH** ***BLAH*** + +## Build +blah blah blah. + +## Install +blah blah: `blah blah` + +```c +int main(){ + printf("Hello, world!\n"); +} +``` + +## Links + +[![blah](/icon.png)](http://nishi.boats) +[blah](http://nishi.boats) diff --git a/example/input/getstarted2/getstarted3/index.md b/example/input/getstarted2/getstarted3/index.md new file mode 100644 index 0000000..3d7f617 --- /dev/null +++ b/example/input/getstarted2/getstarted3/index.md @@ -0,0 +1,24 @@ +# Getting Started 3 {User Guide} +blah blah blah blah + +## Download +blah blah blah.\ +blah\ +*BLAH* **BLAH** ***BLAH*** + +## Build +blah blah blah. + +## Install +blah blah: `blah blah` + +```c +int main(){ + printf("Hello, world!\n"); +} +``` + +## Links + +[![blah](/icon.png)](http://nishi.boats) +[blah](http://nishi.boats) diff --git a/example/input/getstarted2/index.md b/example/input/getstarted2/index.md new file mode 100644 index 0000000..9278716 --- /dev/null +++ b/example/input/getstarted2/index.md @@ -0,0 +1,24 @@ +# Getting Started 2 {User Guide} +blah blah blah blah + +## Download +blah blah blah.\ +blah\ +*BLAH* **BLAH** ***BLAH*** + +## Build +blah blah blah. + +## Install +blah blah: `blah blah` + +```c +int main(){ + printf("Hello, world!\n"); +} +``` + +## Links + +[![blah](/icon.png)](http://nishi.boats) +[blah](http://nishi.boats) -- 2.45.2