Стартовая страница

# shaos to revoltech @ Re: Разбор idec №2 @ idec.talks 01/11/24 06:19

Вот чего я родил - всем сестра'м по серьга'м как говорится :)

====
elseif ($opts[0] == 'u' and $opts[1] == 'e') {
$work_options=array_slice($opts, 2);
$aecho = [];
$aoff = [];
$alen = [];
$lim = 0;
$count = 0;
foreach ($work_options as $work) {
if(is_numeric($work)) {
if($lim >= 0) die("error: unexpected single number");
$lim = intval($work);
if($lim < 0) die("error: unexpected negative number");
} elseif(strpos($work,".")!==false) {
if($lim < 0) die("error: missing lim value");
array_push($aecho,$work);
if($lim > 0) {
array_push($aoff,-$lim);
array_push($alen,$lim);
} else {
array_push($aoff,NULL);
array_push($alen,NULL);
}
$count = $count + 1;
} elseif(strpos($work,":")!==false || strcmp($work,"all")==0 || strcmp($work,"last")==0) {
if($lim != 0) die("error: slice can not be used with lim");
if(strcmp($work,"all")==0) {
$a = 0;
$b = 0;
} elseif(strcmp($work,"last")==0) {
$a = -1;
$b = 1;
} else {
$numbers=explode(":", $work);
$a = intval($numbers[0]);
$b = intval($numbers[1]);
}
for($i=$count-1;$i>=0;$i--) {
if(!is_null($aoff[$i])) break;
$aoff[$i] = $a;
$alen[$i] = $b;
}
} elseif(strcmp($work,"lim")==0) {
$lim = -1;
} else die("error: wrong arguments");
}
$buffer = "";
for($i=0;$i<$count;$i++) {
$echo = $aecho[$i];
if($aoff[$i]==0 && $alen[$i]==0) {
$slice = $access->getMsgList($echo); // NULL, NULL
} else {
$slice = $access->getMsgList($echo, $aoff[$i], $alen[$i]);
}
if (count($slice) > 0) {
$buffer.=$echo."\n".implode("\n", $slice)."\n";
} else {
$buffer.=$echo."\n";
}
}
echo $buffer;
}
====


тут тебе и стандартный ii, и со слайсами в конце [-]N:M как в IDEC, и со слайсами внутри (между именами эх) как я предлагал ранее, и можно писать last вместо -1:1, и можно писать all внутри если в конце стоит last или какие другие нумера (типа /u/e/echo.1/all/echo.2/echo.3/last если надо только последнее сообщение для последних двух эх и всё для первой), и можно после каждой эхи писать, как предлагал revoltech, и даже lim/N в начале пройдёт как у Ромы (правда при этом уже нельзя будет слайсы воткнуть), а вот от msgid и далее делать неохота ибо оно криво будет работать т.к. порядок может быть чуть разный на разных нодах...



# revoltech to shaos @ Re: Разбор idec №2 @ idec.talks 01/11/24 06:40

shaos> Вот чего я родил

«...А глянешь — мамочка моя! Эт чё? О чём? А набуя?» ©
Не, прочесть-то можно (хотя да, этот код напомнил, почему я пых терпеть не могу), но вот это как раз тот уровень сложности, от которого я стараюсь держаться подальше. Могу в отдельном сабже сделать разбор сего шындевра. Но у меня в ноде такого не будет точно.

shaos> а вот от msgid и далее делать неохота ибо оно криво будет работать т.к. порядок может быть чуть разный на разных нодах...

Такого, кстати, быть не должно.