@vGrabko99
html, css, js, php, golang, mysql

Как реализовать if?

Привет. Сейчас разбираю работу шаблонизаторов (велосипедю)

сделал я импорт css, вставку локализации, вставку данных из масива
//встройка локализации
           lang = JSON.parse(lang_json);
            for (var key in lang) {
                html = html.replace(new RegExp("<locale>"+key+"</locale>","g"), lang[key]);
            }
 
            //импорт css
            css = html.match(/@css-(.*?);/g);
            css.forEach(function(item) {
                get_css = $.ajax({url: item, cache: true, async: false}).responseText;
                html = html.replace(new RegExp("@css-"+item+";","g"), "<style>"+get_css+"</style>")
            });

//вставка данных из масива
for (var key in arr) {
                html = html.replace(new RegExp("<arr>"+key+"</arr>","g"), arr[key])
            }


Теперь не могу понять как раcпарсить блок if
<if value = "i == true">
 //тут что то делаем с i.
<else>
//обрабатываем 
</if>


Я так полагаю что мне необходимо транслировать выражение в js код и выполнить. Но вот как для меня загадка :)
  • Вопрос задан
  • 189 просмотров
Решения вопроса 1
@vGrabko99 Автор вопроса
html, css, js, php, golang, mysql
var ifs = html.match(/<if>(.*?)<\/if>/g);
            ifs.forEach(function(item) {
                
                var logik = item.match(/<logik>(.*?)<\/logik>/g);
                logik  = logik[0];
                logik  = logik.replace('<logik>','');
                logik  = logik.replace('</logik>','');


                var block_if = item.match(/<\/logik>(.*?)<else>/g);
                block_if    = block_if[0];
                block_if    = block_if.replace('<\/logik>',' ');
                block_if    = block_if.replace('<else>',' ');

                var block_else = item.match(/<else>(.*?)<\/if>/g);
                block_else  = block_else[0];
                block_else  = block_else.replace('<else>',' ');
                block_else  = block_else.replace('<\/if>',' ');
                
                var inners;
                eval("if("+logik+"){inners='"+block_if+"'}else{inners='"+block_else+"'}");
                
                html = html.replace(new RegExp(item,"g"), inners)
            });


Синтаксис
<if><logik>{{.boll}} == true</logik>
	<h1>заголовок</h1>
<else>
	не заголовок
</if>


Что посоветуете сделать с кучей регулярок?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы