LINUX.ORG.RU
ФорумTalks

bb2html — написанная на коленке утилита для конвертации из BBcode в Html

 ,


0

2

Здравствуйте. Я вот от нечего делать написал на коленке утилиту.

Внимание: утилита написана на коленке и там есть баги!

Что она умеет:

  • жирный, наклонный, подчеркнутый, зачеркнутый текст
  • списки
  • картинки!!!
  • обычный и вынесенный варианты кода
  • ссылочки, куда же без них!
  • надстрочный и подстрочный тексты.

Ну, кажется, все перечислил.

Прога:

#!/usr/bin/env bash
file="$2"
if [[ ! -f $file ]]; then
    echo "Документ $1 не найден, создайте его и напишите нужный код либо исправьте название, если это опечатка"
    exit 1
fi

echo "<!DOCTYPE html>
<html lang=ru>
<head><meta content=\"text/html; charset=utf-8\"><title>$3</title></head>
<body style='font-family:verdana,garamond,sans;font-size:16px'>" > $file
cat $1 >> $file

sed -i "s:\[b\]:<strong>:g" $file
sed -i "s:\[/b\]:</strong>:g" $file
sed -i "s:\[i\]:<em>:g" $file
sed -i "s:\[/i\]:</em>:g" $file
sed -i "s:\[u\]:<u>:g" $file
sed -i "s:\[/u\]:</u>:g" $file
sed -i "s:\[s\]:<s>:g" $file
sed -i "s:\[/s\]:</s>:g" $file
sed -i "s:\[sup\]:<sup>:g" $file
sed -i "s:\[/sup\]:</sup>:g" $file
sed -i "s:\[sub\]:<sub>:g" $file
sed -i "s:\[/sub\]:</sub>:g" $file
sed -i "s:\[list\]:<ul>:g" $file
sed -i "s:\[/list\]:</ul>:g" $file
sed -i "s:\[numlist\]:<ol>:g" $file
sed -i "s:\[/numlist\]:</ol>:g" $file
sed -i "s:\[\*\]:<li/>:g" $file
sed -i "s:\[br\]:<br/>:g" $file
sed -i "s:\[code\]:<br/> <pre>:g" $file
sed -i "s:\[/code\]:</pre> <br/>:g" $file
sed -i "s:\[c\]:<code>:g" $file
sed -i "s:\[/c\]:</code>:g" $file
sed -i "s:\[img=:<img src=:g" $file
sed -i "s:\[url=:<a href=:g" $file
sed -i "s:\[/url\]:</a>:g" $file
sed -i "s:\[comment\]:<!-- :g" $file
sed -i "s:\[/comment\]: -->:g" $file
sed -i "s:\"]:\">:g" $file

echo "</body></html>" >> $file

Было:

[img="https://www.linux.org.ru/photos/177986:2038028256.jpg"]BBc0de -- отличный язык разметки! Только я за полмесяца юзанья макдауна от него отвык :)[br]
Есть [b]жирный[/b], [i]курсив[/i], [u]подчеркнутый[/u] и [s]зачеркнутый[/s] текст. А также [sup]надстрочный[/sup] и [sub]подстрочный[/sub].[br]
А еще есть код... вот, сейчас я показал вам, что использую Linux, а не бздю или макос:
[c0de]~$ uname -s
Linux
~$[/c0de]
Хорошая штука -- этот код, но встроенный код еще лучше! [c]uname -s[/c] выдаст, какое ядро у вас.[br]
Вот [url="https://linux.org.ru"]LOR[/url][br]
А это список моих хотелок:[br][list]
[*] Набрать скора
[*] Научиться использовать слаку
[/list]
[numlist]
[*] А это
[*] нумерованный
[*] список,
[*] в котором
[*] ничего нет!
[/numlist]
[comment]Я -- комментарий! Меня видно?[/comment]

Стало:

<!DOCTYPE html>
<html lang=ru>
<head><meta content="text/html; charset=utf-8"><title></title></head>
<body style='font-family:verdana,garamond,sans;font-size:16px'>
<img src="https://www.linux.org.ru/photos/177986:2038028256.jpg">BBcode -- отличный язык разметки! Только я за полмесяца юзанья макдауна от него отвык :)<br/>
Есть <strong>жирный</strong>, <em>курсив</em>, <u>подчеркнутый</u> и <s>зачеркнутый</s> текст. А также <sup>надстрочный</sup> и <sub>подстрочный</sub>.<br/>
А еще есть код... вот, сейчас я показал вам, что использую Linux, а не бздю или макос:
<br/> <pre>~$ uname -s
Linux
~$</pre> <br/>
Хорошая штука -- этот код, но встроенный код еще лучше! <code>uname -s</code> выдаст, какое ядро у вас.<br/>
Вот <a href="https://linux.org.ru">LOR</a><br/>
А это список моих хотелок:<br/><ul>
<li/> Набрать скора
<li/> Научиться использовать слаку
</ul>
<ol>
<li/> А это
<li/> нумерованный
<li/> список,
<li/> в котором
<li/> ничего нет!
</ol>
<!-- Я -- комментарий! Меня видно? -->
</body></html>

Внутри исходников тестовой станицы я поменял тег [code] на [c0de], чтобы читалось лором нормально. (Я использую лоркод в этом сообщении.)

Выглядит готовый результат вот так. На этом можно написать сайт!

Ну как идея? Как реализация?



Последнее исправление: zagatov_lev (всего исправлений: 3)
Ответ на: комментарий от Vsevolod-linuxoid

Я вот от нечего делать написал на коленке утилиту.

Плюс мне больше нравится BBcode, чем html. Как, вероятно, и создателю первого.

zagatov_lev
() автор топика

Не взлетит. Нужно минимум четыре фреймворка фреймворков, яваскрип и го. Фитнес тренерам негде кормиться

TooPar
()
Ответ на: комментарий от TooPar

Не взлетит. Нужно минимум четыре фреймворка фреймворков, яваскрип и го. Фитнес тренерам негде кормиться

xD

zagatov_lev
() автор топика

Ну как идея? Как реализация?

Идея говно, если учесть, что есть куча зрелых и оттестированных реализаций на нормальных ЯП. А реализация твоя — костыль.

Ах, да, bbcode тоже не нужен.

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 1)
Ответ на: комментарий от theNamelessOne

Как тренажёр для обучения «Башу и Ко» сойдёт.

Korchevatel ★★★★★
()
Ответ на: комментарий от vasya_pupkin

Теперь перепиши на жабе

… и в ынтырпрайз! (и это не шутка)

nerfur ★★★
()

Читал и думал: что-то спуфинг совсем опустился со своими скриптами. А это не спуфинг…

cocucka ★★★★☆
()
Ответ на: комментарий от cocucka

Здравствуйте, Цоцуцка! Простите за ту дискуссию, которая произошла между нами под моим голосованием о кириллических никнеймах.

Что именно Вы думаете об идее, реализации и выходе? Какие фичи можно убрать, какие добавить?

ps. Не понимаю, почему малоизвестные языки-обертки над Html типа Haml расходятся, а всем известный BBcode никто не берет…

zagatov_lev
() автор топика
Последнее исправление: zagatov_lev (всего исправлений: 1)
Ответ на: комментарий от zagatov_lev

Ну идея, скажем не нова. Этот ббкод регекспами и конвертируют обычно. Но молодец, что сам пытаешься.

Посмотри также на группы захвата (capture groups) в регулярках. Тогда сможешь заменять [url=http://bal.ru][/url] на html аналог в один присест. А не заменять их частями.

cocucka ★★★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.