Проверка дубликатов меток в проекте
-
Название: checkDuplicates
Версия: 1.0
Данные: checkDuplicates.zip
Исходник: Функция модуля была создана руками на js, затем переведена в модуль с помощью BAS.
Согласие на добавление модуля в BAS: Да.
Описание: Модуль содержит одно действие, которое проверяет наличие дублирующих названий меток в текущем проекте. Действие возвращает список дублирующих имён, если дубликатов нет, то в переменной будет пустой список.
В модуле нет описания и примеров использования, выкладываю модуль как есть. Если у кого то будет желание и время что бы дополнить модуль, буду рад.
-
надо теги еще добавить - магия, не пойму что происходит, скрипт не работает, что за черт, почему бас не делает что я хочу, как окрапить системник святой водой :)
-
немного не честно оформлено, уж извини - Предположим я не супер прогер. А хочу изменить простую вещь - скажем вывести в лог с цветом - тут вроде не сложно, но копаться в js, пересоздавать модуль ... ну это уже посложнее. И не хочу я еще 100500 действий создавать, а так просто один кубик.
Я не бузю, и для меня это не сложно, но было бы удобнее в исходниках просто приложить проект.
ну я не придираюсь, но в правилах оформления модуля вроде так.
Короче, не парься, я и этому рад. Спасибо.
-
@DuckDuck said in Проверка дубликатов меток в проекте:
немного не честно оформлено, уж извини - Предположим я не супер прогер. А хочу изменить простую вещь - скажем вывести в лог с цветом - тут вроде не сложно, но копаться в js, пересоздавать модуль ... ну это уже посложнее. И не хочу я еще 100500 действий создавать, а так просто один кубик.
Я не бузю, и для меня это не сложно, но было бы удобнее в исходниках просто приложить проект.
ну я не придираюсь, но в правилах оформления модуля вроде так.
Короче, не парься, я и этому рад. Спасибо.Эмм, я же написал, что функция создана руками, в проекте небыло кубиков BAS кроме одного "выполнить код" с кодом
var project = native("filesystem", "readfile", JSON.stringify({ value: project_path(), base64: false, from: 0, to: 0 })); const regex = /_set_goto_label\("(.*?)"\)\!/g; const matches = []; var match; while ((match = regex.exec(project)) !== null) { matches.push(match[1]); } var duplicates = []; for (var i = 0; i < matches.length; i++) { for (var j = i + 1; j < matches.length; j++) { if (matches[i] === matches[j] && !duplicates.some(function (el) { return el === matches[i] })) { duplicates.push(matches[i]); } } } _function_return(duplicates);
Да и это нужно было только что бы сгенерировать модуль, а не создавать все файлы самостоятельно.
-
@Fox погоди а как ты создавал модуль ? Ну я не очень опытен в этом вопросе - там вроде надо сделать функцию, и из нее сделать модуль. брр наверное я сам процесс не до конца понял.
-
@DuckDuck said in Проверка дубликатов меток в проекте:
@Fox погоди а как ты создавал модуль ? Ну я не очень опытен в этом вопросе - там вроде надо сделать функцию, и из нее сделать модуль. брр наверное я сам процесс не до конца понял.
Я в пустом проекте BAS создал функцию "checkDuplicates", поместил в неё действие "Выполнить код" с кодом, который приложил выше и с помощью менеджера модулей создал модуль. Всё.
Вот гифка для наглядности:
-
@Fox Простите если не в тему. А я верно понимаю - если в трех скриптах есть повторяющийся код [у меня в виде функции но в каждом скрипте отдельно] (а я когда вношу правки то вношу в каждый скрипт поочередно), то можно сделать отдельный скрипт как Вы показали на гифке, сделать это модулем и поправляя код в модуле - он будет "обновляться" в каждом скрипте?*
-
@kuzkuz Лучше сделать из этой функции модуль и просто обновлять его по надобности в каждом проекте
-
@m4zuper said in Проверка дубликатов меток в проекте:
@kuzkuz Лучше сделать из этой функции модуль и просто обновлять его по надобности в каждом проекте
Ну да, я вот про это и спросил.
можно сделать отдельный скрипт как Вы показали на гифке, сделать это модулем и поправляя код в модуле - он будет "обновляться" в каждом скрипте?*
-
@kuzkuz said in Проверка дубликатов меток в проекте:
@Fox Простите если не в тему. А я верно понимаю - если в трех скриптах есть повторяющийся код [у меня в виде функции но в каждом скрипте отдельно] (а я когда вношу правки то вношу в каждый скрипт поочередно), то можно сделать отдельный скрипт как Вы показали на гифке, сделать это модулем и поправляя код в модуле - он будет "обновляться" в каждом скрипте?*
Нет, не будет. Скорее всего вам придётся обновлять действия из вашего модуля после изменений самого модуля. Плюс не забывайте про проблему id инпутов для ввода данных https://community.bablosoft.com/topic/14537/вопросы-по-модулям-bas
Это сработает, если будет менятся только внутрянка модуля (файл engine.js), без добавлений новых действий, и вы будете запускать проект в BAS с установленным одноимённым модулем.
-
@Fox я так полагаю надо просто версию модуля в этом случае менять, и контролировать версию
-
у Фокса бинго - 14444 постов - красивое число :) сорян за флуд :)
-
@DuckDuck said in Проверка дубликатов меток в проекте:
у Фокса бинго - 14444 постов - красивое число :) сорян за флуд :)
Что бы не портить цифру этим постом удалил старое сообщение
:D