Форматирование текста в соответствии с отступом

Привет, может кто-нибудь помочь мне понять, как работает область кода вопроса 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;
    }
});
Другие вопросы по тегам