[Назад] [Вся нить] [Первые 100 сообщений] [Последние 50 сообщений]
Ответ в нить [Последние 50 сообщений]
Имя
Captcha image [Д]
Animapcha image [@] [?] [Т]
Тема   ( ответ в 1000000)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов GIF, JPG, PNG, WEBP размером до 20480 кБ.
  • Ныне 22 уникальных клиентов. Посмотреть каталог
  • Предельное количество бампов нити: 200
No. 1000000  
Технический пост, резервирующий номера постов для возможного импорта истории из архива.

Можно постить сюда замечания и предложения по оформлению и функционалу сайта.
67 сообщений пропущено. Показаны 50 последних сообщений
No. 1000080  
60898165_p0.webp - (595.17KB, 1150×1533)
1000080
Also, предлагаю подумать, нужна ли нам
Имплементация escape-последовательностей.

(Я-то думаю что нужна.)

Можно так \*, \\.
Но если сделать так,
То пути на Винде писать не удобно.

Можно попробовать взять какой-то
Редко используемый символ юникода.
Например  ̸.  ̸*  ̸ ̸.

Ведь, в конце концов, escape-ить *, %%
И символ форматирования кода нужно не часто.

Что думаете?

No. 1000081  
>>1000080
Может проще сразу на бб-коды перейти? Там и болчно форматировать можно, и проблемы со вложенностью решаются.
No. 1000084  
bb.webp - (19.09KB, 1240×795)
1000084
>>1000081
Проще. BB там, оказывается, уже есть. Но совместимость с другими FBE терять не хотелось бы, да и у FBE-марка есть достоинства: ✶курсив✶ набирается проще, чем {i}курсив{/i}, особенно с русской раскладкой.

Можно сделать галочку bb-only у säge и nöko.

Можно совместить две разметки иначе: `` никак не обрабатывается. По сему терминатоору переключаемся на BB-only, по нему же переключаемся обратно на FBE-марк. Делаем ['] для escape-а в BB-only контексте, попутно делаем [[], чтобы escape-ить BB-коды. Теперь можно запостить всё.
No. 1000085  
kona.png - (1.85KB, 32×26)
1000085
Предлагаю факивон.
No. 1000086  
Предвосхищая вопросы зачем, почему... Никакого заговора или идеи за этим не стоит. Просто попался файл. Вот и всё.
No. 1000087  
10189685_p0.jpg - (254.00KB, 714×1013)
1000087
>>1000085
Кажется где-то на каком-то чане оно уже было такое. Можно повесить, пока ничего лучше не придумывается, думаю.

Хотя, иногда нет ничего перманентнее временного. Есть вероятность, что это будет именно такой случай.
No. 1000088  
>>1000084
>escape-ить BB-коды
По идее же можно {code}{tag}{/code}text{code}{/tag}{/code}. Или у нас рендеринг кода сломан..?
>пути на Винде писать не удобно
У Винды крайне редко * или _ в начале имени файла. Может сработать с правильной регуляркой наверное.
Можно наверное блочный элемент в котором просто отключается стилистическое форматирование, чтобы не мудрить с эскейпами.
No. 1000089  
>>1000079
...какой из них третий? Просто неправильная раскладка?
No. 1000090  
>>1000089
Неправильная раскладка и есть qwerty->йцукен. Тоже непонятно, что там имелось в виду.
No. 1000091  
А вот, мозги заработали. 1) верный 2) транслит 3) неверная раскладка. Ну 2 и не нужен совсем. Тем более что систему транслитерации выбрать ещё надо: https://habr.com/ru/articles/499574/ https://habr.com/ru/articles/265455/ .
No. 1000093  
>>1000091
>Тем более что систему транслитерации выбрать ещё надо
Но она уже стоит как в посте написано выше... Сделал 3.
>>1000085
кк
No. 1000094  
51a3a83815caa4e1edcef0cbc91891d7.jpg - (146.11KB, 1000×1124)
1000094
>>1000088
У нас вроде [code]не реализовано[/code].

> Можно наверное блочный элемент в котором просто отключается стилистическое форматирование, чтобы не мудрить с эскейпами.
Мне это видится как-то так.
formatters = [full_fbe_fmt, bb_only_fmt]
fmt_id = 0
str_result = ""
blocks = valid_unicode_message.split("''")
for block in unicode_message.split("''"):
    str_result += formatters[fmt_id](block)
    fmt_id ^= 1

bb_fmt(text):
   return current_bb_formatting(text).replace("[']", "'").replace("[[]", "[")

Вместо ' символ форматирования кода.

>>1000091
Добавить вариант 3 стоит в любом случае, думаю. Удалять вариант 2 из кода — не знаю, стоит ли.
No. 1000095  
>>1000093
>>1000094
> Добавить вариант 3 стоит в любом случае, думаю.
Только я пост отправил, а оно уже (было) добавлено, лол. Славно.
No. 1000096  
Запилено: проверка хеша файла только в рамках одного треда при постинге.
Сейчас попробую реимпортировать новые псто, оригинал хоть и жив, с доменом там чёрти что, я ждал достаточно долго.

>>1000094
Попробую в воскресенье-понедельник.
No. 1000097  
>>1000096
Done

>>838
Done

Спойлеры/удалённое потыкаю завтра.
No. 1000098  
>>1000086
>Просто попался файл.
Был он фавиконом на каком-то анимушном недваче, или что-то такое. Но это слишком сильное обвинение чтобы им просто так бросаться, да и какая на самом деле разница.
No. 1000099  
>>1000098
>Был он
*мне кажется/насколько я помню, был он
No. 1000100  
>>1000093
И правда работает, спасибо, спасение.
No. 1000101  
>>1000097
181 спойлер и 1 удалённая картинка. Job's done.
No. 1000102  
В капче не работает "б", то есть ",".
No. 1000103  
>>1000102
Точнее, не работает ",", а "б"-то работает.
No. 1000106  
>>1000102
Fixed
No. 1000110  
Favicon kitaaa---!!
No. 1000134  
it_works.webp - (40.46KB, 868×691)
1000134
>>1000088
С escape-ами там, как оказалось, сравнительно просто всё. Написал вот через '~' escaping. '~' на что-то влияет только перед символами разметки (`|*|%|^|[) или в объялении пункта списка \n\r[#✶+-]. Может escape-ить сам себя, но только, когда это имеет смысл.

А вот с блоками, их вложенностями и приоритетами, кажется, несколько сложнее. Но подумаю. Может, по удвоенному `-у сделаю.
No. 1000135  
escapes.webp - (37.89KB, 1715×437)
1000135
Архив с кодом в картинке.
No. 1000136  
>>1000135
Спасибо, принял пока так.
Я пытаюсь переписать парсер на нормальную, не-регексповую обработку, но это хорошо если на неделе. Могу скинуть черновик.
No. 1000137  
j3zBw2bq.png - (3.86MB, 1856×1280)
1000137
>>1000136
Скинь.

Там даже если с регулярками, всё равно дорабатывать надо: не так просто оказалось, возможность escape-ить ~ неограниченное количество раз всё-таки нужна. Из-за этого, например, strtr-ом для ~` не обойтись, нужны будут изменения в callback-ах кода/латеха, а регулярка для парсинга кода будет выглядеть как-то (^|\G|[^~])(~~)*\K`([^~`]|~.)+?` так.
No. 1000138  
>>1000137
function BBCode($string){
$lines = explode(PHP_EOL,$string);
$in_ul = false;
$in_ol = false;
$block = [];
foreach($lines as $line) {
if (preg_match('^[\-\*] ([^\r\n])+)')){
if ($in_ol){
$in_ol = false;
$output .= '</ol>';
}
if (!$in_ul){
$in_ul = true;
if ($block){
$output .= apply_format($block);
$block = [];
}
$output .= '<ul>';
}
$output .= '<li>'.apply_format([$matches[1]]).'</li>';
}
else if (preg_match('^[+\#] ([^\r\n])+)')){
if ($in_ul){
$in_ul = false;
$output .= '</ul>';
}
if (!$in_ol){
$in_ol = true;
if ($block){
$output .= apply_format($block);
$block = [];
}
$output .= '<ol>';
}
$output .= '<li>'.apply_format([$matches[1]])."</li>";
}
else{
if ($in_ol){
$in_ol = false;
$output .= '</ol>';
}
if ($in_ul){
$in_ul = false;
$output .= '</ul>';
}
array_push($block, $line);
}
}
$output .= apply_format($block);
return $output;
}

function apply_format($lines){
$patterns = [
['\[code]', '\[/code]', '<span class="inline-code">', '</span>', 1, inline_code_callback],
['\', '\', '<b>', '</b>', 1],
['\', '\', '<i>', '</i>', 1],
['\', '\', '<span style="text-decoration: underline;">', '</span>', 1],
['\', '\', '<strike>', '</strike>', 1],
['\', '\', '<span style="font-family: Mona,\'MS PGothic\' !important;">', '</span>', 1],
['\', '\', '<span class="spoiler">', '</span>', 1],
['\\', '\\', '<b>', '</b>', 0],
['\', '\', '<i>', '</i>', 0],
['', '', '<span class="spoiler">', '</span>', 0],
['\^\^', '\^\^', '<strike>', '</strike>', 0],
['', '', '<span class="inline-code">', '</span>', 0],

];
$stack = [];
$pattern = "\n";
foreach($patterns as $pattern){
$pattern .= "|$pattern[1]";
}
foreach($patterns as $pattern){
if ($pattern[1] != $pattern[0]){
$pattern .= "|$pattern[0]";
}
}
$pattern = "((?!~)~|)~+~~?($pattern)";
foreach($lines as $line) {
preg_match($pattern, $line, $matches, PREG_OFFSET_CAPTURE);
aray_unshift($matches)
foreach($matches as $match){
;
}
}

}
Разбиваем текст на строки, в каждой строке ищем начала и концы тегов. Если тег закрывающий, пытаемся закрыть последний тег, если совпадает. Если тег закрывающий, пытаемся закрыть, если последний открытый тег совпадает. Если открывающий, запоминаем позицию, кладём предыдущую подстроку на стек, и идём по текущей (можно рекурсией). На конце строки дропаем незакрытые инлайны, на конце блока дропаем вообще всё. В коде игнорируем всё кроме закрытия кода (+ надо перебивать : для ссылок). Списки считаются как отдельные блоки исключительно инлайнов.
preg_match не может в /g, поэтому придётся ещё в цикл оборачивать.
No. 1000139  
>>1000138
Ах, да, оно так не работает.
https://gist.github.com/yakui-lover/616e8bad552395cd031453c05e2eb596
No. 1000146  
Jus use pastebin clone, Luke.
No. 1000147  
code_zip.webp - (73.71KB, 966×737)
1000147
https://pastebin.com/kf3a4kyu
Попробовал сделать без разбиения по строкам.
Вышло громоздко, хотя вроде работает.

Проходимся по всем тегам типа ~~~~~~^^ или ~~~~~~[/b], смотрим, применимо или не применимо в текущем контексте, если применимо, то копируем ещё не скопированный текст до тега, и если не за-escape'лено, то либо открываем блок, либо закрываем блоки до нужного по стеку. Код escape'ит всё, кроме терминаторов кода и escape'ов к ним. Списки более-менее наравне с остальными тегами, хотя обрабатываются несколько отдельно.
No. 1000148  
Допустимо ли? >>/b/1000899
No. 1000149  
f26fe872ae6833900d0b5234f24f1129.jpg - (876.64KB, 1217×2048)
1000149
>>1000148
Кажется, не хентайнее этого эпизода прилии
https://gelbooru.com/index.php?page=post&s=list&tags=md5%3a267af70a53630db7e1de70de943530bd
Пусть это и версия, где пар отредактирован.
No. 1000150  
>>1000148
Под спойлером должно быть нормально.
В худшем случае я задумаюсь о другом хостере картинок.

>>1000147
Ну, давайте пробовать.
test
Скорее всего надо стили править если не инлайн-спаном делать.

Я правильно читаю, что вмарк так тоже мультилайн становится? Я думал как раз его оставить действующим только внутри строки. И ws нигде не используется. Но на глас вроде всё верно.
No. 1000152  
83028242_p2.jpg - (2.63MB, 6942×4848)
1000152
>>1000150
> Я правильно читаю, что вмарк так тоже мультилайн становится?
Да, *, **, ^^, `, %% все multiline-овые. Но так-то они multiline-овыми и раньше были же. Чуть усложнив код, можно коллапсить упомянутую вакабу по \r\n, нужно поменять проверки в начале for-а и поменять содержимое if-а для \r\n завершения списка. Но пока не могу понять смысл идеи. Разве чтобы можно было одну * в начале строки поставить, и оно само закрылось. Но тогда если кто-то по привычке попробует через * * сделать несколько линий курсивом, у него не получится, и ему на [i] и [/i] придётся менять.

Думаю, можно добвать блок ``some text``, где символы форматирования будут игнорироваться:
  • В array c описанием mark-ов добавить '``' => ['``', '', ''], и '[nofmt]' => ['\[nofmt]|\[\/nofmt]', '', '', '``', '[/nofmt]'],;
  • В if, где $states['`'] && $mark != '`' || $states['[code]'] && $mark != '[/code]', добавть ещё две проверки.

> И ws нигде не используется
Wide [character] strings? Кажется, там достаточно обычных ASCIIшных функций, без mb и w префиксов.
No. 1000153  
>>1000152
А, я не ответил
>Wide [character] strings?
Нет, массив с таким именем.
>Но пока не могу понять смысл идеи.
Я думал вакаба-марк сделать только инлайном, потому что оно так работает на самой Вакабе. Но если ФБЕ оно мультилайн, то лучше совместимость, да.
No. 1000154  
Справку после этого обновите, господа. Ничего не понятно.
No. 1000162  
1527591043872.webp - (334.25KB, 680×1554)
1000162
>>1000153
> Нет, массив с таким именем.
Не используется, можно спокойно из кода убрать. Для вакабамарков завёл, наверное.

>>1000154
Всё почти также. Основное изменение в том, что тильда (~) теперь символ разметки, который escape-ит другие тэги разметки (*, %%, [u] и так далее). Перед тэгом разметки, тильда может escape-ить сама себя.
  • w~ww~~www~~~ ⟶ w~ww~~www~~~
  • 2~**4==4~**2 ⟶ 2**4==4**2
  • *uwu~~* ⟶ uwu~

Справку напишу, когда формат будет фиксирован. Пока же есть некоторые проблемы.
  1. Сейчас ~ escape-ит именно тэг, не символ, что в случае с %%, ** и ^^ кое-что делает невозможным. Например, невозможно процентами заспоилерить "146%";
  2. В отличие от обычного FBE, что-нибудь типа "****" обработается, на выводе образуя HTML-элементы с пустым содержимым. Не знаю, нужно ли фиксить.

No. 1000163  
> Для вакабамарков завёл, наверное.
И не наверное, а таки именно для них, судя по $ws[$k] = $pattern; в foreach($patterns as $k => $pattern){
No. 1000165  
function BBCode($string){
    $regex = '$(?:^|\G|[^~])\K~*(?:';
    $patterns = [
        "\r\n- " => ['\r\n\- ', '<li>', '</li>', '<ul>', '</ul>'],
        "\r\n* " => ['\r\n\* ', '<li>', '</li>', '<ul>', '</ul>'],
        "\r\n+ " => ['\r\n\+ ', '<li>', '</li>', '<ol>', '</ol>'],
        "\r\n# " => ['\r\n\# ', '<li>', '</li>', '<ol>', '</ol>'],
        '[nofmt]' => ['\[nofmt]|\[\/nofmt]', '', '', '``', '[/nofmt]'],
        '[code]' => ['\[code]|\[\/code]', '<code>', '</code>', '`', '[/code]'],
        '[b]' => ['\[b]|\[\/b]', '<b>', '</b>', '**', '[/b]'],
        '[i]' => ['\[i]|\[\/i]', '<i>', '</i>', '*', '[/i]'],
        '[u]' => ['\[u]|\[\/u]', '<span style="text-decoration: underline;">', '</span>', '', '[/u]'],
        '[s]' => ['\[s]|\[\/s]', '<strike>', '</strike>', '^^', '[/s]'],
        '[aa]' => ['\[aa]|\[\/aa]', '<span style="font-family: Mona,\'MS PGothic\' !important;">', '</span>', '', '[/aa]'],
        '[spoiler]' => ['\[spoiler]|\[\/spoiler]', '<span class="spoiler">', '</span>', '%%', '[/spoiler]'],
        '``' => ['``', '', ''],
        '`' => ['`', '<code>', '</code>'],
        '**' => ['\*\*', '<b>', '</b>'],
        '*' => ['\*', '<i>', '</i>'],
        '%%' =>['%%', '<span class="spoiler">', '</span>'],
        '^^' => ['\^\^', '<strike>', '</strike>'],
    ];
    $bbs = array(); $bb_cl_to_op = array(); $lists = array();
    $bb_to_w = array(); $w_to_bb = array();
    $states = array();
    $in_list = false;
    foreach($patterns as $k => $pattern){
        if($k[0] == '['){
            $bbs[$k] = $pattern;
            $bb_cl_to_op[$pattern[4]] = $k;
            if($pattern[3] != ''){
                $bb_to_w[$k] = $pattern[3];
                $w_to_bb[$pattern[3]] = $k;
            }
        }
        else if($k[0] == "\r")
            $lists[$k] = $pattern;
        $states[$k] = false;
        $regex .= $pattern[0] . '|';
    }
    $regex .= '\r\n)$is';
    $mark_stack = array();
    $result = '';
    // handle when it starts from a list declaration
    if(preg_match('/^~*[\*|\+|\-|\#] /', $string) == 1){
        if($string[0] == '~')
            $string = substr($string, 1);
        else
            $string = "\r\n" . $string;
    }
    $length = strlen($string);
    $parsing_offset = 0;
    $copy_offset = 0;
for($next_parsing_offset = 0; $parsing_offset < $length; $parsing_offset = $next_parsing_offset){
    if(!preg_match($regex, $string, $match, PREG_OFFSET_CAPTURE, $parsing_offset))
        break;
    $match = $match[0];
    $match_length = strlen($match[0]);
    $next_parsing_offset = $match[1] + $match_length;
    $rtilda_pos = strrpos($match[0], '~');
    $mark = $rtilda_pos === false ? $match[0] : substr($match[0], $rtilda_pos + 1);
    // continue if the mark is not applicable in the current context
    if(!$in_list && $mark == "\r\n")
        continue;
    if($states['``'] && $mark != '``' || $states['[nofmt]'] && $mark != '[/nofmt]')
        continue;
    if($states['`'] && $mark != '`' || $states['[code]'] && $mark != '[/code]')
        continue;
    if(array_key_exists($mark, $w_to_bb) && $states[$w_to_bb[$mark]])
        continue;
    if(array_key_exists($mark, $bb_to_w) && $states[$bb_to_w[$mark]])
        continue;
    if(array_key_exists($mark, $bb_cl_to_op) && !$states[$bb_cl_to_op[$mark]])
        continue;
    if(array_key_exists($mark, $bbs) && $states[$mark])
        continue;
    if($in_list && array_key_exists($mark, $lists) && !$states[$mark])
        continue;
    // the mark is applicable, copy whatever was before and half the tildas
    $tilda_len = $rtilda_pos === false ? 0 : $rtilda_pos + 1;
    $to_copy = substr($string, $copy_offset, $match[1] + (int)($tilda_len / 2) - $copy_offset);
    if($states['`'] || $states['[code]'])
        $to_copy = strtr($to_copy, array("\t" => '&nbsp;&nbsp;&nbsp;&nbsp;', ' ' => '&nbsp;'));
    $result .= $to_copy;
    // if the mark is being escaped, set the offsets accordingly and move on
    // continue parsing from the second symbol of the current tag
    if(($tilda_len % 2) === 1){
        $result .= $match[0][$tilda_len];
        $copy_offset = $match[1] + $tilda_len + 1;
        $next_parsing_offset = $match[1] + $tilda_len + 1;
        continue;
    }
    // otherwise, handling the mark as active
    $copy_offset = $match[1] + $match_length;
    // first, handle the list marks, as they may result in both opening and closure
    if(array_key_exists($mark, $lists)){
        if(!$in_list){
            $result .= $lists[$mark][3];
            $in_list = true;
        }
        if($states[$mark]){
            do{
                $c_st = array_pop($mark_stack);
                $result.= $patterns[$c_st][2];
                $states[$c_st] = false;
            } while($c_st != $mark);
        }
        $result .= $lists[$mark][1];
        array_push($mark_stack, $mark);
        $states[$mark] = true;
        continue;
    }
    if($mark == "\r\n"){
        do{
            $c_st = array_pop($mark_stack);
            $result.= $patterns[$c_st][2];
            $states[$c_st] = false;
        } while(!array_key_exists($c_st, $lists));
        $result.= $lists[$c_st][4];
        $in_list = false;
        continue;
    }
    // now, if it is a non-list opening
    if(array_key_exists($mark, $states) && $states[$mark] == false){
        $result .= $patterns[$mark][1];
        $states[$mark] = true;
        array_push($mark_stack, $mark);
        continue;
    }
    // if is's a closure
    $till = array_key_exists($mark, $bb_cl_to_op) ? $bb_cl_to_op[$mark] : $mark;
    do {
        $c_st = array_pop($mark_stack);
        $result.= $patterns[$c_st][2];
        $states[$c_st] = false;
        if(array_key_exists($c_st, $lists)){
            $result.= $patterns[$c_st][4];
            $in_list = false;
            }
    } while($mark_stack && $till != $c_st);
}
    // finalize if needed
    if($copy_offset < $length){
        $to_copy = substr($string, $copy_offset, $length - $copy_offset);
        if($states['`'] || $states['[code]'])
            $to_copy = strtr($to_copy, array("\t" => '&nbsp;&nbsp;&nbsp;&nbsp;', ' ' => '&nbsp;'));
        $result .= $to_copy;
    }
    while($mark_stack){
        $c_st = array_pop($mark_stack);
        $result.= $patterns[$c_st][2];
        $states[$c_st] = false;
        if(array_key_exists($c_st, $lists)){
            $result.= $patterns[$c_st][4];
            $in_list = false;
        }
    }
    return $result;
}

No. 1000166  
^^.webp - (8.79KB, 444×440)
1000166
>>1000165
Собственно, новая версия, где ~ escape'ит только первый символ тэга. То бишь, если перед тэгом поставить тильду, то parse'инг продолжается со второго его символа, если таковой есть. Также добавлены `` и [nofmt] — блоки, где отключается форматирование, чтобы с тильда-escape'ами в сложных случаях не возиться.
No. 1000170  
Добавить раздел "Разметка" в news.php. Форматирование через символ «_» на данный момент не поддерживается. поменять на Более полная информация о разметке находится тут.
mark.html ниже кинуть в inc/pages.

<div class="content">
<h2><div class="newssub">Wakaba-mark</div><div class="permalink">&nbsp;</div></h2>
<table border=1><tr><th>Ввод</th><th>Вывод</th></tr>
<tr><td>**полужирное начертание**</td><td><b>полужирное начертание</b></td></tr>
<tr><td>*курсивное начертание*</td><td><i>курсивное начертание</i></td></tr>
<tr><td>`` (*-*) без форматирования ^^_^^ ``</td><td>`` (*-*) без форматирования ^^_^^ ``</td></tr>
<tr><td>`int i = 2 * 4; \\ код`</td><td><code>int i = 2 * 4;\\ код</code></td></tr>
<tr><td>%%спойлер%%</td><td><span class="spoiler">спойлер</span></td></tr>
<tr><td>^^зачёркивание^^</td><td><s>зачёркивание</s></td></tr>
<tr><td>`` (*-*) без форматирования ^^_^^ ``</td><td>`` (*-*) без форматирования ^^_^^ ``</td></tr>
</table>

<h2><div class="newssub">BBCode</div><div class="permalink">&nbsp;</div></h2>
<table border=1><tr><th>Ввод</th><th>Вывод</th></tr>
<tr><td>[u]подчёркивание[/u]</td><td><span style="text-decoration: underline;">подчёркивание</span></td></tr>
<tr><td>[aa]Mona,'MS PGothic'[/aa]</td><td><span style="font-family: Mona,'MS PGothic' !important;">Mona,'MS PGothic'</span></td></tr>
<tr><td>[b]полужирное начертание[/b]</td><td><b>полужирное начертание</b></td></tr>
<tr><td>[i]курсивное начертание[/i]</td><td><i>курсивное начертание</i></td></tr>
<tr><td>[code]int i = 2 * 4; \\ код[/code]</td><td><code>int i = 2 * 4; \\ код</code></td></tr>
<tr><td>[spoiler]спойлер[/spoiler]</td><td><span class="spoiler">спойлер</span></td></tr>
<tr><td>[s]зачёркивание[/s]</td><td><s>зачёркивание</s></td></tr>
<tr><td>[nofmt]без форматирования ^^_^^ [/nofmt]</td><td>без форматирования ^^_^^ </td></tr>
</table>

<h2><div class="newssub">Cписки</div><div class="permalink">&nbsp;</div></h2>
<table border=1><tr><th>Ввод</th><th>Вывод</th></tr>
<tr><td>- Первый пункт<br>- Второй пункт</td><td><ul><li> Первый пункт</li><li> Второй пункт</li></ul></td></tr>
<tr><td>* Первый пункт<br>* Второй пункт</td><td><ul><li> Первый пункт</li><li> Второй пункт</li></ul></td></tr>
<tr><td>+ Первый элемент<br>+ Второй элемент</td><td><ol><li> Первый элемент</li><li> Второй элемент</li></ol></td></tr>
<tr><td># Первый элемент<br># Второй элемент</td><td><ol><li> Первый элемент</li><li> Второй элемент</li></ol></td></tr>
</table>

<h2><div class="newssub">Escape-символ ~</div><div class="permalink">&nbsp;</div></h2>
<table border=1><tr><th>Ввод</th><th>Вывод</th></tr>
<tr><td>2 ~* 2 = 4</td><td>2 * 2 = 4</td></tr>
<tr><td>uwa~~</td><td>uwa~~</td></tr>
<tr><td>*uwa~~*</td><td><i>uwa~</i></td></tr>
<tr><td>~^^_~^^</td><td>^^_^^</td></tr>
<tr><td>%%146~%%%</td><td><span class="spoiler">146%</span></td></tr>
<tr><td>~**курсив~**</td><td>*<i>курсив*</i></td></tr>
<tr><td>- Первый пункт~ <br>- Тоже первый пункт~<br>Тоже</td>
    <td><ul><li> Первый пункт<br>- Тоже первый пункт<br>Тоже</li></ul></td></tr>
<tr><td>~- Не пункт списка</td>
    <td>- Не пункт списка</td></tr>
</table>

Способ избежать объявления списка, указанный в последней строке, работает только в начале сообщения.

<h2><div class="newssub">Ссылки и цитирование</div><div class="permalink">&nbsp;</div></h2>
<table border=1><tr><th>Ввод</th><th>Вывод</th></tr>
<tr><td>>>180000</td><td><a href="#180000">>>180000</a></td></tr>
<tr><td>>>/b/188888</td><td><a href="#b180000">>>/b/188888</a></td></tr>
<tr><td>>цитата</td><td><blockquote>>цитата</blockquote></td></tr>
<tr><td>
http://example.org</td><td><a href="http://example.org">http://example.org</a></td></tr>
<tr><td>
https://example.org</td><td><a href="https://example.org">https://example.org</a></td></tr>
<tr><td>
ftp://example.org</td><td><a href="ftp://example.org">ftp://example.org</a></td></tr>
</table>


<h2><div class="newssub">Особенности работы</div><div class="permalink">&nbsp;</div></h2>
<table border=1><tr><th>Отправляемое сообщение</th><th>Вывод</th></tr>
<tr><td>2 * 2 = 4, курсив</td><td>2 <i> 2 = 4, курсив</i></td></tr>
<tr><td>[b]*полужирный курсив</td><td><b><i>полужирный курсив</i></b></td></tr>
<tr><td>**[i]полужирный курсив**[/i]</td><td><b><i>[i]полужирный курсив</i></b>[/i]</td></tr>
<tr><td>*[i]курсив[/i]*</td><td><i>[i]курсив[/i]</i></td></tr>
<tr><td>[i][i]курсив*[/i]</td><td><i>[i]курсив*</i></td></tr>
<tr><td>[/i]~[/i]~~[/i]</td><td>[/i]~[/i]~~[/i]</td></tr>
<tr><td>[i]~*~[i]курсив[/i]</td><td><i>~*~[i]курсив</i></td></tr>
</table>

</div><br>

No. 1000171  
>>1000170
Добавлено с изменениями: ":" заменяется на "& #58;" чтобы отключить ссылки в коде/noformat.
No. 1000174  
in.webp - (17.18KB, 886×383)
1000174
>>1000171
Yatta!

BTW, у меня опечатки в markdown.html. Простите
# Там две одинаковых строки "`` (*-*) без форматирования ^^_^^ ``", наверное, стоит оставить последнюю;
# У обеих тех строк в поле столбца "Вывод" слева и справа стоит лишний "``";
# Под заголовком "Особенности работы" в столбце "Вывод" стоит лишний "[i]" в поле [i]полужирный курсив[/i]
No. 1000175  
num_list.webp - (45.43KB, 1870×326)
1000175
>>1000174
> #
Странно. УМВР.
No. 1000178  
>>1000175
Should be fixed. Я убрал часть переменных в continue-проверках.
No. 1000180  
>>1000178
Теперь работает. Проезд тоже оплачивается.

> `` (*-*) без форматирования ^^_^^ ``
У левого и правого "``" стоит пробел. Либо эти пробелы убрать, либо в "Вывод" добавить "&nbsp;". Похожая ситуация с "[/nofmt]".
No. 1000182  
Ну чтож, дополнительные пожелания по капче ещё есть, или в /b/ тоже включать как есть?
No. 1000183  
>>1000182
Включай.
Есть там одна картинка, где дЪвочка совсем далеко изображена сбоку и лица не видать.

Где-то в 2022-ом году в /b/ 410-го был пост в залоченном треде с пожеланиями по фапче. Если грабёр такую метаинформацию сохраняет, о залоченности, можно было бы найти...
Проскроллил тут 14 140 картинок из /b/ 410-го и немного сдался.
No. 1000184  
>>1000183
Могу разве текстопоиск дать.
Закрытость треда можно увидеть только на репарсинге, а граббер его только для автомодерации делает. Можно было бы расширить, да.
Удалить сообщение []
Пароль  
[Mod]