parser

faqfaq
авторыавторы
документациядокументация

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

скачатьскачать

примерыпримеры
форумфорум

Генератор восьмизначного пароля.

Рассмотрена генерация пароля с использованием операторов ^mid и ^random и массива символов.

Макрос engine выдергиват по одному символу (^mid) из переданного ему в качестве параметра множества ($chars).

Номер символа (^length) который нужно достать из множества вычисляется случайным образом (^random).

После символ добавляется в переменную passwd

 @engine[chars]
 ^var[passwd;.;^mid[$chars;^random[^length[$chars]];1]]
 @end

В зависимости от параметра макроса generate, движком (^macro[engine]) будут обработаны те или иные символы (гласные/согласные/цифры)

Если макрос будет вызван без параметров, то допустимыми будут символы из DEFAULT.

 @generate[type] определяются допустимые символы
 ^switch[$type;
        ^case[vowels;^macro[engine;aeiouy]]
        ^case[consonants;^macro[engine;bcdfghklmnprstvxz]]
        ^case[digits;^macro[engine;1234567890]]
        ^case[DEFAULT;^macro[engine;qwertyuiopasdfghjklzxcvbnm1234567890]]
 ]
 @end
 

В макросе main генерируем пароль состоящий из пяти букв и трех цифр.

 @main
 ^for[i;1;5;
        ^rem[  Проверяем на чет/нечет  ]
        ^rsplit[^eval[^var[i]/2;%f];.]

        ^rem[
        	Проверка на четность/нечетность текущий итерации:
	        Если остаток от деления (номер итерации делим на 2) больше нуля, значит число нечетное.
    	    Чередуем гласные и согласные (четная/нечетная итерация) для лучшей запоминаемости пароля.
        ]

        ^if[^item[0]>0; 
                ^macro[generate;consonants]
        ;
                ^macro[generate;vowels]
        ]
 ]

 ^rem[  Добавляем в конец уже готового пароля из 5 букв еще 3 цифры  ]
 ^for[i;1;3;
        ^macro[generate;digits]
 ]
 ^var[passwd]
 @end

Результат работы макроса: defeg354

E-mail: mailbox@parser.ruCopyright © 1997-2001 Студия Артемия Лебедева