笙默考试管理系统-MyExamTest----codemirror(25)

笙默考试管理系统-MyExamTest----codemirror(25)

目录

一、 笙默考试管理系统-MyExamTest----codemirror

二、 笙默考试管理系统-MyExamTest----codemirror

三、 笙默考试管理系统-MyExamTest----codemirror

四、 笙默考试管理系统-MyExamTest----codemirror

五、 笙默考试管理系统-MyExamTest----codemirror

  • 笙默考试管理系统-MyExamTest----codemirror

  var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<"};

        function matchBrackets(autoclear) {

            var head = sel.inverted ? sel.from : sel.to, line = getLine(head.line), pos = head.ch - 1;

            var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];

            if (!match) return;

            var ch = match.charAt(0), forward = match.charAt(1) == ">", d = forward ? 1 : -1, st = line.styles;

  • 笙默考试管理系统-MyExamTest----codemirror

            for (var off = pos + 1, i = 0, e = st.length; i < e; i+=2)

                if ((off -= st[i].length) <= 0) {var style = st[i+1]; break;}

            var stack = [line.text.charAt(pos)], re = /[(){}[\]]/;

            function scan(line, from, to) {

                if (!line.text) return;

  • 笙默考试管理系统-MyExamTest----codemirror

                var st = line.styles, pos = forward ? 0 : line.text.length - 1, cur;

                for (var i = forward ? 0 : st.length - 2, e = forward ? st.length : -2; i != e; i += 2*d) {

                    var text = st[i];

                    if (st[i+1] != null && st[i+1] != style) {pos += d * text.length; continue;}

                    for (var j = forward ? 0 : text.length - 1, te = forward ? text.length : -1; j != te; j += d, pos+=d) {

                        if (pos >= from && pos < to && re.test(cur = text.charAt(j))) {

                            var match = matching[cur];

                            if (match.charAt(1) == ">" == forward) stack.push(cur);

                            else if (stack.pop() != match.charAt(0)) return {pos: pos, match: false};

  • 笙默考试管理系统-MyExamTest----codemirror

                            else if (!stack.length) return {pos: pos, match: true};

                        }

                    }

                }

            }

            for (var i = head.line, e = forward ? Math.min(i + 100, doc.size) : Math.max(-1, i - 100); i != e; i+=d) {

                var line = getLine(i), first = i == head.line;

                var found = scan(line, first && forward ? pos + 1 : 0, first && !forward ? pos : line.text.length);

                if (found) break;

            }

  • 笙默考试管理系统-MyExamTest----codemirror

            if (!found) found = {pos: null, match: false};

            var style = found.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket";

            var one = markText({line: head.line, ch: pos}, {line: head.line, ch: pos+1}, style),

                two = found.pos != null && markText({line: i, ch: found.pos}, {line: i, ch: found.pos + 1}, style);

            var clear = operation(function(){one.clear(); two && two.clear();});

            if (autoclear) setTimeout(clear, 800);

            else bracketHighlighted = clear;

        }

        // Finds the line to start with when starting a parse. Tries to

        // find a line with a stateAfter, so that it can start with a

        // valid state. If that fails, it returns the line with the

        // smallest indentation, which tends to need the least context to

        // parse correctly.

        function findStartLine(n) {

            var minindent, minline;

            for (var search = n, lim = n - 40; search > lim; --search) {

                if (search == 0) return 0;

                var line = getLine(search-1);

                if (line.stateAfter) return search;

                var indented = line.indentation(options.tabSize);

                if (minline == null || minindent > indented) {

                    minline = search - 1;

                    minindent = indented;

                }

            }

你可能感兴趣的:(笙默考试管理系统,前端,javascript,java)