Denote. Соглашение об именовании

2025-01-03 · 3 мин. для прочтения

Denote. Соглашение об именовании.

Содержание

1 Общая информация

  • Emacs. Пакет denote
  • Поддерживает любые текстовые форматы файлов.
  • Информация кодируется в названии файла.
  • Название файла следует строгим соглашениям.

2 Схема именования файлов

  • Каталог с файлами содержит просто список файлов, желательно избегать подкаталоги.

  • Шаблон имени файла:

    1DATE==SIGNATURE--TITLE__KEYWORDS.EXTENSION
    
  • Поле DATE : дата в формате год-месяц-день, за которой следует с большой буквы T (для «времени») текущее время в обозначение час-минута-секунда.

    • Примерно так: 20220531T091625.
    • DATE служит уникальным идентификатором каждого файла.
  • Поле SIGNATURE : строка буквенно-цифровых символов.

    • Не имеют чётко определённой цели.
    • Определяется пользователем.
    • Одним из вариантов использования является их использование для установления последовательные отношения между файлами (например, 1, 1a, 1b, 1b1, 1b2, …).
    • Подписи — это дополнительное расширение схемы именования файлов Denote.
    • Их можно добавлять во вновь создаваемые файлы по требованию с помощью команды denote-signature или изменив значение пользовательской опции denote-prompts.
  • Поле TITLE : заголовок заметки, предоставленный пользователем.

  • Поле KEYWORDS состоит из одной или нескольких записей, разделённых значком подчёркивание.

    • Каждое ключевое слово строка, предоставленная пользователем в соответствующем приглашении, которая в целом описывает содержание записи.
    • Каждое из ключевых слов представляет собой одно слово.
    • Пользователи, которым необходимо составить ключевое слово из нескольких слов, например как camelCase/CamelCase, рекомендуется использовать опцию пользователя denote-file-name-slug-functions.
  • EXTENSION : тип файла.

    • По умолчанию это .org (org-mode) хотя пользовательский вариант denote-file-type обеспечивает поддержку Markdown с вариантами YAML или TOML (.md) и простой текст (.txt).
  • Примеры:

    120220610T043241--initial-thoughts-on-the-zettelkasten-method__notetaking.org
    220220610T062201--define-custom-org-hyperlink-type__denote_emacs_package.md
    320220610T162327--on-hierarchy-and-taxis__notetaking_philosophy.txt
    
  • Различные разделители полей, а именно -- и __ дают эффективный способ поиска.

    • Запрос для _word всегда соответствует ключевому слову, а регулярное выражение в виде "\\([0-9T]+?\\)--\\(.*?\\)_" фиксирует дату в группе \1 и название в \2.
  • Можно использовать следующие перестановки частей имён файлов:

    1DATE.EXT
    2DATE--TITLE.EXT
    3DATE__KEYWORDS.EXT
    4DATE==SIGNATURE.EXT
    5DATE==SIGNATURE--TITLE.EXT
    6DATE==SIGNATURE--TITLE__KEYWORDS.EXT
    7DATE==SIGNATURE__KEYWORDS.EXT
    
  • По умолчанию имена файлов имеют три поля и два набора разделителей между ними:

    1DATE--TITLE__KEYWORDS.EXTENSION
    
  • Когда подпись присутствует:

    1DATE==SIGNATURE--TITLE__KEYWORDS.EXTENSION
    

3 Изменение порядка компонентов имени файла

  • Стандартная схема именования файлов предписывает определённый порядок компонентов имени файла.
  • Также предоставляется опция пользователя denote-file-name-components-order, позволяющая пользователю изменить их порядок по своему усмотрению.
  • Значением этой пользовательской опции является список следующих символов:
    • identifier: комбинация даты и времени. Когда он первый в списке, то пишется без префикса. Когда он находится в другом месте имени файла, он пишется с префиксом @@ (например, @@20240519T073456).
    • signature: произвольная строка, которую можно использовать для определения файла каким-либо образом, в соответствии с методологией пользователя. Строка всегда имеет префикс ==.
    • title: произвольная строка, описывающая файл. Всегда с префиксом --.
    • keywords: серия из одного или нескольких слов. Несколько ключевых слов разделяются подчёркиванием. Компонент имени файла всегда имеет префикс __.
  • Все четыре символа должны появиться ровно один раз. Дубликаты игнорируются. Любой недостающий символ добавляется автоматически.
  • Примеры:
     1(setq denote-file-name-components-order '(identifier signature title keywords))
     2;; => 20240519T07345==hello--this-is-the-title__denote_testing.org
     3
     4(setq denote-file-name-components-order '(signature identifier title keywords))
     5;; => ==hello@@20240519T07345--this-is-the-title__denote_testing.org
     6
     7(setq denote-file-name-components-order '(title signature identifier keywords))
     8;; => --this-is-the-title==hello@@20240519T07345__denote_testing.org
     9
    10(setq denote-file-name-components-order '(keywords title signature identifier))
    11;; => __denote_testing--this-is-the-title==hello@@20240519T07345.org
    
  • Выберите один вариант расположения элементов имени.

3.1 Очистка компонентов имени файла

  • Имена файлов могут содержать любые символы, разрешённые файловой системой.
  • Denote накладывает несколько дополнительных ограничений:
    • Элементы ==, __ и -- интерпретируются Denote и должны появляются только один раз.
    • В имени файла не допускается использование точки, за исключением расширения типа файла.
      • Denote распознает два расширения для зашифрованных файлов, например .txt.gpg.
  • По умолчанию Denote применяет правила к именам файлов denote-file-name-slug-functions.
  • Эти правила применяются к имена файлов по умолчанию:
    • Удаляются незаконные символы.
    • Запись названия файла осуществляется через дефис.
    • Из ключевых слов удаляются пробелы и другие разделители.
    • Все компоненты имени файла записываются в нижнем регистре.

ы

Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Мои научные интересы включают физику, администрирование Unix и сетей.