Ссылки на произвольные фрагменты текста/сорцов/etc
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 23.11.23 19:42
Оценка:
Здравствуйте!

Хочу ссылаться на произвольные куски текста из каких-либо файлов, и, допустим, выдирать их. Обычно это наверное будут исходники, или какие-то другие файлы, ml/json/yaml/etc.

Допустим, что-то описываю в доке, но дублировать какую-то инфу из сорцов не хочется, хочется подтянуть оттуда прямо в виде фрагмента сорца. Сложность в том, что сорцы меняются, номера строк съезжают, актуальное состояние поддерживать нереально в ссылках на номера строк.

Предлагаю пофлеймить, как бы это можно было бы сделать
Маньяк Робокряк колесит по городу
Re: Ссылки на произвольные фрагменты текста/сорцов/etc
От: kov_serg Россия  
Дата: 23.11.23 20:43
Оценка:
Здравствуйте, Marty, Вы писали:

M>Хочу ссылаться на произвольные куски текста из каких-либо файлов, и, допустим, выдирать их. Обычно это наверное будут исходники, или какие-то другие файлы, ml/json/yaml/etc.


M>Допустим, что-то описываю в доке, но дублировать какую-то инфу из сорцов не хочется, хочется подтянуть оттуда прямо в виде фрагмента сорца. Сложность в том, что сорцы меняются, номера строк съезжают, актуальное состояние поддерживать нереально в ссылках на номера строк.


M>Предлагаю пофлеймить, как бы это можно было бы сделать


Скриптами (perl/lua/php/python/js/...). Что бы можно было ссылаться на куски кода добавьте в код якоря на которые вы хотите ссылаться
Например:
...
// #example1.begin
int add(int x,int y);
// #example1.end

#ifdef 0 // #example2.begin
:))
#endif // #example2.end
...
Re: Ссылки на произвольные фрагменты текста/сорцов/etc
От: rFLY  
Дата: 23.11.23 20:45
Оценка: +1 :)
Здравствуйте, Marty, Вы писали:

M>Предлагаю пофлеймить, как бы это можно было бы сделать

Оставлять какую-нибудь метку в комментах, по ней потом и искать.
Re[2]: Ссылки на произвольные фрагменты текста/сорцов/etc
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 23.11.23 20:47
Оценка:
Здравствуйте, kov_serg, Вы писали:

M>>Предлагаю пофлеймить, как бы это можно было бы сделать


_>Скриптами (perl/lua/php/python/js/...).


Реализация не принципиальна


_>Что бы можно было ссылаться на куски кода добавьте в код якоря на которые вы хотите ссылаться


Предположим, якорей нет — я пишу доку на сорцы, которые не могу трогать. Например, сорцы тупо чужие, и следующий апдейт перетрёт все мои якоря, если я их сам расставлю
Маньяк Робокряк колесит по городу
Re: Ссылки на произвольные фрагменты текста/сорцов/etc
От: velkin Удмуртия http://blogs.rsdn.org/effective/
Дата: 23.11.23 20:50
Оценка:
Здравствуйте, Marty, Вы писали:

M>Допустим, что-то описываю в доке, но дублировать какую-то инфу из сорцов не хочется, хочется подтянуть оттуда прямо в виде фрагмента сорца. Сложность в том, что сорцы меняются, номера строк съезжают, актуальное состояние поддерживать нереально в ссылках на номера строк.

M>Предлагаю пофлеймить, как бы это можно было бы сделать

Я хотел сделать такую программу и даже частично продумал структуру и способ реализации. То о чём ты говоришь это первые пункты функционала. Я об этом уже писал на форуме.

Система токенов.
1. Sistema tokenov.
2. Token system.
3. Разделение текста на токены.

Переводчик токенов.
1. Perevodchik tokenov.
2. Token translator.
3. Автоматическая подмена токенов из словарного слоя токенов.

Управление выбором.
1. Upravleniye viborom.
2. Choice management.
3. Расширенные формы Бэкуса-Науэра.

Просмотр лентой.
1. Prosmotr lentoy.
2. Feed view.
3. Просмотр текста из нескольких файлов в одном редакторе текста лентой.

Сжатый интерфейс.
1. Sjatiy interfeys.
2. Compact interface.
3. Альтернативный интерфейс для экранов малого размера.

Озвучивание речи.
1. Ozvuchivaniye rechi.
2. Speech voicing.
3. Озвучивание текста голосовым синтезатором речи.
4. QTextToSpeech.

Ascii графика.
1. Askii graphika
2. Ascii graphics.
3. рус. Двухмерное редактирование в текстовом или табличном редакторе.

Числовой редактор.
1. Chislovoy redaktor.
2. Numeral editor.
3. Редактирования текста в числовом виде (двоичное, десятичное).

Воспроизведение папок.
1. Vosproizvedeniye papok.
2. Folders playback.
3. Воспроизведение папок без применения плейлиста.
4. Проигрывание директорий. изображений, музыки, видео, книг. Music Folder Player.

Поддержка форматов.
1. Podderjka formatov.
2. Formats support.
3. Встроенная поддержка просмотра изображений, видео, документов (лента).

Управление временем.
1. Upravleniye vremenem.
2. Time management.
3. Управление временем работы процессов людей и приложений.
4. Контроль времени работы с приложениями (radtimer).

Консольные команды.
1. Konsolnie komandi.
2. Console commands.
3. Создание и запуск консольных команд (radconsole).
4. QProcess.

Расчёт формул.
1. Raschet formul.
2. Formulas calculation.
3. Вычисление формул (калькулятор).
4. Основные операции арифметики. Расчёт арифметических формул.

Целостность файлов.
1. Celostnost faylov.
2. Files integrity.
3. Обеспечение целостности файлов с помощью хеш-сумм.

Фрагменты кода.
1. Fragmenti coda
2. Code snippets.
3. Работа с совместимыми фрагментами кода (kate, qtcreator).


Для начала бьёшь текст на токены. Я тогда по быстрому наговнокодил интерфейс к токенизатору boost. Поддержка только английского языка и как бы это не то, что нужно, но я проверял принцип.

Скачать: tokenizer.7z

Дальше появляется возможность подменять токены другими.

Например, был код:
void␣main

Разбиваем его на:
void
␣
main

Далее можем установить порядок и параллельные слои:
1 void    пустой
2 ␣       ␣
3 main    главный

Параллельные слои могут использоваться для визуальной, а не физической подмены исходника.
1. Смысловой перевод.
Например, в одной библиотеке пишут push, в другой append. Или в одной библиотеке пишут insert, а в другой add. Можно выбрать что-то одно или своё собственное и везде будет так как привык твой мозг, а не чужая выдумка.
2. Можно добавить иерархические теги и получать слои ссылок.
3. Можно создать слой для изменений, ну то есть ключевое слово void именно из C++ это для примера число 563235, хочешь поменять его, меняй везде.

Если это не база данных, то всё будет в оперативной памяти, а ссылка по адресам в памяти. Можно, конечно, засунуть и в базу данных, но желательно использовать корпоративные шаблоны проектирования, причём не самые примитивные, типа шлюза таблицы.

А вот управление выбором позволило бы задавать ограничения на конструкции, которые позволяли бы создавать различные архитектуры и прочее. Там можно использовать принцип заложенный в расширенных формах Бэкуса-Науэра, но по сути я переложил их на вложенные списки с типами элементов, вроде последовательности, выбора, повторений и так далее.

Там по идее я много всего нафантазировал, нарисовал графические интерфейсы и структуры данных. Но смотри, мы же живём не в выдуманном мире, где это приложение уже работает. Ранние идеи до этого у меня были такие, что нужно вносить изменения в виде текста, а потом уже его искать.

Модифицируемость кода (Changeability QA) (2015.01.08)
Отсечение целей (сложность разработки) (2015.01.11)

Хотя использовать что-то типа расширенных форм Бэкуса-Науэера только в графическом виде я хотел ещё в 2000-ых, только я тогда не знал, что всё уже изобретено до меня.

Ну хорошо, вот у нас уже есть два способа.
1. Сделать программу мечты, но её пока нет.
2. Вставлять в комментарии кода теги, но это прокатит только со своим кодом и загрязнит его.

Но есть ещё третий способ, в настоящий момент это мой последний комментарий по систематизации личной базы знаний.

3. Re: Систематизация личной базы знаний по программированию в Zim. Начальный уровень осмысления кода
Автор: velkin
Дата: 05.09.23


Суть в том, что я могу писать код в личной базе знаний, в которой есть ссылки на заголовки комментарии или якоря комментарии. А когда мне надо будет скомпилировать проект, я просто скопирую текст в файлы с кодом. Ссылки в этом случае останутся комментариями и код спокойно скомпилируется, но в личной базе знаний я смогу переходить по коду по ссылкам.

Таким образом программа мечты решает все проблемы, но её пока нет. Теги в комментариях в коде неудобны при перемещении по коду и работают только со своим кодом. А вот личная база знаний это промежуточный вариант пока не создана программа мечты и позволяет начать работать уже сейчас, пусть и в ручном режиме.

Причём у того, что я пишу есть серьёзные теоретические предпосылки, потому я и могу пофлудить на эту тему. Разные люди в одних и тех же обстоятельствах сталкиваются с одним и тем же. Просто одни начинают задрачивать свой мозг и у небольшого числа даже получается. А другие пытаются что-то изобрести для облегчения жизни.

В общем то, что тебе приходило в голову, скорее всего приходило в голову и другим. И их даже гораздо больше, чем тебе возможно кажется. Просто мало кто это обсуждает.
Re[2]: Ссылки на произвольные фрагменты текста/сорцов/etc
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 23.11.23 20:52
Оценка:
Здравствуйте, rFLY, Вы писали:

M>>Предлагаю пофлеймить, как бы это можно было бы сделать

FLY>Оставлять какую-нибудь метку в комментах, по ней потом и искать.

С меткой любой дурак сможет
Маньяк Робокряк колесит по городу
Re[3]: Ссылки на произвольные фрагменты текста/сорцов/etc
От: kov_serg Россия  
Дата: 23.11.23 21:04
Оценка:
Здравствуйте, Marty, Вы писали:


M>Предположим, якорей нет — я пишу доку на сорцы, которые не могу трогать. Например, сорцы тупо чужие, и следующий апдейт перетрёт все мои якоря, если я их сам расставлю

Тогда создать метаданные для якорей. Типа начинается с последовательности ...

example1.cpp.anchors
#example1
    start from re"^\s*void\s+add\("
    stop with re"^}"
    limit 10 lines
Отредактировано 23.11.2023 21:33 kov_serg . Предыдущая версия .
Re[4]: Ссылки на произвольные фрагменты текста/сорцов/etc
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 23.11.23 21:45
Оценка:
Здравствуйте, kov_serg, Вы писали:

M>>Предположим, якорей нет — я пишу доку на сорцы, которые не могу трогать. Например, сорцы тупо чужие, и следующий апдейт перетрёт все мои якоря, если я их сам расставлю

_>Тогда создать метаданные для якорей. Типа начинается с последовательности ...

_>example1.cpp.anchors

_>
_>#example1
_>    start from re"^\s*void\s+add\("
_>    stop with re"^\s*}"
_>    limit 10 lines
_>



Вооот, это уже ближе. Только хочется эти метаданные по возможности указывать прямо в ссылке:

Примеры:

Ссылка на конкретную строчку кода — src/3dp/zip/inflate.c:#123
Ссылка на функцию inflate — src/3dp/zip/inflate.c:{size_t inflate(...)} — на параметры нам наплевать, но указываем что это функция
Ссылка на функцию inflate (cpp, есть перегрузки) — src/3dp/zip/inflate.c:{size_t inflate(const void*, std::size_t)} — при парсинге и ссылки и сорца — производим нормализацию — выкидываем имена параметров, оставляя только типы, нормализуем пробелы, и тд, и тп
Ссылка на функцию inflate, на оператор if внутри неё (cpp, есть перегрузки) — src/3dp/zip/inflate.c:{size_t inflate(const void*, std::size_t)/if (size==0)} — тут, конечно, если кто-то порефакторит и переименует переменную, то ссылка станет битой

При этом хочется по возможности обойтись без многословного многострочного описания якорей как отдельных сущностей, и желательно обойтись без всяких регэксов, но, в то же время, если сорцы как-то порефакторят, чтобы этот якорь был максимально непрокисающий, выдерживающий рефакторинги — ну, не глубокие, но хотя бы пробелы/переформатирование выдерживающий.

Ну, для разных языков будут разные правила нормализациии, пока меня в основном плюсики и сопутствующее им интересует
Маньяк Робокряк колесит по городу
Re[2]: Ссылки на произвольные фрагменты текста/сорцов/etc
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 23.11.23 21:51
Оценка:
Здравствуйте, velkin, Вы писали:

V>Здравствуйте, Marty, Вы писали:


M>>Допустим, что-то описываю в доке, но дублировать какую-то инфу из сорцов не хочется, хочется подтянуть оттуда прямо в виде фрагмента сорца. Сложность в том, что сорцы меняются, номера строк съезжают, актуальное состояние поддерживать нереально в ссылках на номера строк.

M>>Предлагаю пофлеймить, как бы это можно было бы сделать

V>Я хотел сделать такую программу и даже частично продумал структуру и способ реализации. То о чём ты говоришь это первые пункты функционала. Я об этом уже писал на форуме.


У тебя бывают интересные мысли, но ты к ним в нагрузку столько бессмысленного мусора пишешь, то эти мысли в нем тонут Ну, может тебе это и кажется осмысленным, но мне — нет. И, думаю, многим участникам форума тоже.

V>

V>Система токенов.
V>1. Sistema tokenov.
V>2. Token system.
V>3. Разделение текста на токены.
V>...


Вот что это за тройное дублирование, русский, транслит, перевод?


V>Для начала бьёшь текст на токены. Я тогда по быстрому наговнокодил интерфейс к токенизатору boost. Поддержка только английского языка и как бы это не то, что нужно, но я проверял принцип.


V>Скачать: tokenizer.7z


V>Дальше появляется возможность подменять токены другими.


V>Параллельные слои могут использоваться для визуальной, а не физической подмены исходника.

V>1. Смысловой перевод.
V>Например, в одной библиотеке пишут push, в другой append. Или в одной библиотеке пишут insert, а в другой add. Можно выбрать что-то одно или своё собственное и везде будет так как привык твой мозг, а не чужая выдумка.
V>2. Можно добавить иерархические теги и получать слои ссылок.
V>3. Можно создать слой для изменений, ну то есть ключевое слово void именно из C++ это для примера число 563235, хочешь поменять его, меняй везде.

Хз, нафига это нужно


V>Но есть ещё третий способ, в настоящий момент это мой последний комментарий по систематизации личной базы знаний.


V>3. Re: Систематизация личной базы знаний по программированию в Zim. Начальный уровень осмысления кода
Автор: velkin
Дата: 05.09.23


V>Суть в том, что я могу писать код в личной базе знаний, в которой есть ссылки на заголовки комментарии или якоря комментарии. А когда мне надо будет скомпилировать проект, я просто скопирую текст в файлы с кодом. Ссылки в этом случае останутся комментариями и код спокойно скомпилируется, но в личной базе знаний я смогу переходить по коду по ссылкам.


Это не нужно. База знаний по проекту, хоть личная, хоть не личная, должна быть отдельно от проекта, какое-то извлечение проекта из этой БД — путь в никуда


V>Причём у того, что я пишу есть серьёзные теоретические предпосылки, потому я и могу пофлудить на эту тему. Разные люди в одних и тех же обстоятельствах сталкиваются с одним и тем же. Просто одни начинают задрачивать свой мозг и у небольшого числа даже получается. А другие пытаются что-то изобрести для облегчения жизни.


Ты в основном кучу мутной воды пишешь


V>В общем то, что тебе приходило в голову, скорее всего приходило в голову и другим. И их даже гораздо больше, чем тебе возможно кажется.


Несомненно


V>Просто мало кто это обсуждает.


Ну вот давай и обсудим
Маньяк Робокряк колесит по городу
Re: Ссылки на произвольные фрагменты текста/сорцов/etc
От: gyraboo  
Дата: 23.11.23 21:57
Оценка:
Здравствуйте, Marty, Вы писали:

M>Предлагаю пофлеймить, как бы это можно было бы сделать


Ну раз текст меняется, нужно вычислять нечеткий хэш фрагмента.
Для быстрого же поиска нужно строить обратный индекс по нечетким хэшам.
Re[2]: Ссылки на произвольные фрагменты текста/сорцов/etc
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 23.11.23 22:00
Оценка:
Здравствуйте, gyraboo, Вы писали:

M>>Предлагаю пофлеймить, как бы это можно было бы сделать


G>Ну раз текст меняется, нужно вычислять нечеткий хэш фрагмента.


Это интересная мысль. А как его вычислить? Есть какие-то наработки в компьютерных науках на эту тему?


G>Для быстрого же поиска нужно строить обратный индекс по нечетким хэшам.


Ну, это не особо нужно
Маньяк Робокряк колесит по городу
Re[3]: Ссылки на произвольные фрагменты текста/сорцов/etc
От: gyraboo  
Дата: 23.11.23 22:07
Оценка: 2 (1)
Здравствуйте, Marty, Вы писали:

G>>Ну раз текст меняется, нужно вычислять нечеткий хэш фрагмента.


M>Это интересная мысль. А как его вычислить? Есть какие-то наработки в компьютерных науках на эту тему?


Fuzzy hash. Есть в линуксе тулзы.
Я использовал для какой-то прикладной задачи, не могу вспомнить для чего именно, но вроде вполне успешно.
Матчинг фрагментов по хэшу вроде тоже некоторые умеют делать.
Но раз это fuzzy, то здесь confidence, а не однозначный матч, это ограничение надо понимать.
Отредактировано 23.11.2023 22:10 gyraboo . Предыдущая версия . Еще …
Отредактировано 23.11.2023 22:08 gyraboo . Предыдущая версия .
Re: Ссылки на произвольные фрагменты текста/сорцов/etc
От: m2user  
Дата: 24.11.23 04:02
Оценка: +1
M>Предлагаю пофлеймить, как бы это можно было бы сделать

Добавить в ссылку версию кода (в source control; или hash файла).
Пусть читатель доки сам ищет, куда этот код переехал в новых исходниках без всяких fuzzy logic (или не ищет, если его интересует именно старая версия файлов).
По мере выхода новых версий доки можно при необходимости обновлять ссылки.
Re: Ссылки на произвольные фрагменты текста/сорцов/etc
От: rosencrantz США  
Дата: 24.11.23 05:29
Оценка:
Здравствуйте, Marty, Вы писали:

M>Здравствуйте!


M>Хочу ссылаться на произвольные куски текста из каких-либо файлов, и, допустим, выдирать их. Обычно это наверное будут исходники, или какие-то другие файлы, ml/json/yaml/etc.


Asciidoc — такое умеет. Он что-то типа Markdown на стероидах. Вот релевантная глава в документации: https://docs.asciidoctor.org/asciidoc/latest/directives/include-tagged-regions/
Отредактировано 24.11.2023 5:34 rosencrantz . Предыдущая версия .
Re[5]: Ссылки на произвольные фрагменты текста/сорцов/etc
От: kov_serg Россия  
Дата: 24.11.23 05:58
Оценка:
Здравствуйте, Marty, Вы писали:

M>Вооот, это уже ближе. Только хочется эти метаданные по возможности указывать прямо в ссылке:

Не якоря позволяют называть ссылки человекочитаемым текстом, плюс возможность использовать разные методы поиска не только regexp, но и разные фильтры, декораторы и т.п. Так же есть возможность кэшировать эти ссылки и проверять на непротиворичивость и т.п. Короче сплошные плюсы. И еще в случае изменений правил в тексте названия ссылок не поменяются, только в файлах метаданных. И еще метаданные могут хранить у кэше версию файла (из скв), дату изменения историю предыдущих фрагментов и многое другое, что внезапно может понадобиться.

M>Примеры:


M>Ссылка на конкретную строчку кода — src/3dp/zip/inflate.c:#123

M>Ссылка на функцию inflate — src/3dp/zip/inflate.c:{size_t inflate(...)} — на параметры нам наплевать, но указываем что это функция
M>Ссылка на функцию inflate (cpp, есть перегрузки) — src/3dp/zip/inflate.c:{size_t inflate(const void*, std::size_t)} — при парсинге и ссылки и сорца — производим нормализацию — выкидываем имена параметров, оставляя только типы, нормализуем пробелы, и тд, и тп
M>Ссылка на функцию inflate, на оператор if внутри неё (cpp, есть перегрузки) — src/3dp/zip/inflate.c:{size_t inflate(const void*, std::size_t)/if (size==0)} — тут, конечно, если кто-то порефакторит и переименует переменную, то ссылка станет битой

Если вы хотите иметь селекторы и их комбинации, то лучше их всё же не вкорячивать в документацию, а вынести в отдельный файл. Потому как в случае изменений в правилах написания селекторов придётся всю документацию переписывать.

M>При этом хочется по возможности обойтись без многословного многострочного описания якорей как отдельных сущностей, и желательно обойтись без всяких регэксов, но, в то же время, если сорцы как-то порефакторят, чтобы этот якорь был максимально непрокисающий, выдерживающий рефакторинги — ну, не глубокие, но хотя бы пробелы/переформатирование выдерживающий.

Так вас никто не ограничивает рассмотрите разные варианты их плюсы и минусы и выберите те что считаете нужными. Но не потому что нравиться, а исходя из поставленных задач.

M>Ну, для разных языков будут разные правила нормализациии, пока меня в основном плюсики и сопутствующее им интересует

Так именно поэтому правила современеи будут меняться, а псевдонимы ссылок нет. Более того можно сделать ссылки сразу на файл с якорем
{% include docuemt.refs %}

text text text (see also)[#ref1]


...
#ref1:
    filename: example1.cpp
    begin with re"..."
    end with re"..."
    contains re"..."
    atleast 5 lines
    limit 20 lines
    format c++ default remove comments
    cache md5=69a5a28a84eff21901b9c90066142582
        line:45-52
...
Re[3]: Ссылки на произвольные фрагменты текста/сорцов/etc
От: mike_rs Россия  
Дата: 24.11.23 07:56
Оценка:
M>Предположим, якорей нет — я пишу доку на сорцы, которые не могу трогать. Например, сорцы тупо чужие, и следующий апдейт перетрёт все мои якоря, если я их сам расставлю

можно указать номер строки и например crc строк выше и ниже нужной. Тогда если просто текст съедет, можно восстановиться. Если сильно поменяют, конечно без вариантов, никак.
Re: Ссылки на произвольные фрагменты текста/сорцов/etc
От: Young yunoshev.ru
Дата: 24.11.23 16:38
Оценка:
Здравствуйте, Marty, Вы писали:

M>Здравствуйте!


M>Хочу ссылаться на произвольные куски текста из каких-либо файлов, и, допустим, выдирать их. Обычно это наверное будут исходники, или какие-то другие файлы, ml/json/yaml/etc.


Парсим исходники, и стороим ATS — далее можно ссылаться прямо на функцию имени или даже патерну (типа функция с тремя параметраи которая возвращает строку) в определенном модуле, или даже там на третий цикл сверху в определененой функции.
Re[2]: Ссылки на произвольные фрагменты текста/сорцов/etc
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 24.11.23 18:17
Оценка:
Здравствуйте, m2user, Вы писали:

M>Пусть читатель доки сам ищет, куда этот код переехал в новых исходниках без всяких fuzzy logic (или не ищет, если его интересует именно старая версия файлов).


Отстой


M>По мере выхода новых версий доки можно при необходимости обновлять ссылки.


Отстой
Маньяк Робокряк колесит по городу
Re: Ссылки на произвольные фрагменты текста/сорцов/etc
От: Alekzander  
Дата: 24.11.23 18:38
Оценка:
Здравствуйте, Marty, Вы писали:

M>Хочу ссылаться на произвольные куски текста из каких-либо файлов, и, допустим, выдирать их. Обычно это наверное будут исходники, или какие-то другие файлы, ml/json/yaml/etc.


M>Допустим, что-то описываю в доке, но дублировать какую-то инфу из сорцов не хочется, хочется подтянуть оттуда прямо в виде фрагмента сорца. Сложность в том, что сорцы меняются, номера строк съезжают, актуальное состояние поддерживать нереально в ссылках на номера строк.


M>Предлагаю пофлеймить, как бы это можно было бы сделать


В общем случае — никак, хотя бы потому, что фрагмент, на который ты сослался, можно копипастнуть, а потом изменить важную деталь. На что после этого должна указывать ссылка?

А вот зная структуру, можно привязаться к чему-то уникальному. Для исходников — ссылаться на функцию, для разметки — на уникальные узлы (те, у которых задан id). Проблема в том, что уникальные узлы в разметке это разновидность синглтона, и поэтому хорошую разметку так не пишут. Поэтому сделать надёжные ссылки на место в разметке на практике не получится.

Если устраивают ненадёжные ссылки, можно запоминать сигнатуру узла (всю мапу "атрибут-значение").
Re: Ссылки на произвольные фрагменты текста/сорцов/etc
От: scf  
Дата: 25.11.23 06:33
Оценка: +1
Здравствуйте, Marty, Вы писали:

M>Предлагаю пофлеймить, как бы это можно было бы сделать


Использовать формат git diff — и с номером строки, и с текстом строки, чтобы её можно было найти при незначительных изменениях файла.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.