Better sidebar sorting
This commit is contained in:
@@ -38,6 +38,7 @@ style = "kewt"
|
|||||||
dir_indexes = true
|
dir_indexes = true
|
||||||
single_file_index = true
|
single_file_index = true
|
||||||
flatten = false
|
flatten = false
|
||||||
|
order = ""
|
||||||
footer = "made with <a href="https://kewt.krzak.org">kewt</a>"
|
footer = "made with <a href="https://kewt.krzak.org">kewt</a>"
|
||||||
logo = ""
|
logo = ""
|
||||||
display_logo = false
|
display_logo = false
|
||||||
@@ -51,6 +52,7 @@ favicon = ""
|
|||||||
- `dir_indexes` generate directory index pages when missing `index.md`
|
- `dir_indexes` generate directory index pages when missing `index.md`
|
||||||
- `single_file_index` if a directory has one markdown file and no `index.md`, use that file as `index.html`
|
- `single_file_index` if a directory has one markdown file and no `index.md`, use that file as `index.html`
|
||||||
- `flatten` flatten sidebar directory levels
|
- `flatten` flatten sidebar directory levels
|
||||||
|
- `order` comma separated file/directory name list to order the sidebar (alphabetical by default)
|
||||||
- `footer` footer html/text shown at the bottom of pages
|
- `footer` footer html/text shown at the bottom of pages
|
||||||
- `logo` logo image path (used in header if enabled)
|
- `logo` logo image path (used in header if enabled)
|
||||||
- `display_logo` show logo in header
|
- `display_logo` show logo in header
|
||||||
|
|||||||
@@ -12,6 +12,16 @@ BEGIN {
|
|||||||
d_dirs[dparts[1]] = dparts[3]
|
d_dirs[dparts[1]] = dparts[3]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
n_order = split(order, oparts, ",")
|
||||||
|
for (i = 1; i <= n_order; i++) {
|
||||||
|
name = oparts[i]
|
||||||
|
sub(/^[[:space:]]*/, "", name)
|
||||||
|
sub(/[[:space:]]*$/, "", name)
|
||||||
|
if (name != "") {
|
||||||
|
custom_order[tolower(name)] = i
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@@ -29,8 +39,46 @@ BEGIN {
|
|||||||
has_index[dir] = 1
|
has_index[dir] = 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
function compare_paths(p1, p2, parts1, parts2, n1, n2, i, name1, name2, lname1, lname2, w1, w2) {
|
||||||
|
n1 = split(p1, parts1, "/")
|
||||||
|
n2 = split(p2, parts2, "/")
|
||||||
|
for (i = 1; i <= n1 && i <= n2; i++) {
|
||||||
|
name1 = parts1[i]
|
||||||
|
name2 = parts2[i]
|
||||||
|
if (i == n1) gsub(/\.md$/, "", name1)
|
||||||
|
if (i == n2) gsub(/\.md$/, "", name2)
|
||||||
|
lname1 = tolower(name1)
|
||||||
|
lname2 = tolower(name2)
|
||||||
|
|
||||||
|
if (lname1 == "index" && i == n1 && lname2 != "index") return -1
|
||||||
|
if (lname2 == "index" && i == n2 && lname1 != "index") return 1
|
||||||
|
|
||||||
|
w1 = (lname1 in custom_order ? custom_order[lname1] : 999999)
|
||||||
|
w2 = (lname2 in custom_order ? custom_order[lname2] : 999999)
|
||||||
|
|
||||||
|
if (w1 < w2) return -1
|
||||||
|
if (w1 > w2) return 1
|
||||||
|
|
||||||
|
if (lname1 < lname2) return -1
|
||||||
|
if (lname1 > lname2) return 1
|
||||||
|
}
|
||||||
|
if (n1 < n2) return -1
|
||||||
|
if (n1 > n2) return 1
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
END {
|
END {
|
||||||
|
for (i = 0; i < count - 1; i++) {
|
||||||
|
for (j = 0; j < count - i - 1; j++) {
|
||||||
|
if (compare_paths(ordered_paths[j], ordered_paths[j+1]) > 0) {
|
||||||
|
tmp = ordered_paths[j]
|
||||||
|
ordered_paths[j] = ordered_paths[j+1]
|
||||||
|
ordered_paths[j+1] = tmp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
print "<ul>"
|
print "<ul>"
|
||||||
if ("index.md" in all_paths) {
|
if ("index.md" in all_paths) {
|
||||||
print "<li><a href=\"/index.html\">Home</a></li>"
|
print "<li><a href=\"/index.html\">Home</a></li>"
|
||||||
|
|||||||
7
kewt.sh
7
kewt.sh
@@ -31,6 +31,7 @@ style = "kewt"
|
|||||||
dir_indexes = true
|
dir_indexes = true
|
||||||
single_file_index = true
|
single_file_index = true
|
||||||
flatten = false
|
flatten = false
|
||||||
|
order = ""
|
||||||
footer = "made with <a href="https://kewt.krzak.org">kewt</a>"
|
footer = "made with <a href="https://kewt.krzak.org">kewt</a>"
|
||||||
logo = ""
|
logo = ""
|
||||||
display_logo = false
|
display_logo = false
|
||||||
@@ -100,8 +101,8 @@ create_new_site() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
generate_nav() {
|
generate_nav() {
|
||||||
dinfo=$(find "$1" -not -path '*/.*' | sort -r | awk -v src="$1" -f "$awk_dir/collect_dir_info.awk")
|
dinfo=$(find "$1" -not -path '*/.*' | sort | awk -v src="$1" -f "$awk_dir/collect_dir_info.awk")
|
||||||
find "$1" -name "*.md" | sort | awk -v src="$1" -v single_file_index="$single_file_index" -v flatten="$flatten" -v dinfo="$dinfo" -f "$awk_dir/generate_sidebar.awk"
|
find "$1" -name "*.md" | sort | awk -v src="$1" -v single_file_index="$single_file_index" -v flatten="$flatten" -v order="$order" -v dinfo="$dinfo" -f "$awk_dir/generate_sidebar.awk"
|
||||||
}
|
}
|
||||||
|
|
||||||
src=""
|
src=""
|
||||||
@@ -165,6 +166,7 @@ footer="made with <a href=\"https://kewt.krzak.org\">kewt</a>"
|
|||||||
dir_indexes="true"
|
dir_indexes="true"
|
||||||
single_file_index="true"
|
single_file_index="true"
|
||||||
flatten="false"
|
flatten="false"
|
||||||
|
order=""
|
||||||
logo=""
|
logo=""
|
||||||
display_logo="false"
|
display_logo="false"
|
||||||
display_title="true"
|
display_title="true"
|
||||||
@@ -196,6 +198,7 @@ load_config() {
|
|||||||
dir_indexes) dir_indexes="$val" ;;
|
dir_indexes) dir_indexes="$val" ;;
|
||||||
single_file_index) single_file_index="$val" ;;
|
single_file_index) single_file_index="$val" ;;
|
||||||
flatten) flatten="$val" ;;
|
flatten) flatten="$val" ;;
|
||||||
|
order) order="$val" ;;
|
||||||
footer) footer="$val" ;;
|
footer) footer="$val" ;;
|
||||||
logo) logo="$val" ;;
|
logo) logo="$val" ;;
|
||||||
display_logo) display_logo="$val" ;;
|
display_logo) display_logo="$val" ;;
|
||||||
|
|||||||
@@ -9,3 +9,4 @@ display_logo = false
|
|||||||
display_title = true
|
display_title = true
|
||||||
logo_as_favicon = true
|
logo_as_favicon = true
|
||||||
favicon = ""
|
favicon = ""
|
||||||
|
order = ""
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ style = "kewt"
|
|||||||
dir_indexes = true
|
dir_indexes = true
|
||||||
single_file_index = true
|
single_file_index = true
|
||||||
flatten = false
|
flatten = false
|
||||||
|
order = ""
|
||||||
footer = "made with <a href="https://kewt.krzak.org">kewt</a>"
|
footer = "made with <a href="https://kewt.krzak.org">kewt</a>"
|
||||||
logo = ""
|
logo = ""
|
||||||
display_logo = false
|
display_logo = false
|
||||||
@@ -51,6 +52,7 @@ favicon = ""
|
|||||||
- `dir_indexes` generate directory index pages when missing `index.md`
|
- `dir_indexes` generate directory index pages when missing `index.md`
|
||||||
- `single_file_index` if a directory has one markdown file and no `index.md`, use that file as `index.html`
|
- `single_file_index` if a directory has one markdown file and no `index.md`, use that file as `index.html`
|
||||||
- `flatten` flatten sidebar directory levels
|
- `flatten` flatten sidebar directory levels
|
||||||
|
- `order` comma separated file/directory name list to order the sidebar (alphabetical by default)
|
||||||
- `footer` footer html/text shown at the bottom of pages
|
- `footer` footer html/text shown at the bottom of pages
|
||||||
- `logo` logo image path (used in header if enabled)
|
- `logo` logo image path (used in header if enabled)
|
||||||
- `display_logo` show logo in header
|
- `display_logo` show logo in header
|
||||||
|
|||||||
Reference in New Issue
Block a user