Показать сообщение отдельно
  #3 (permalink)  
Старый 25.01.2024, 17:12
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

const CODE_PATTERN = /\[([\w-]+)\]([\s\S]*?)\[\/\1\]/;

const handlerMap = {
  shortcode: (content) => {
    console.log(content);
    return `<div class="foo">${content}</div>`;
  },
};

function parseCode(value) {
  let parsedValue = value;

  while (CODE_PATTERN.test(parsedValue)) {
    parsedValue = parsedValue.replace(CODE_PATTERN, (_matches, id, content) => {
      const idLower = id.toLowerCase();
      return handlerMap.hasOwnProperty(idLower) ? handlerMap[idLower](content) : content;
    });
  }

  return parsedValue;
}

console.log(parseCode(sourceText));
Ответить с цитированием