JavaScript Beautifier

2025. 5. 21. 23:32프로그램/Javascript

 

JavaScript 로 만든 Javascript Beautifier

 

function beautifyJS(code, indentSize = 2) {
  const indentChar = ' '.repeat(indentSize);
  let beautified = '';
  let indentLevel = 0;
  let inString = false;
  let stringChar = '';
  let escape = false;

  const appendLine = (line = '') => {
    beautified = beautified.trimEnd() + '\n' + indentChar.repeat(indentLevel) + line.trimStart();
  };

  let buffer = '';

  for (let i = 0; i < code.length; i++) {
    const char = code[i];

    if (inString) {
      buffer += char;
      if (escape) {
        escape = false;
      } else if (char === '\\') {
        escape = true;
      } else if (char === stringChar) {
        inString = false;
      }
      continue;
    }

    if (char === '"' || char === "'" || char === '`') {
      inString = true;
      stringChar = char;
      buffer += char;
      continue;
    }

    if (char === '{') {
      appendLine(buffer + ' {');
      buffer = '';
      indentLevel++;
    } else if (char === '}') {
      if (buffer.trim()) appendLine(buffer);
      buffer = '';
      indentLevel--;
      appendLine('}');
    } else if (char === ';') {
      buffer += ';';
      appendLine(buffer);
      buffer = '';
    } else if (char === '\n') {
      // 무시
    } else {
      buffer += char;
    }
  }

  // 남은 buffer 처리
  if (buffer.trim()) {
    appendLine(buffer);
  }

  return beautified.trim(); // 마지막 줄 줄바꿈 제거
}