Eslint: Esperado { após condição 'while'

Eu fiz um fork de Formatting toolbar para adicionar algumas coisas de formatação muito personalizadas.

Ele tem discourse-formatting-toolbar/assets/javascripts/lib/discourse-markdown/formatting_bbcode.js at master · MonDiscourse/discourse-formatting-toolbar · GitHub

Meu código se parece com isto:

function replaceTitle(text) {
  while (
    text !==
    (text = text.replace(/\[title\](.+?)\[\/title\]/gi, function (match, p) {
      return `<div class="job-title">${p}</div>`;
    }))
  );
  return text;
}

Mas o eslint reclama:

    9:3  error  Esperava { após a condição 'while'  curly

Tentei mover esse while e o que vem depois para uma única linha (a formatação aqui é aplicada pelo vscode e geralmente funciona com os outros plugins que gerencio), mas isso também não ajudou.

Alguém pode me dar uma pista?

EDIT: Bem, acontece que eu não preciso realmente dessa função, mas ainda gostaria de saber qual é o problema.

1 curtida

O motivo do aviso do ESLint é que você precisa de chaves ({}) envolvendo seu return text;

Ou seja, deve ficar assim:

  while (
    text !==
    (text = text.replace(/\[title\](.+?)\[\/title\]/gi, function (match, p) {
      return `<div class="job-title">${p}</div>`;
    }))
  ) {
    return text;
  }

Embora o JavaScript permita a omissão das chaves, o ESLint impõe o estilo consistente de chaves.

Mais detalhes sobre a regra curly aqui:

3 curtidas