Sono nuovo di ace-editor e ho incluso la modalità personalizzata per convalidare il mio codice e ogni riga dovrebbe finire con il punto e virgola, se il punto e virgola non è presente nella mia query per errore allora l'editor dovrebbe rinunciare all'avviso come "Mancante Punto e virgola".Come integrare il controllo della sintassi in Ace Editor utilizzando la modalità personalizzata?
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:
i seguenti file js vengono generati da asso e aggiunti alla mia domanda rotaie, i file vengono caricati in rotaie app, ma la funzionalità (controllo e virgola) non sembra funzionare.
lavoratore-semicolonlineend - http://pastebin.com/2kZ2fYr9 mode-semicolonlineend - http://pastebin.com/eBY5VvNK
Aggiornamento:
- In editor di asso, digitare un Query1, query2 in linea 1 e, rispettivamente, la linea 2
- Leave la terza riga vuota
- Ora nella quarta riga, digitare una query senza punto e virgola alla fine, il segno x viene visualizzato nella terza riga e 5 E quando la quinta riga è anche senza un punto e virgola, quindi il segno x è visualizzato in quarta interrogazione
Ho provato a caricare i file js nelle risorse dei binari, fornisce errore 404 non trovato, come caricare quei file nella pipeline delle risorse dei binari? –
@ M.R quale file non è stato trovato? I file che includi funzionano al di fuori dell'applicazione RoR? Ci sono [guida dettagliata] (http://guides.rubyonrails.org/asset_pipeline.html) e relativa SO [domanda] (http://stackoverflow.com/questions/22158464/ace-editor-with-rails-4- precompiled-assets-madness) –
Ho provato a caricare i file js dalla cartella pubblica, ho ottenuto l'errore seguente NetworkError: 404 Not Found -http: // localhost: 3000/javascripts/mode-semicolonlineend.js "ma il file di asset precompilato ("/assets /mode-semicolonlineend.self-95f9750784a4318e4229fe5c5fb2188a4952fa721854c4d06c246deb6c4c94dd.js?body=1 ") è presente Visualizza pagina: ace.config.set (" basePath", "/ javascript"); editor.session.setMode ("semicolonlineend") ; –