Projekt

Obecné

Profil

Stáhnout (5 KB) Statistiky
| Větev: | Tag: | Revize:
1
ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(require, exports, module) {
2
"use strict";
3

    
4
var oop = require("../../lib/oop");
5
var BaseFoldMode = require("./fold_mode").FoldMode;
6
var Range = require("../../range").Range;
7

    
8
var FoldMode = exports.FoldMode = function() {};
9
oop.inherits(FoldMode, BaseFoldMode);
10

    
11
(function() {
12

    
13
    this.getFoldWidgetRange = function(session, foldStyle, row) {
14
        var range = this.indentationBlock(session, row);
15
        if (range)
16
            return range;
17

    
18
        var re = /\S/;
19
        var line = session.getLine(row);
20
        var startLevel = line.search(re);
21
        if (startLevel == -1 || line[startLevel] != "#")
22
            return;
23

    
24
        var startColumn = line.length;
25
        var maxRow = session.getLength();
26
        var startRow = row;
27
        var endRow = row;
28

    
29
        while (++row < maxRow) {
30
            line = session.getLine(row);
31
            var level = line.search(re);
32

    
33
            if (level == -1)
34
                continue;
35

    
36
            if (line[level] != "#")
37
                break;
38

    
39
            endRow = row;
40
        }
41

    
42
        if (endRow > startRow) {
43
            var endColumn = session.getLine(endRow).length;
44
            return new Range(startRow, startColumn, endRow, endColumn);
45
        }
46
    };
47
    this.getFoldWidget = function(session, foldStyle, row) {
48
        var line = session.getLine(row);
49
        var indent = line.search(/\S/);
50
        var next = session.getLine(row + 1);
51
        var prev = session.getLine(row - 1);
52
        var prevIndent = prev.search(/\S/);
53
        var nextIndent = next.search(/\S/);
54

    
55
        if (indent == -1) {
56
            session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : "";
57
            return "";
58
        }
59
        if (prevIndent == -1) {
60
            if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") {
61
                session.foldWidgets[row - 1] = "";
62
                session.foldWidgets[row + 1] = "";
63
                return "start";
64
            }
65
        } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") {
66
            if (session.getLine(row - 2).search(/\S/) == -1) {
67
                session.foldWidgets[row - 1] = "start";
68
                session.foldWidgets[row + 1] = "";
69
                return "";
70
            }
71
        }
72

    
73
        if (prevIndent!= -1 && prevIndent < indent)
74
            session.foldWidgets[row - 1] = "start";
75
        else
76
            session.foldWidgets[row - 1] = "";
77

    
78
        if (indent < nextIndent)
79
            return "start";
80
        else
81
            return "";
82
    };
83

    
84
}).call(FoldMode.prototype);
85

    
86
});
87

    
88
ace.define("ace/mode/space_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) {
89
"use strict";
90

    
91
var oop = require("../lib/oop");
92
var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules;
93

    
94
var SpaceHighlightRules = function() {
95
    this.$rules = {
96
        "start" : [
97
            {
98
                token : "empty_line",
99
                regex : / */,
100
                next : "key"
101
            },
102
            {
103
                token : "empty_line",
104
                regex : /$/,
105
                next : "key"
106
            }
107
        ],
108
        "key" : [
109
            {
110
                token : "variable",
111
                regex : /\S+/
112
            },
113
            {
114
                token : "empty_line",
115
                regex : /$/,
116
                next : "start"
117
            },{
118
                token : "keyword.operator",
119
                regex : / /,
120
                next  : "value"
121
            }
122
        ],
123
        "value" : [
124
            {
125
                token : "keyword.operator",
126
                regex : /$/,
127
                next  : "start"
128
            },
129
            {
130
                token : "string",
131
                regex : /[^$]/
132
            }
133
        ]
134
    };
135
    
136
};
137

    
138
oop.inherits(SpaceHighlightRules, TextHighlightRules);
139

    
140
exports.SpaceHighlightRules = SpaceHighlightRules;
141
});
142

    
143
ace.define("ace/mode/space",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/folding/coffee","ace/mode/space_highlight_rules"], function(require, exports, module) {
144
"use strict";
145
var oop = require("../lib/oop");
146
var TextMode = require("./text").Mode;
147
var FoldMode = require("./folding/coffee").FoldMode;
148
var SpaceHighlightRules = require("./space_highlight_rules").SpaceHighlightRules;
149
var Mode = function() {
150
    this.HighlightRules = SpaceHighlightRules;
151
    this.foldingRules = new FoldMode();
152
    this.$behaviour = this.$defaultBehaviour;
153
};
154
oop.inherits(Mode, TextMode);
155
(function() {
156
    
157
    this.$id = "ace/mode/space";
158
}).call(Mode.prototype);
159
exports.Mode = Mode;
160
});                (function() {
161
                    ace.require(["ace/mode/space"], function(m) {
162
                        if (typeof module == "object" && typeof exports == "object" && module) {
163
                            module.exports = m;
164
                        }
165
                    });
166
                })();
167
            
(170-170/244)