根据缩进文本格式化

时间:2014-03-05 02:42:19

标签: html wysiwyg word-processor openwysiwyg

嗨,有人可以帮我理解stackoverflow问题的代码区域是如何工作的(技术上)。
我的意思是它在缩进文本时格式化文本的方式。

示例:没有缩进

 example: with indentation ( text background color and font has changed)
有人能解释一下这背后的技术吗?我是编程新手,这是很难实现的。我们如何根据文本的缩进来实现这种格式。

1 个答案:

答案 0 :(得分:0)

一种方法可能是循环遍历字符串中的每一行文本,并按缩进级别将它们分组为几个部分:

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;
    }
});