Плюхи для облегчения творчества на БАС



  • КОММЕНТАРИИ:

    • Добавить возможность комментировать else, а не только if. Бывает такое, что скрипт огромный и else и if находятся друг от друга на дальнем расстоянии, которое уходит за поле видимости экрана. Если еще и учесть, что там могут быть вложенные условия, то читаемость кода ухудшается в разы, поэтому было бы неплохо дать возможность комментировать и еlse.

    • Сделать систему отображения комментариев более удобочитаемой. Это нагромождение элементов комментирования и в без того маленьком кубике визуально убивает рабочее пространство: номер id, горизонтальная черта коммента, сам коммент. Почему бы не вынести комментарии, как в поля ввода для функций, где есть мини кружочек со знаком вопроса внутри, при наведении на который отображается подробная инфа. Либо что-то другое, более юзабельное, но пока что это смотрится очень громоздко, особенно при плотном скрипте с обильными комментариями, тем более если комментарий и многострочный к тому же.

    УСЛОВИЯ

    • БАС уже пора переходить на более продвинутое использование условных конструкций. Наслоение if после каждого else это крайне неудобно, при том что дочернее условие схематически сдвигается вправо для обозначения иерархии родитель-потомок, а это нарушает визуальный ряд при ограниченном рабочем пространстве. Я предлагаю в else давать возможность задавать условие, так же как это реализовано в if. Можно еще switch-case. P.S.: "выполнить код" не предлагать :)

    ШАБЛОНЫ ВСТАВКИ

    • Даже с приходом системы создания модулей эта потребность не отпала. Мечтаю об этом с архаичных времен пребывания на БАС :) Почему шаблон !== модуль ? Например, более прогрессивные пользователи отказываются от использования "спать" в скрипте, а следовательно, буквально в каждом скрипте приходится реализовывать цикл while, ищущий элементы, однако, если не реализовать timeout по времени, то цикл будет работать бесконечно. Для того, чтобы это осуществить, необходимо получить текущее время перед циклом, а основное действие перенести во внутрь. Ну и как такое реализовать без костылей? Мне лично удалось создать подобный костыльный модуль, но только вкупе с другими действиями. Кто-то знает как начистую реализовать таймаут цикла while в универсальном модуле? Напишите в комментах.


  • @olegtut said in Плюхи для облегчения творчества на БАС:

    Кто-то знает как начистую реализовать таймаут цикла while в универсальном модуле? Напишите в комментах.

    -проверяем доступность элемента
    -если нет, то спим секунду

    в сам цикл while пишем следующее

    [[IS_EXIST]] != true && [[CYCLE_INDEX]] < 60
    

    это если не более минуты на ожидание



  • @Daniel said in Плюхи для облегчения творчества на БАС:

    @olegtut said in Плюхи для облегчения творчества на БАС:

    Кто-то знает как начистую реализовать таймаут цикла while в универсальном модуле? Напишите в комментах.

    -проверяем доступность элемента
    -если нет, то спим секунду
    в сам цикл while пишем следующее
    [[IS_EXIST]] != true && [[CYCLE_INDEX]] < 60

    это если не более минуты на ожидание

    Ну тогда уж по твоей версии правильнее так:

    ![[IS_EXIST]] && [[CYCLE_INDEX]] < 60
    

    Или так:

    [[IS_EXIST]] !== true && [[CYCLE_INDEX]] < 60
    

    Где гарантия что проход по циклу while обязательно равен секунде, с учётом, что и там у меня могут быть условия или код? Например, в твоем коде мы в цикле проверяем отсутствие элемента, но обязательно должно юзаться действие внутри цикла для перепроверки, не появился ли элемент снова, да и перед while придется перепроверить существование элемента, иначе БАС может просто не зайти в цикл. А если таких элементов у меня 20?
    Это косвенный и не совсем точный метод выявления таймаута, наиболее верный - это разница между последним временем и самым первым. Но вот тут и возникает загвоздка для универсального модуля.



  • @olegtut, а в чем проблема? Можно сделать так например:

    var timeout = 5; //минуты
    var maxTime = Date.now() + 60000 * timeout;
    
    while(true){
    	if(Date.now() > maxTime){
    		fail('TIMEOUT');
    	};
    	
    	//действия
    };
    


  • @GhostZ said in Плюхи для облегчения творчества на БАС:

    а в чем проблема? Можно сделать так например:

    @olegtut said in Плюхи для облегчения творчества на БАС:

    P.S.: "выполнить код" не предлагать :)



  • @olegtut, это и действиями можно сделать



  • @olegtut, в модуль Cycle добавил таймаут для всех циклов



  • @olegtut скрытие комментариев нужно, но не по умолчанию, а на выбор. чтобы осталась и текущий вид, ну и как возможно скрыть экшены в if например, также и коммент чтобы можно было скрывать



  • @olegtut said in Плюхи для облегчения творчества на БАС:

    Или так:
    [[IS_EXIST]] !== true && [[CYCLE_INDEX]] < 60

    != not equal x != 8
    !== not equal value or not equal type x !== 5

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

    @olegtut said in Плюхи для облегчения творчества на БАС:

    Где гарантия что проход по циклу while обязательно равен секунде

    тогда вместо секунду добавить код:

    var ms = 100;
    
    await (new Promise((resolve, reject) => {
        setTimeout(function(){
            resolve()
        }, ms);
    }));
    

    и уже задержку можно изменять в ms. Знаний в js тут не надо, для того, чтоб быстро исправить значение задержки. Так же и внутри проекта, один раз вставил и разнес кубик по всем точкам, где он необходим.
    Я вопрос понял так: как при ожидании элемента через цикл while выйти по достижении определенного таймаута?
    Решение выше. И тут максимум добавляется задержка в секунду, если через кубик "спать", либо управляемая задержка, через "выполнить код"



  • @GhostZ said in Плюхи для облегчения творчества на БАС:

    @olegtut, в модуль Cycle добавил таймаут для всех циклов

    огромнейшее спасибо за подобный модуль! Я так понимаю, он сделан нестандартными средствами БАС?



  • @olegtut, модуль использует функции которые уже есть в BAS, поэтому его можно просто закинуть в папку modules и в скомпилированных скриптах всё будет работать, также его можно использовать для создания своих модулей из функций


Log in to reply