Форматирование текста в соответствии с отступом
Привет, может кто-нибудь помочь мне понять, как работает область кода вопроса stackru (технически).
Я имею в виду, как он форматирует текст, как отступ в тексте.
пример: без отступа
example: with indentation ( text background color and font has changed)
Может кто-нибудь объяснить мне технологию, стоящую за этим. Я новичок в программировании, это что-то трудно реализовать. Как мы можем реализовать этот вид форматирования в зависимости от отступа текста.
1 ответ
Решение
Одним из подходов может быть цикл по каждой строке текста в строке и группировка их по уровню отступа в разделы:
var leadingSpaces = /^\s*/;
blockOfText = blockOfText.replace(/\t/g, ' '); // replace tabs with 4 spaces
var lines = blockOfText.split('\n');
var sections = [];
var currentIndentLevel = null;
var currentSection = null;
lines.forEach(function(line) {
var indentLevel = leadingSpaces.exec(line)[0].length;
if (indentLevel !== currentIndentLevel) {
currentIndentLevel = indentLevel;
currentSection = { indentLevel: currentIndentLevel, lines: [] };
sections.push(currentSection);
}
currentSection.lines.push(line);
});
Затем, когда у вас есть эти разделы, вы можете просмотреть их:
sections.forEach(function(section) {
switch (section.indentLevel) {
case 4:
// format as code
break;
// etc.
default:
// format as markdown
break;
}
});