Я пишу компилятор для моей новой JS Framework, я пытаюсь извлечь дерево объектов из моего кода напрямую.Это процесс, который я буду выполнять в процессе компиляции (сборки), поэтому каждый код рассматривается как чистая строка.
var a = 'Oxo('Storename',{templates:function(){},data:{},actions:
{}})'
У меня есть основной код в строке формата в переменной a.Эта строка передается функции extraceObject () сейчас extractObject Функция вернет мне массив, который содержит StoreName в качестве 0 индекса, а индекс 1 возвращает мне объект в виде: -
{
templates:function(){},
data:{},
actions:{},
}
Шаблон, данные и свойство action содержат большой код.
Я старался изо всех сил, но мне не удалось решить эту проблему, потому что есть несколько номеров закрытия } .
Мой код: -
HeavyExtraction = function HeavyExtraction(x) {
var alldata = x,
mydata = x,
len = mydata.length;
var p1 ,
p2 ,
p = 0;
for(var j = p ; j < len ; j++){
if(mydata.indexOf("Oxo('") !== -1 ){
var p1 = mydata.indexOf("Oxo('");
var p2 = mydata.indexOf('})');
}
if(p1 == -1 || p2 == -1){
console.log('syntax error')
break;
}
var str = mydata.substr(p1+6,(p2 -p1)-6).replace(/\\n/g, ''),
var Data = mydata.substr(p1+6,(p2 -p1)-6);
console.log(Data)
var p = p2 + 2,
mydata = mydata.substr(p),
len = mydata.length;
}
}
Я пытаюсь получить вывод как: -
['Storename',{
templates:function(){},
data:{},
actions:{},
}]
Я пытаюсь сделать это с помощью node.js ИзвинитеДля моего худшего кода, пожалуйста, помогите мне.