LINUX.ORG.RU

Парсер смайликов

 


0

1

Есть html

Hello :smile: <strong>world</strong>


Нужно заменить в нем :smile: на <img src=«/i/smile.gif»/>, но также убрать все пользовательские теги
В итоге должен получиться следующий html
Hello <img src="/i/smile.gif"/> &lt;strong&gt;world&lt;/strong&gt;


Пробовал через дерективу
Vue.directive('parse-smiles', {

    bind: function (el, binding, vnode) {

    },
    inserted: function(el, binding, vnode){
        el.innerHTML = replaceCodes(el.innerHTML); //тут по регулярке заменяет коды на картинки
    }

});


Шаблон
<div v-parse-smiles="{}">{{text}}</div>


Работает, но теряется реактивность. Если к div добавить, например, v-if

★★★★

Ну, если нужна реактивность, то можно делать по стандартной схеме через data-simle=«:smile:».

Hello <span class="smile" data-smile="i/smile.jpg">:smile:</span> <strong>world</strong>

В JS уже стандартными реактивными темами можно ваять что хочешь.

Типа

<script>
var list = document.getElementByClassName("smile");
list.forEach(function (el) {
    //

    //

    // stuff

    //

    //
});
</script>

<p class="repair-thread-history">

Ты самый красивый гей на лоре, краше Эдика и Делириума. Лучше только Кирк Джонсон был …

Владимир


    Лучше только Кирк Джонсон был …

Почему был ?

Нарцисс

    гей на лоре

Пидоры в топе! Вали пидоров!

    Лучше только Кирк Джонсон был … Почему был ?

Не добился от меня взаимности и забанился. Утопиться хотел, но я его отговорил.

Владимир

    Не добился от меня взаимности и забанился.

Почему ты его отверг?

    Почему ты его отверг?

Он подмышки отказывался брить. Как чухан ходил с мохнатыми.

Владимир

    Он подмышки отказывался брить.

Это весомая причина, зря он так.

Нарцисс

    Это весомая причина, зря он так.

Да, вы правы. Но он считал, что это придает ему брутальности и что он источает тестостерон. Зато танцует он красиво. Из-за него все мужики у нас в клубе на танцах передрались …

Владимир

    Из-за него все мужики у нас в клубе на танцах передрались …

Суета сует. Мне эти ваши утехи без надобности, у меня более утонченный вкус.

Нарцисс

    у меня более утонченный вкус.

И кто нравится Вам? Одалист или сам Шаман?

Владимир

    И кто нравится Вам?

Весьма странный вопрос, но ответ на него я вижу в зеркале. Иначе и быть не может.

Нарцисс

Почему модераторы систематически нарушают правила форума? (комментарий)

    хотя напомню тебе что в general или то был development хрен знает сколько времени провисел пост что то о каких то бандеровцах и претензиях (вообще это называется по другому)к vertexua со стороны анона

Вот не надо «ля-ля»! @vertexua я по обоюдному согласию чпокнул (пару раз то всего). Стихи посвещал и прочее, это вам гетерам не понять… А вот то, что здесь запрещают разглашать как блокировку обходить - тревожный звоночек. Вот тебе и свободный форум GNU/Linux.

Дополню предыдущего оратора

@XoFfiCEr, пара раз - не водолаз. Для цеЕвропы самый норм.

Пидорас-с-с!

Здравствуйте, а вы в рот берёте?

    И кто нравится Вам? Одалист или сам Шаман?

Одалист – мерзкий глист. А у Шамана школьников целый горем, как и положено модеру. Он нюхает их пердёжь.

Уж лучше трахнуть Геральта – он свой зад в качалке тренерует на спортивном кевларовом дильдо.

Павел Евграфович

Народ говорит о vertexua. По средам и только в жопу. Строго по записи. В рот - к Шоме, может откусить, злобный тип.

    Народ говорит о vertexua. По средам и только в жопу.

Жаль. Среда только прошла. Зато сейчас самок время занять очередь.

    В рот - к Шоме, может откусить, злобный тип.

Спички в уши
anonymous ()

Во-первых, у директив есть функции update и componentUpdated.

Во-вторых, задача, которую ты решаешь, не решается через директивы. Обновление значений в DOM после того, как они были установлены штатным рендером Vue (а не добавлены тобой в сторонке) — это антипаттерн, который в том числе ломает работу некоторые сторонних модулей. В твоем случае v-html="replaceCodes(text)" было бы выше крыши. Причем, если я не ошибаюсь, я тебе в прошлом треде именно это и советовал. Но ты почему-то решил не искать легких путей.

byko3y ★★★ ()