From 6ee7a458b7384d15523cb8e44a72cfddd0de52aa Mon Sep 17 00:00:00 2001 From: ada Date: Tue, 19 Aug 2025 16:33:48 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BF=D0=BE=D1=80=D1=8F=D0=B4=D0=BE?= =?UTF-8?q?=D1=87=D0=B8=D1=82=D1=8C=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=82=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=BF=D0=BE=20=D0=BF=D0=B0=D0=BF=D0=BA=D0=B0=D0=BC=20?= =?UTF-8?q?=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82=D1=8C=20?= =?UTF-8?q?=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=BA=D1=83=20?= =?UTF-8?q?=D0=BF=D0=BE=20=D1=87=D0=B8=D1=81=D0=BB=D0=BE=D0=B2=D1=8B=D0=BC?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B5=D1=84=D0=B8=D0=BA=D1=81=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _pages/notes.md | 59 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 44 insertions(+), 15 deletions(-) diff --git a/_pages/notes.md b/_pages/notes.md index 1997a9f..0a26bfc 100644 --- a/_pages/notes.md +++ b/_pages/notes.md @@ -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/<ПАПКА>/-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 }}) - + {%- endfor -%}