mirror of
https://github.com/ada-dmitry/ada-dmitry.github.io.git
synced 2026-09-24 01:10:35 +00:00
Упорядочить заметки по папкам и добавить сортировку по числовым префиксам
This commit is contained in:
+42
-13
@@ -4,23 +4,52 @@ title: Все заметки
|
||||
permalink: /notes/
|
||||
---
|
||||
|
||||
{%- assign notes_with_project = "" | split: "" -%}
|
||||
{%- for n in site.notes -%}
|
||||
{%- assign parts = n.path | split: "/" -%}
|
||||
{%- assign project_name = parts[1] -%} {# parts[0] = "_notes", parts[1] = подпапка #}
|
||||
{%- assign n = n | merge: { "project": project_name } -%}
|
||||
{%- assign notes_with_project = notes_with_project | push: n -%}
|
||||
{%- comment -%}
|
||||
Группируем _notes/<ПАПКА>/<NN>-name.md по "<ПАПКА>".
|
||||
Внутри группы сортируем по NN (числовой префикс из basename).
|
||||
Если файл лежит прямо в _notes/ без подпапки — группа "Без проекта".
|
||||
{%- endcomment -%}
|
||||
|
||||
{%- assign by_folder = site.notes
|
||||
| group_by_exp: "n", "n.path | remove_first: '_notes/' | split: '/' | first" -%}
|
||||
|
||||
{%- for g in by_folder -%}
|
||||
{%- assign folder = g.name -%}
|
||||
{%- comment -%} Проверяем, является ли "папка" на самом деле файлом {%- endcomment -%}
|
||||
{%- if folder == g.items.first.path | split: '/' | last | split: '.' | first -%}
|
||||
{%- assign folder = "Без проекта" -%}
|
||||
{%- endif -%}
|
||||
|
||||
### {{ folder }} ({{ g.items | size }})
|
||||
|
||||
{%- comment -%}
|
||||
Создаем массив пар "префикс|заметка" для сортировки
|
||||
{%- endcomment -%}
|
||||
{%- assign sorted_pairs = "" | split: "" -%}
|
||||
{%- for n in g.items -%}
|
||||
{%- assign base = n.path | split: '/' | last | split: '.' | first -%} {# 01-hs -> "01-hs" #}
|
||||
{%- assign num_str = base | split: '-' | first -%} {# "01" #}
|
||||
{%- assign ord = num_str | plus: 0 -%} {# 0 если нет числа #}
|
||||
{%- if ord == 0 and num_str != "0" -%}{% assign ord = 9999 %}{% endif %} {# без префикса — в конец #}
|
||||
|
||||
{%- comment -%} Форматируем порядковый номер с ведущими нулями для правильной сортировки {%- endcomment -%}
|
||||
{%- assign ord_padded = ord -%}
|
||||
{%- if ord < 10 -%}{% assign ord_padded = ord | prepend: "000" %}{% endif -%}
|
||||
{%- if ord < 100 and ord >= 10 -%}{% assign ord_padded = ord | prepend: "00" %}{% endif -%}
|
||||
{%- if ord < 1000 and ord >= 100 -%}{% assign ord_padded = ord | prepend: "0" %}{% endif -%}
|
||||
|
||||
{%- assign pair = ord_padded | append: "|" | append: forloop.index0 -%}
|
||||
{%- assign sorted_pairs = sorted_pairs | push: pair -%}
|
||||
{%- endfor -%}
|
||||
|
||||
{%- assign groups = notes_with_project | group_by: "project" | sort: "name" -%}
|
||||
|
||||
{%- for g in groups -%}
|
||||
### {{ g.name }} ({{ g.items | size }})
|
||||
|
||||
<ul>
|
||||
{%- assign items = g.items | sort: "basename" -%}
|
||||
{%- for n in items -%}
|
||||
{%- assign sorted_pairs = sorted_pairs | sort -%}
|
||||
{%- for pair in sorted_pairs -%}
|
||||
{%- assign parts = pair | split: "|" -%}
|
||||
{%- assign index = parts[1] | plus: 0 -%}
|
||||
{%- assign n = g.items[index] -%}
|
||||
<li><a href="{{ n.url | relative_url }}">{{ n.title }}</a></li>
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
|
||||
{%- endfor -%}
|
||||
|
||||
Reference in New Issue
Block a user