Проверка дубликатов меток в проекте



  • Название: 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


Log in to reply