Как сопоставить самую последнюю непрерывную пустую строку и заменить ее символом javascript? - PullRequest
0 голосов
/ 11 января 2020

Я люблю такие языки, как Python, Ruby, et c. так как их синтаксис легко написать и понять. Итак, эта любовь к легкости позволила мне найти больше способов сделать синтаксис языка более простым. Я начинаю делать это с javascript. Посмотрите на приведенный ниже код:

var a = `

     if anything...
        alert("Yes ! It's a...")

     if anything...
        alert("beautiful syntax !")

`;

Приведенный выше синтаксис очень легкий и красивый, поэтому я начинаю писать регулярное выражение для преобразования приведенного выше синтаксиса в исполняемый синтаксис javascript. Я сделал:

a = a.replace(/\bif\b([\S\s]*?)\n([\S\s]*?)\n/gm, function(_, v1, v2, v3) {
  return v1 + " (" + v2 + ") { \n" + v3 + " \n };"
})
console.log(a)

Результат:

if ( anything... ) {
    alert("Yes ! It's a...")
 };
if ( anything..  ) {
    alert("beautiful syntax !")
 };

Итак, это работает, но есть небольшая проблема! Если я напишу что-то вроде этого:

 if anything...
      alert("Yes")
      alert("No")

, то получится:

if ( anything... ) {
     alert("Yes")
}; alert("No")

Таким образом, я заменил последний \n в регулярном выражении на ^\n. Но здесь возникает другая проблема. Если я напишу:

if anything...
    alert("Yes")
    alert("No")

if anything...
    alert("Yeap")
    alert("Nope")

, то получится:

 if ( anything... ) {
    alert("Yes")
    alert("No")
 };
 if ( anything... ) {
    alert("Yeap")
 }; alert("Nope")

Итак, вы можете мне помочь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...