liquid_cms 0.2.1.1 → 0.2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +7 -0
- data/README.rdoc +15 -1
- data/TODO.rdoc +0 -2
- data/app/controllers/cms/assets_controller.rb +20 -6
- data/app/controllers/cms/components_controller.rb +11 -3
- data/app/controllers/cms/pages_controller.rb +15 -4
- data/app/helpers/cms/common_helper.rb +31 -31
- data/app/liquid/cms_paperclip_extension.rb +75 -3
- data/app/models/cms/asset.rb +1 -1
- data/app/models/cms/component.rb +3 -3
- data/app/views/cms/assets/_form.html.erb +1 -1
- data/app/views/cms/assets/update.js.rjs +1 -0
- data/app/views/cms/components/update.js.rjs +1 -0
- data/app/views/cms/pages/_form.html.erb +1 -1
- data/app/views/cms/pages/update.js.rjs +1 -0
- data/app/views/layouts/cms.html.erb +4 -3
- data/generators/liquid_cms/liquid_cms_generator.rb +1 -0
- data/generators/liquid_cms/templates/config/locales/cms/en.yml +4 -0
- data/generators/liquid_cms/templates/migration_rev2.rb +13 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/LICENSE +16 -20
- data/generators/liquid_cms/templates/public/cms/codemirror/lib/codemirror.css +68 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/lib/codemirror.js +2197 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/lib/overlay.js +51 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/lib/runmode.js +27 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/clike/clike.js +247 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/clike/index.html +102 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/clojure/clojure.js +207 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/clojure/index.html +85 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/coffeescript/LICENSE +22 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/coffeescript/coffeescript.js +325 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/coffeescript/index.html +722 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/css/css.js +124 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/css/index.html +56 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/diff/diff.css +3 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/diff/diff.js +13 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/diff/index.html +99 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/haskell/haskell.js +242 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/haskell/index.html +60 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/htmlmixed/htmlmixed.js +79 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/htmlmixed/index.html +52 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/javascript/index.html +78 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/javascript/javascript.js +352 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/jinja2/index.html +38 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/jinja2/jinja2.js +42 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/lua/index.html +72 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/lua/lua.js +140 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/markdown/index.html +340 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/markdown/markdown.css +10 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/markdown/markdown.js +230 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/ntriples/index.html +33 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/ntriples/ntriples.js +172 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/pascal/LICENSE +7 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/pascal/index.html +49 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/pascal/pascal.js +138 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/php/index.html +49 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/php/php.js +116 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/plsql/index.html +63 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/plsql/plsql.js +217 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/python/LICENSE.txt +21 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/python/index.html +123 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/python/python.js +320 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/r/LICENSE +24 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/r/index.html +74 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/r/r.js +141 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/rst/index.html +526 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/rst/rst.css +75 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/rst/rst.js +333 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/ruby/LICENSE +24 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/ruby/index.html +172 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/ruby/ruby.js +195 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/scheme/index.html +65 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/scheme/scheme.js +202 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/smalltalk/index.html +56 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/smalltalk/smalltalk.js +122 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/sparql/index.html +41 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/sparql/sparql.js +143 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/stex/index.html +96 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/stex/stex.js +167 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/velocity/index.html +103 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/velocity/velocity.js +146 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/xml/index.html +42 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/xml/xml.js +231 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/xmlpure/index.html +60 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/xmlpure/xmlpure.js +481 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/yaml/index.html +68 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/mode/yaml/yaml.js +95 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/theme/cobalt.css +17 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/theme/default.css +19 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/theme/eclipse.css +24 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/theme/elegant.css +9 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/theme/neat.css +8 -0
- data/generators/liquid_cms/templates/public/cms/codemirror/theme/night.css +20 -0
- data/generators/liquid_cms/templates/public/cms/javascripts/cms.js +1 -1
- data/generators/liquid_cms/templates/public/cms/javascripts/codemirror_custom.js +96 -0
- data/generators/liquid_cms/templates/public/cms/stylesheets/codemirror_changes.css +26 -0
- data/generators/liquid_cms/templates/public/cms/stylesheets/liquid.css +7 -0
- data/generators/liquid_cms/templates/public/cms/stylesheets/simple_form.css +0 -8
- data/lib/liquid_cms/version.rb +1 -1
- data/liquid_cms.gemspec +0 -1
- data/test/functional/assets_controller_test.rb +35 -20
- data/test/functional/components_controller_test.rb +15 -5
- data/test/functional/pages_controller_test.rb +19 -6
- data/test/rails_app/config/environment.rb +1 -1
- data/test/rails_app/config/locales/cms/en.yml +19 -4
- data/test/rails_app/db/migrate/20110511161859_create_liquid_cms_upgrade_rev2.rb +13 -0
- data/test/unit/asset_test.rb +1 -1
- metadata +100 -58
- data/generators/liquid_cms/templates/public/cms/codemirror/css/csscolors.css +0 -55
- data/generators/liquid_cms/templates/public/cms/codemirror/css/docs.css +0 -158
- data/generators/liquid_cms/templates/public/cms/codemirror/css/font.js +0 -15
- data/generators/liquid_cms/templates/public/cms/codemirror/css/jscolors.css +0 -59
- data/generators/liquid_cms/templates/public/cms/codemirror/css/sparqlcolors.css +0 -43
- data/generators/liquid_cms/templates/public/cms/codemirror/css/xmlcolors.css +0 -55
- data/generators/liquid_cms/templates/public/cms/codemirror/js/codemirror.js +0 -582
- data/generators/liquid_cms/templates/public/cms/codemirror/js/editor.js +0 -1671
- data/generators/liquid_cms/templates/public/cms/codemirror/js/highlight.js +0 -68
- data/generators/liquid_cms/templates/public/cms/codemirror/js/mirrorframe.js +0 -81
- data/generators/liquid_cms/templates/public/cms/codemirror/js/parsecss.js +0 -161
- data/generators/liquid_cms/templates/public/cms/codemirror/js/parsedummy.js +0 -32
- data/generators/liquid_cms/templates/public/cms/codemirror/js/parsehtmlmixed.js +0 -93
- data/generators/liquid_cms/templates/public/cms/codemirror/js/parsejavascript.js +0 -359
- data/generators/liquid_cms/templates/public/cms/codemirror/js/parsesparql.js +0 -162
- data/generators/liquid_cms/templates/public/cms/codemirror/js/parsexml.js +0 -291
- data/generators/liquid_cms/templates/public/cms/codemirror/js/select.js +0 -699
- data/generators/liquid_cms/templates/public/cms/codemirror/js/stringstream.js +0 -159
- data/generators/liquid_cms/templates/public/cms/codemirror/js/tokenize.js +0 -57
- data/generators/liquid_cms/templates/public/cms/codemirror/js/tokenizejavascript.js +0 -174
- data/generators/liquid_cms/templates/public/cms/codemirror/js/undo.js +0 -413
- data/generators/liquid_cms/templates/public/cms/codemirror/js/unittests.js +0 -44
- data/generators/liquid_cms/templates/public/cms/codemirror/js/util.js +0 -133
@@ -1,68 +0,0 @@
|
|
1
|
-
// Minimal framing needed to use CodeMirror-style parsers to highlight
|
2
|
-
// code. Load this along with tokenize.js, stringstream.js, and your
|
3
|
-
// parser. Then call highlightText, passing a string as the first
|
4
|
-
// argument, and as the second argument either a callback function
|
5
|
-
// that will be called with an array of SPAN nodes for every line in
|
6
|
-
// the code, or a DOM node to which to append these spans, and
|
7
|
-
// optionally (not needed if you only loaded one parser) a parser
|
8
|
-
// object.
|
9
|
-
|
10
|
-
// Stuff from util.js that the parsers are using.
|
11
|
-
var StopIteration = {toString: function() {return "StopIteration"}};
|
12
|
-
|
13
|
-
var Editor = {};
|
14
|
-
var indentUnit = 2;
|
15
|
-
|
16
|
-
(function(){
|
17
|
-
function normaliseString(string) {
|
18
|
-
var tab = "";
|
19
|
-
for (var i = 0; i < indentUnit; i++) tab += " ";
|
20
|
-
|
21
|
-
string = string.replace(/\t/g, tab).replace(/\u00a0/g, " ").replace(/\r\n?/g, "\n");
|
22
|
-
var pos = 0, parts = [], lines = string.split("\n");
|
23
|
-
for (var line = 0; line < lines.length; line++) {
|
24
|
-
if (line != 0) parts.push("\n");
|
25
|
-
parts.push(lines[line]);
|
26
|
-
}
|
27
|
-
|
28
|
-
return {
|
29
|
-
next: function() {
|
30
|
-
if (pos < parts.length) return parts[pos++];
|
31
|
-
else throw StopIteration;
|
32
|
-
}
|
33
|
-
};
|
34
|
-
}
|
35
|
-
|
36
|
-
window.highlightText = function(string, callback, parser) {
|
37
|
-
parser = (parser || Editor.Parser).make(stringStream(normaliseString(string)));
|
38
|
-
var line = [];
|
39
|
-
if (callback.nodeType == 1) {
|
40
|
-
var node = callback;
|
41
|
-
callback = function(line) {
|
42
|
-
for (var i = 0; i < line.length; i++)
|
43
|
-
node.appendChild(line[i]);
|
44
|
-
node.appendChild(document.createElement("br"));
|
45
|
-
};
|
46
|
-
}
|
47
|
-
|
48
|
-
try {
|
49
|
-
while (true) {
|
50
|
-
var token = parser.next();
|
51
|
-
if (token.value == "\n") {
|
52
|
-
callback(line);
|
53
|
-
line = [];
|
54
|
-
}
|
55
|
-
else {
|
56
|
-
var span = document.createElement("span");
|
57
|
-
span.className = token.style;
|
58
|
-
span.appendChild(document.createTextNode(token.value));
|
59
|
-
line.push(span);
|
60
|
-
}
|
61
|
-
}
|
62
|
-
}
|
63
|
-
catch (e) {
|
64
|
-
if (e != StopIteration) throw e;
|
65
|
-
}
|
66
|
-
if (line.length) callback(line);
|
67
|
-
}
|
68
|
-
})();
|
@@ -1,81 +0,0 @@
|
|
1
|
-
/* Demonstration of embedding CodeMirror in a bigger application. The
|
2
|
-
* interface defined here is a mess of prompts and confirms, and
|
3
|
-
* should probably not be used in a real project.
|
4
|
-
*/
|
5
|
-
|
6
|
-
function MirrorFrame(place, options) {
|
7
|
-
this.home = document.createElement("div");
|
8
|
-
if (place.appendChild)
|
9
|
-
place.appendChild(this.home);
|
10
|
-
else
|
11
|
-
place(this.home);
|
12
|
-
|
13
|
-
var self = this;
|
14
|
-
function makeButton(name, action) {
|
15
|
-
var button = document.createElement("input");
|
16
|
-
button.type = "button";
|
17
|
-
button.value = name;
|
18
|
-
self.home.appendChild(button);
|
19
|
-
button.onclick = function(){self[action].call(self);};
|
20
|
-
}
|
21
|
-
|
22
|
-
makeButton("Search", "search");
|
23
|
-
makeButton("Replace", "replace");
|
24
|
-
makeButton("Current line", "line");
|
25
|
-
makeButton("Jump to line", "jump");
|
26
|
-
makeButton("Insert constructor", "macro");
|
27
|
-
makeButton("Indent all", "reindent");
|
28
|
-
|
29
|
-
this.mirror = new CodeMirror(this.home, options);
|
30
|
-
}
|
31
|
-
|
32
|
-
MirrorFrame.prototype = {
|
33
|
-
search: function() {
|
34
|
-
var text = prompt("Enter search term:", "");
|
35
|
-
if (!text) return;
|
36
|
-
|
37
|
-
var first = true;
|
38
|
-
do {
|
39
|
-
var cursor = this.mirror.getSearchCursor(text, first);
|
40
|
-
first = false;
|
41
|
-
while (cursor.findNext()) {
|
42
|
-
cursor.select();
|
43
|
-
if (!confirm("Search again?"))
|
44
|
-
return;
|
45
|
-
}
|
46
|
-
} while (confirm("End of document reached. Start over?"));
|
47
|
-
},
|
48
|
-
|
49
|
-
replace: function() {
|
50
|
-
// This is a replace-all, but it is possible to implement a
|
51
|
-
// prompting replace.
|
52
|
-
var from = prompt("Enter search string:", ""), to;
|
53
|
-
if (from) to = prompt("What should it be replaced with?", "");
|
54
|
-
if (to == null) return;
|
55
|
-
|
56
|
-
var cursor = this.mirror.getSearchCursor(from, false);
|
57
|
-
while (cursor.findNext())
|
58
|
-
cursor.replace(to);
|
59
|
-
},
|
60
|
-
|
61
|
-
jump: function() {
|
62
|
-
var line = prompt("Jump to line:", "");
|
63
|
-
if (line && !isNaN(Number(line)))
|
64
|
-
this.mirror.jumpToLine(Number(line));
|
65
|
-
},
|
66
|
-
|
67
|
-
line: function() {
|
68
|
-
alert("The cursor is currently at line " + this.mirror.currentLine());
|
69
|
-
this.mirror.focus();
|
70
|
-
},
|
71
|
-
|
72
|
-
macro: function() {
|
73
|
-
var name = prompt("Name your constructor:", "");
|
74
|
-
if (name)
|
75
|
-
this.mirror.replaceSelection("function " + name + "() {\n \n}\n\n" + name + ".prototype = {\n \n};\n");
|
76
|
-
},
|
77
|
-
|
78
|
-
reindent: function() {
|
79
|
-
this.mirror.reindent();
|
80
|
-
}
|
81
|
-
};
|
@@ -1,161 +0,0 @@
|
|
1
|
-
/* Simple parser for CSS */
|
2
|
-
|
3
|
-
var CSSParser = Editor.Parser = (function() {
|
4
|
-
var tokenizeCSS = (function() {
|
5
|
-
function normal(source, setState) {
|
6
|
-
var ch = source.next();
|
7
|
-
if (ch == "@") {
|
8
|
-
source.nextWhileMatches(/\w/);
|
9
|
-
return "css-at";
|
10
|
-
}
|
11
|
-
else if (ch == "/" && source.equals("*")) {
|
12
|
-
setState(inCComment);
|
13
|
-
return null;
|
14
|
-
}
|
15
|
-
else if (ch == "<" && source.equals("!")) {
|
16
|
-
setState(inSGMLComment);
|
17
|
-
return null;
|
18
|
-
}
|
19
|
-
else if (ch == "=") {
|
20
|
-
return "css-compare";
|
21
|
-
}
|
22
|
-
else if (source.equals("=") && (ch == "~" || ch == "|")) {
|
23
|
-
source.next();
|
24
|
-
return "css-compare";
|
25
|
-
}
|
26
|
-
else if (ch == "\"" || ch == "'") {
|
27
|
-
setState(inString(ch));
|
28
|
-
return null;
|
29
|
-
}
|
30
|
-
else if (ch == "#") {
|
31
|
-
source.nextWhileMatches(/\w/);
|
32
|
-
return "css-hash";
|
33
|
-
}
|
34
|
-
else if (ch == "!") {
|
35
|
-
source.nextWhileMatches(/[ \t]/);
|
36
|
-
source.nextWhileMatches(/\w/);
|
37
|
-
return "css-important";
|
38
|
-
}
|
39
|
-
else if (/\d/.test(ch)) {
|
40
|
-
source.nextWhileMatches(/[\w.%]/);
|
41
|
-
return "css-unit";
|
42
|
-
}
|
43
|
-
else if (/[,.+>*\/]/.test(ch)) {
|
44
|
-
return "css-select-op";
|
45
|
-
}
|
46
|
-
else if (/[;{}:\[\]]/.test(ch)) {
|
47
|
-
return "css-punctuation";
|
48
|
-
}
|
49
|
-
else {
|
50
|
-
source.nextWhileMatches(/[\w\\\-_]/);
|
51
|
-
return "css-identifier";
|
52
|
-
}
|
53
|
-
}
|
54
|
-
|
55
|
-
function inCComment(source, setState) {
|
56
|
-
var maybeEnd = false;
|
57
|
-
while (!source.endOfLine()) {
|
58
|
-
var ch = source.next();
|
59
|
-
if (maybeEnd && ch == "/") {
|
60
|
-
setState(normal);
|
61
|
-
break;
|
62
|
-
}
|
63
|
-
maybeEnd = (ch == "*");
|
64
|
-
}
|
65
|
-
return "css-comment";
|
66
|
-
}
|
67
|
-
|
68
|
-
function inSGMLComment(source, setState) {
|
69
|
-
var dashes = 0;
|
70
|
-
while (!source.endOfLine()) {
|
71
|
-
var ch = source.next();
|
72
|
-
if (dashes >= 2 && ch == ">") {
|
73
|
-
setState(normal);
|
74
|
-
break;
|
75
|
-
}
|
76
|
-
dashes = (ch == "-") ? dashes + 1 : 0;
|
77
|
-
}
|
78
|
-
return "css-comment";
|
79
|
-
}
|
80
|
-
|
81
|
-
function inString(quote) {
|
82
|
-
return function(source, setState) {
|
83
|
-
var escaped = false;
|
84
|
-
while (!source.endOfLine()) {
|
85
|
-
var ch = source.next();
|
86
|
-
if (ch == quote && !escaped)
|
87
|
-
break;
|
88
|
-
escaped = !escaped && ch == "\\";
|
89
|
-
}
|
90
|
-
if (!escaped)
|
91
|
-
setState(normal);
|
92
|
-
return "css-string";
|
93
|
-
};
|
94
|
-
}
|
95
|
-
|
96
|
-
return function(source, startState) {
|
97
|
-
return tokenizer(source, startState || normal);
|
98
|
-
};
|
99
|
-
})();
|
100
|
-
|
101
|
-
function indentCSS(inBraces, inRule, base) {
|
102
|
-
return function(nextChars) {
|
103
|
-
if (!inBraces || /^\}/.test(nextChars)) return base;
|
104
|
-
else if (inRule) return base + indentUnit * 2;
|
105
|
-
else return base + indentUnit;
|
106
|
-
};
|
107
|
-
}
|
108
|
-
|
109
|
-
// This is a very simplistic parser -- since CSS does not really
|
110
|
-
// nest, it works acceptably well, but some nicer colouroing could
|
111
|
-
// be provided with a more complicated parser.
|
112
|
-
function parseCSS(source, basecolumn) {
|
113
|
-
basecolumn = basecolumn || 0;
|
114
|
-
var tokens = tokenizeCSS(source);
|
115
|
-
var inBraces = false, inRule = false, inDecl = false;;
|
116
|
-
|
117
|
-
var iter = {
|
118
|
-
next: function() {
|
119
|
-
var token = tokens.next(), style = token.style, content = token.content;
|
120
|
-
|
121
|
-
if (style == "css-hash")
|
122
|
-
style = token.style = inRule ? "css-colorcode" : "css-identifier";
|
123
|
-
if (style == "css-identifier") {
|
124
|
-
if (inRule) token.style = "css-value";
|
125
|
-
else if (!inBraces && !inDecl) token.style = "css-selector";
|
126
|
-
}
|
127
|
-
|
128
|
-
if (content == "\n")
|
129
|
-
token.indentation = indentCSS(inBraces, inRule, basecolumn);
|
130
|
-
|
131
|
-
if (content == "{" && inDecl == "@media")
|
132
|
-
inDecl = false;
|
133
|
-
else if (content == "{")
|
134
|
-
inBraces = true;
|
135
|
-
else if (content == "}")
|
136
|
-
inBraces = inRule = inDecl = false;
|
137
|
-
else if (content == ";")
|
138
|
-
inRule = inDecl = false;
|
139
|
-
else if (inBraces && style != "css-comment" && style != "whitespace")
|
140
|
-
inRule = true;
|
141
|
-
else if (!inBraces && style == "css-at")
|
142
|
-
inDecl = content;
|
143
|
-
|
144
|
-
return token;
|
145
|
-
},
|
146
|
-
|
147
|
-
copy: function() {
|
148
|
-
var _inBraces = inBraces, _inRule = inRule, _tokenState = tokens.state;
|
149
|
-
return function(source) {
|
150
|
-
tokens = tokenizeCSS(source, _tokenState);
|
151
|
-
inBraces = _inBraces;
|
152
|
-
inRule = _inRule;
|
153
|
-
return iter;
|
154
|
-
};
|
155
|
-
}
|
156
|
-
};
|
157
|
-
return iter;
|
158
|
-
}
|
159
|
-
|
160
|
-
return {make: parseCSS, electricChars: "}"};
|
161
|
-
})();
|
@@ -1,32 +0,0 @@
|
|
1
|
-
var DummyParser = Editor.Parser = (function() {
|
2
|
-
function tokenizeDummy(source) {
|
3
|
-
while (!source.endOfLine()) source.next();
|
4
|
-
return "text";
|
5
|
-
}
|
6
|
-
function parseDummy(source) {
|
7
|
-
function indentTo(n) {return function() {return n;}}
|
8
|
-
source = tokenizer(source, tokenizeDummy);
|
9
|
-
var space = 0;
|
10
|
-
|
11
|
-
var iter = {
|
12
|
-
next: function() {
|
13
|
-
var tok = source.next();
|
14
|
-
if (tok.type == "whitespace") {
|
15
|
-
if (tok.value == "\n") tok.indentation = indentTo(space);
|
16
|
-
else space = tok.value.length;
|
17
|
-
}
|
18
|
-
return tok;
|
19
|
-
},
|
20
|
-
copy: function() {
|
21
|
-
var _space = space;
|
22
|
-
return function(_source) {
|
23
|
-
space = _space;
|
24
|
-
source = tokenizer(_source, tokenizeDummy);
|
25
|
-
return iter;
|
26
|
-
};
|
27
|
-
}
|
28
|
-
};
|
29
|
-
return iter;
|
30
|
-
}
|
31
|
-
return {make: parseDummy};
|
32
|
-
})();
|
@@ -1,93 +0,0 @@
|
|
1
|
-
var HTMLMixedParser = Editor.Parser = (function() {
|
2
|
-
|
3
|
-
// tags that trigger seperate parsers
|
4
|
-
var triggers = {
|
5
|
-
"script": "JSParser",
|
6
|
-
"style": "CSSParser"
|
7
|
-
};
|
8
|
-
|
9
|
-
function checkDependencies() {
|
10
|
-
var parsers = ['XMLParser'];
|
11
|
-
for (var p in triggers) parsers.push(triggers[p]);
|
12
|
-
for (var i in parsers) {
|
13
|
-
if (!window[parsers[i]]) throw new Error(parsers[i] + " parser must be loaded for HTML mixed mode to work.");
|
14
|
-
}
|
15
|
-
XMLParser.configure({useHTMLKludges: true});
|
16
|
-
}
|
17
|
-
|
18
|
-
function parseMixed(stream) {
|
19
|
-
checkDependencies();
|
20
|
-
var htmlParser = XMLParser.make(stream), localParser = null, inTag = false;
|
21
|
-
var iter = {next: top, copy: copy};
|
22
|
-
|
23
|
-
function top() {
|
24
|
-
var token = htmlParser.next();
|
25
|
-
if (token.content == "<")
|
26
|
-
inTag = true;
|
27
|
-
else if (token.style == "xml-tagname" && inTag === true)
|
28
|
-
inTag = token.content.toLowerCase();
|
29
|
-
else if (token.content == ">") {
|
30
|
-
if (triggers[inTag]) {
|
31
|
-
var parser = window[triggers[inTag]];
|
32
|
-
iter.next = local(parser, "</" + inTag);
|
33
|
-
}
|
34
|
-
inTag = false;
|
35
|
-
}
|
36
|
-
return token;
|
37
|
-
}
|
38
|
-
function local(parser, tag) {
|
39
|
-
var baseIndent = htmlParser.indentation();
|
40
|
-
localParser = parser.make(stream, baseIndent + indentUnit);
|
41
|
-
return function() {
|
42
|
-
if (stream.lookAhead(tag, false, false, true)) {
|
43
|
-
localParser = null;
|
44
|
-
iter.next = top;
|
45
|
-
return top();
|
46
|
-
}
|
47
|
-
|
48
|
-
var token = localParser.next();
|
49
|
-
var lt = token.value.lastIndexOf("<"), sz = Math.min(token.value.length - lt, tag.length);
|
50
|
-
if (lt != -1 && token.value.slice(lt, lt + sz).toLowerCase() == tag.slice(0, sz) &&
|
51
|
-
stream.lookAhead(tag.slice(sz), false, false, true)) {
|
52
|
-
stream.push(token.value.slice(lt));
|
53
|
-
token.value = token.value.slice(0, lt);
|
54
|
-
}
|
55
|
-
|
56
|
-
if (token.indentation) {
|
57
|
-
var oldIndent = token.indentation;
|
58
|
-
token.indentation = function(chars) {
|
59
|
-
if (chars == "</")
|
60
|
-
return baseIndent;
|
61
|
-
else
|
62
|
-
return oldIndent(chars);
|
63
|
-
};
|
64
|
-
}
|
65
|
-
|
66
|
-
return token;
|
67
|
-
};
|
68
|
-
}
|
69
|
-
|
70
|
-
function copy() {
|
71
|
-
var _html = htmlParser.copy(), _local = localParser && localParser.copy(),
|
72
|
-
_next = iter.next, _inTag = inTag;
|
73
|
-
return function(_stream) {
|
74
|
-
stream = _stream;
|
75
|
-
htmlParser = _html(_stream);
|
76
|
-
localParser = _local && _local(_stream);
|
77
|
-
iter.next = _next;
|
78
|
-
inTag = _inTag;
|
79
|
-
return iter;
|
80
|
-
};
|
81
|
-
}
|
82
|
-
return iter;
|
83
|
-
}
|
84
|
-
|
85
|
-
return {
|
86
|
-
make: parseMixed,
|
87
|
-
electricChars: "{}/:",
|
88
|
-
configure: function(obj) {
|
89
|
-
if (obj.triggers) triggers = obj.triggers;
|
90
|
-
}
|
91
|
-
};
|
92
|
-
|
93
|
-
})();
|