Jestem nowy w edytorze asów i włączam tryb niestandardowy do sprawdzania poprawności kodu, a każda linia powinna kończyć się średnikiem, jeśli średnik nie jest obecny w moim zapytaniu przez pomyłkę, wówczas edytor powinien odrzucić ostrzeżenie takie jak "Brakujące Średnik".Jak zintegrować sprawdzanie składni w edytorze asów w trybie niestandardowym?
define('ace/mode/javascript-custom', [], function(require, exports, module) {
var oop = require("ace/lib/oop");
var TextMode = require("ace/mode/text").Mode;
var Tokenizer = require("ace/tokenizer").Tokenizer;
var ExampleHighlightRules = require("ace/mode/example_highlight_rules").ExampleHighlightRules;
var Mode = function() {
this.HighlightRules = ExampleHighlightRules;
};
oop.inherits(Mode, TextMode);
(function() {
this.lineCommentStart = "--";
this.blockComment = {
start: "->",
end: "<-"
};
}).call(Mode.prototype);
exports.Mode = Mode;
});
define('ace/mode/example_highlight_rules', [], function(require, exports, module) {
var oop = require("ace/lib/oop");
var TextHighlightRules = require("ace/mode/text_highlight_rules").TextHighlightRules;
var ExampleHighlightRules = function() {
var keywordMapper = this.createKeywordMapper({
"variable.language": "this",
"keyword": "one|two",
"constant.language": "true|false|null"
}, "text", true);
this.$rules = {
"start": [{
token: "comment",
regex: "->",
next: [{
regex: "<-",
token: "comment",
next: "start"
}, {
defaultToken: "comment"
}]
}, {
regex: "\\w+\\b",
token: keywordMapper
}, {
token: "comment",
regex: "--.*"
}, {
token: "string",
regex: '"',
next: [{
regex: /\\./,
token: "escape.character"
}, {
regex: '"',
token: "string",
next: "start"
}, {
defaultToken: "string"
}]
}, {
token: "numbers",
regex: /\d+(?:[.](\d)*)?|[.]\d+/
}]
};
this.normalizeRules()
};
oop.inherits(ExampleHighlightRules, TextHighlightRules);
exports.ExampleHighlightRules = ExampleHighlightRules;
});
var langTools = ace.require("ace/ext/language_tools");
var editor = ace.edit("editor");
editor.session.setMode("ace/mode/javascript-custom");
editor.setOptions({
enableBasicAutocompletion: true,
enableLiveAutocompletion: true
});
editor.setTheme("ace/theme/monokai");
var lines = editor.session.doc.getAllLines();
var errors = [];
for (var i = 0; i < lines.length; i++) {
if (/[\w\d{(['"]/.test(lines[i])) {
alert("hello");
errors.push({
row: i,
column: lines[i].length,
text: "Missing Semicolon",
type: "error"
});
}
}
<script src="https://ajaxorg.github.io/ace-builds/src/ext-language_tools.js"></script>
<script src="https://ajaxorg.github.io/ace-builds/src/ace.js"></script>
<div id="editor" style="height: 200px; width: 400px"></div>
<div id="commandline" style="position: absolute; bottom: 10px; height: 20px; width: 800px;"></div>
UPDATE:
Poniższe pliki js są generowane z asem i dodane do mojej aplikacji szyn, pliki są ładowane w szynach app ale funkcjonalność (check średnik) wydaje się nie działać.
pracownik-semicolonlineend - http://pastebin.com/2kZ2fYr9 Tryb semicolonlineend - http://pastebin.com/eBY5VvNK
Aktualizacja:
- W edytorze asa, typ w Kwerenda1, QUERY2 w linii 1 i linii 2 odpowiednio
- Leave trzecia linia pusta
- Teraz w czwartej linii wpisz zapytanie bez średnika na końcu, znak x pojawia się w trzeciej linii e 5 A gdy piąta linia jest również bez średnikiem, a następnie znak x jest wyświetlany w czwartym zapytania
Próbowałem załadować pliki js do zasobów rails, daje błąd 404 nie znaleziono, jak załadować te pliki w potoku aktywów rails? –
@ M.R jakiego pliku nie ma? Czy dołączane pliki działają poza aplikacją RoR? Istnieją [szczegółowy przewodnik] (http://guides.rubyonrails.org/asset_pipeline.html) i powiązane SO [pytanie] (http://stackoverflow.com/questions/22158464/ace-editor-with-rails-4- precompiled-assets-madness) –
Próbowałem załadować pliki js z folderu publicznego, ale wystąpił błąd NetworkError: 404 Not Found -http: // localhost: 3000/javascripts/mode-semicolonlineend.js ", ale skompilowany plik aktywów ("/assets /mode-semicolonlineend.self-95f9750784a4318e4229fe5c5fb2188a4952fa721854c4d06c246deb6c4c94dd.js?body=1 ") jest obecny wyświetleń: ace.config.set (" basePath”, "/ javascripts"); editor.session.setMode ("semicolonlineend") ; –