diff options
author | Robin Appelman <robin@icewind.nl> | 2017-07-13 17:00:31 +0300 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2017-08-02 23:32:27 +0300 |
commit | 8e2977163746052bd2acd20776f81bc16258e49f (patch) | |
tree | 0b40d532c838fef9050cb88e70d6570973a3c06e /js | |
parent | cfc5239271006b8357ae379356c8480bbe32657d (diff) |
update ace editor to 1.2.8
Signed-off-by: Roeland Jago Douma <roeland@famdouma.nl>
Diffstat (limited to 'js')
136 files changed, 8272 insertions, 6982 deletions
diff --git a/js/bower.json b/js/bower.json index 8009f63..dac8e6c 100644 --- a/js/bower.json +++ b/js/bower.json @@ -17,6 +17,6 @@ "tests" ], "dependencies": { - "ace-builds": "^1.2.5" + "ace-builds": "1.2.8" } } diff --git a/js/core/vendor/ace-builds/src-noconflict/ace.js b/js/core/vendor/ace-builds/src-noconflict/ace.js index 19c1ae7..d93cddc 100644 --- a/js/core/vendor/ace-builds/src-noconflict/ace.js +++ b/js/core/vendor/ace-builds/src-noconflict/ace.js @@ -1370,10 +1370,12 @@ exports.isAIR = ua.indexOf("AdobeAIR") >= 0; exports.isIPad = ua.indexOf("iPad") >= 0; -exports.isTouchPad = ua.indexOf("TouchPad") >= 0; - exports.isChromeOS = ua.indexOf(" CrOS ") >= 0; +exports.isIOS = /iPad|iPhone|iPod/.test(ua) && !window.MSStream; + +if (exports.isIOS) exports.isMac = true; + }); ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"], function(require, exports, module) { @@ -1909,19 +1911,22 @@ exports.delayedCall = function(fcn, defaultTimeout) { }; }); -ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang"], function(require, exports, module) { +ace.define("ace/keyboard/textinput_ios",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/lib/keys"], function(require, exports, module) { "use strict"; var event = require("../lib/event"); var useragent = require("../lib/useragent"); var dom = require("../lib/dom"); var lang = require("../lib/lang"); +var KEYS = require("../lib/keys"); +var MODS = KEYS.KEY_MODS; var BROKEN_SETDATA = useragent.isChrome < 18; var USE_IE_MIME_TYPE = useragent.isIE; var TextInput = function(parentNode, host) { + var self = this; var text = dom.createElement("textarea"); - text.className = "ace_text-input"; + text.className = useragent.isIOS ? "ace_text-input ace_text-input-ios" : "ace_text-input"; if (useragent.isTouchPad) text.setAttribute("x-palm-disable-auto-cap", true); @@ -1932,10 +1937,480 @@ var TextInput = function(parentNode, host) { text.setAttribute("spellcheck", false); text.style.opacity = "0"; - if (useragent.isOldIE) text.style.top = "-1000px"; parentNode.insertBefore(text, parentNode.firstChild); - var PLACEHOLDER = "\x01\x01"; + var PLACEHOLDER = "\n aaaa a\n"; + + var copied = false; + var cut = false; + var pasted = false; + var inComposition = false; + var tempStyle = ''; + var isSelectionEmpty = true; + try { var isFocused = document.activeElement === text; } catch(e) {} + + event.addListener(text, "blur", function(e) { + host.onBlur(e); + isFocused = false; + }); + event.addListener(text, "focus", function(e) { + isFocused = true; + host.onFocus(e); + resetSelection(); + }); + this.focus = function() { + if (tempStyle) return text.focus(); + text.style.position = "fixed"; + text.focus(); + }; + this.blur = function() { + text.blur(); + }; + this.isFocused = function() { + return isFocused; + }; + var syncSelection = lang.delayedCall(function() { + isFocused && resetSelection(isSelectionEmpty); + }); + var syncValue = lang.delayedCall(function() { + if (!inComposition) { + text.value = PLACEHOLDER; + isFocused && resetSelection(); + } + }); + + function resetSelection(isEmpty) { + if (inComposition) + return; + inComposition = true; + + if (inputHandler) { + selectionStart = 0; + selectionEnd = isEmpty ? 0 : text.value.length - 1; + } else { + var selectionStart = 4; + var selectionEnd = 5; + } + try { + text.setSelectionRange(selectionStart, selectionEnd); + } catch(e) {} + + inComposition = false; + } + + function resetValue() { + if (inComposition) + return; + text.value = PLACEHOLDER; + if (useragent.isWebKit) + syncValue.schedule(); + } + + useragent.isWebKit || host.addEventListener('changeSelection', function() { + if (host.selection.isEmpty() != isSelectionEmpty) { + isSelectionEmpty = !isSelectionEmpty; + syncSelection.schedule(); + } + }); + + resetValue(); + if (isFocused) + host.onFocus(); + + + var isAllSelected = function(text) { + return text.selectionStart === 0 && text.selectionEnd === text.value.length; + }; + + var onSelect = function(e) { + if (isAllSelected(text)) { + host.selectAll(); + resetSelection(); + } else if (inputHandler) { + resetSelection(host.selection.isEmpty()); + } + }; + + var inputHandler = null; + this.setInputHandler = function(cb) {inputHandler = cb}; + this.getInputHandler = function() {return inputHandler}; + var afterContextMenu = false; + + var sendText = function(data) { + if (text.selectionStart === 4 && text.selectionEnd === 5) { + return; + } + if (inputHandler) { + data = inputHandler(data); + inputHandler = null; + } + if (pasted) { + resetSelection(); + if (data) + host.onPaste(data); + pasted = false; + } else if (data == PLACEHOLDER.substr(0) && text.selectionStart === 4) { + if (afterContextMenu) + host.execCommand("del", {source: "ace"}); + else // some versions of android do not fire keydown when pressing backspace + host.execCommand("backspace", {source: "ace"}); + } else if (!copied) { + if (data.substring(0, 9) == PLACEHOLDER && data.length > PLACEHOLDER.length) + data = data.substr(9); + else if (data.substr(0, 4) == PLACEHOLDER.substr(0, 4)) + data = data.substr(4, data.length - PLACEHOLDER.length + 1); + else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0)) + data = data.slice(0, -1); + if (data == PLACEHOLDER.charAt(0)) { + } else if (data.charAt(data.length - 1) == PLACEHOLDER.charAt(0)) + data = data.slice(0, -1); + + if (data) + host.onTextInput(data); + } + if (copied) { + copied = false; + } + if (afterContextMenu) + afterContextMenu = false; + }; + var onInput = function(e) { + if (inComposition) + return; + var data = text.value; + sendText(data); + resetValue(); + }; + + var handleClipboardData = function(e, data, forceIEMime) { + var clipboardData = e.clipboardData || window.clipboardData; + if (!clipboardData || BROKEN_SETDATA) + return; + var mime = USE_IE_MIME_TYPE || forceIEMime ? "Text" : "text/plain"; + try { + if (data) { + return clipboardData.setData(mime, data) !== false; + } else { + return clipboardData.getData(mime); + } + } catch(e) { + if (!forceIEMime) + return handleClipboardData(e, data, true); + } + }; + + var doCopy = function(e, isCut) { + var data = host.getCopyText(); + if (!data) + return event.preventDefault(e); + + if (handleClipboardData(e, data)) { + if (useragent.isIOS) { + cut = isCut; + text.value = "\n aa" + data + "a a\n"; + text.setSelectionRange(4, 4 + data.length); + copied = { + value: data + }; + } + isCut ? host.onCut() : host.onCopy(); + if (!useragent.isIOS) event.preventDefault(e); + } else { + copied = true; + text.value = data; + text.select(); + setTimeout(function(){ + copied = false; + resetValue(); + resetSelection(); + isCut ? host.onCut() : host.onCopy(); + }); + } + }; + + var onCut = function(e) { + doCopy(e, true); + }; + + var onCopy = function(e) { + doCopy(e, false); + }; + + var onPaste = function(e) { + var data = handleClipboardData(e); + if (typeof data == "string") { + if (data) + host.onPaste(data, e); + if (useragent.isIE) + setTimeout(resetSelection); + event.preventDefault(e); + } + else { + text.value = ""; + pasted = true; + } + }; + + event.addCommandKeyListener(text, host.onCommandKey.bind(host)); + + event.addListener(text, "select", onSelect); + + event.addListener(text, "input", onInput); + + event.addListener(text, "cut", onCut); + event.addListener(text, "copy", onCopy); + event.addListener(text, "paste", onPaste); + var onCompositionStart = function(e) { + if (inComposition || !host.onCompositionStart || host.$readOnly) + return; + inComposition = {}; + inComposition.canUndo = host.session.$undoManager; + host.onCompositionStart(); + setTimeout(onCompositionUpdate, 0); + host.on("mousedown", onCompositionEnd); + if (inComposition.canUndo && !host.selection.isEmpty()) { + host.insert(""); + host.session.markUndoGroup(); + host.selection.clearSelection(); + } + host.session.markUndoGroup(); + }; + + var onCompositionUpdate = function() { + if (!inComposition || !host.onCompositionUpdate || host.$readOnly) + return; + var val = text.value.replace(/\x01/g, ""); + if (inComposition.lastValue === val) return; + + host.onCompositionUpdate(val); + if (inComposition.lastValue) + host.undo(); + if (inComposition.canUndo) + inComposition.lastValue = val; + if (inComposition.lastValue) { + var r = host.selection.getRange(); + host.insert(inComposition.lastValue); + host.session.markUndoGroup(); + inComposition.range = host.selection.getRange(); + host.selection.setRange(r); + host.selection.clearSelection(); + } + }; + + var onCompositionEnd = function(e) { + if (!host.onCompositionEnd || host.$readOnly) return; + var c = inComposition; + inComposition = false; + var timer = setTimeout(function() { + timer = null; + var str = text.value.replace(/\x01/g, ""); + if (inComposition) + return; + else if (str == c.lastValue) + resetValue(); + else if (!c.lastValue && str) { + resetValue(); + sendText(str); + } + }); + inputHandler = function compositionInputHandler(str) { + if (timer) + clearTimeout(timer); + str = str.replace(/\x01/g, ""); + if (str == c.lastValue) + return ""; + if (c.lastValue && timer) + host.undo(); + return str; + }; + host.onCompositionEnd(); + host.removeListener("mousedown", onCompositionEnd); + if (e.type == "compositionend" && c.range) { + host.selection.setRange(c.range); + } + var needsOnInput = + (!!useragent.isChrome && useragent.isChrome >= 53) || + (!!useragent.isWebKit && useragent.isWebKit >= 603); + + if (needsOnInput) { + onInput(); + } + }; + + + + var syncComposition = lang.delayedCall(onCompositionUpdate, 50); + + event.addListener(text, "compositionstart", onCompositionStart); + if (useragent.isGecko) { + event.addListener(text, "text", function(){syncComposition.schedule()}); + } else { + event.addListener(text, "keyup", function(){syncComposition.schedule()}); + event.addListener(text, "keydown", function(){syncComposition.schedule()}); + } + event.addListener(text, "compositionend", onCompositionEnd); + + this.getElement = function() { + return text; + }; + + this.setReadOnly = function(readOnly) { + text.readOnly = readOnly; + }; + + this.onContextMenu = function(e) { + afterContextMenu = true; + resetSelection(host.selection.isEmpty()); + host._emit("nativecontextmenu", {target: host, domEvent: e}); + this.moveToMouse(e, true); + }; + + this.moveToMouse = function(e, bringToFront) { + if (!tempStyle) + tempStyle = text.style.cssText; + text.style.cssText = (bringToFront ? "z-index:100000;" : "") + + "height:" + text.style.height + ";" + + (useragent.isIE ? "opacity:0.1;" : ""); + + var rect = host.container.getBoundingClientRect(); + var style = dom.computedStyle(host.container); + var top = rect.top + (parseInt(style.borderTopWidth) || 0); + var left = rect.left + (parseInt(rect.borderLeftWidth) || 0); + var maxTop = rect.bottom - top - text.clientHeight -2; + var move = function(e) { + text.style.left = e.clientX - left - 2 + "px"; + text.style.top = Math.min(e.clientY - top - 2, maxTop) + "px"; + }; + move(e); + + if (e.type != "mousedown") + return; + + if (host.renderer.$keepTextAreaAtCursor) + host.renderer.$keepTextAreaAtCursor = null; + + clearTimeout(closeTimeout); + if (useragent.isWin) + event.capture(host.container, move, onContextMenuClose); + }; + + this.onContextMenuClose = onContextMenuClose; + var closeTimeout; + function onContextMenuClose() { + clearTimeout(closeTimeout); + closeTimeout = setTimeout(function () { + if (tempStyle) { + text.style.cssText = tempStyle; + tempStyle = ''; + } + if (host.renderer.$keepTextAreaAtCursor == null) { + host.renderer.$keepTextAreaAtCursor = true; + host.renderer.$moveTextAreaToCursor(); + } + }, 0); + } + + var onContextMenu = function(e) { + host.textInput.onContextMenu(e); + onContextMenuClose(); + }; + event.addListener(text, "mouseup", onContextMenu); + event.addListener(text, "mousedown", function(e) { + e.preventDefault(); + onContextMenuClose(); + }); + event.addListener(host.renderer.scroller, "contextmenu", onContextMenu); + event.addListener(text, "contextmenu", onContextMenu); + + if (useragent.isIOS) { + var typingResetTimeout = null; + var typing = false; + + parentNode.addEventListener("keydown", function (e) { + if (typingResetTimeout) clearTimeout(typingResetTimeout); + typing = true; + }); + + parentNode.addEventListener("keyup", function (e) { + typingResetTimeout = setTimeout(function () { + typing = false; + }, 100); + }); + var detectArrowKeys = function(e) { + if (document.activeElement !== text) return; + if (typing) return; + + if (cut) { + return setTimeout(function () { + cut = false; + }, 100); + } + var selectionStart = text.selectionStart; + var selectionEnd = text.selectionEnd; + text.setSelectionRange(4, 5); + if (selectionStart == selectionEnd) { + switch (selectionStart) { + case 0: host.onCommandKey(null, 0, KEYS.up); break; + case 1: host.onCommandKey(null, 0, KEYS.home); break; + case 2: host.onCommandKey(null, MODS.option, KEYS.left); break; + case 4: host.onCommandKey(null, 0, KEYS.left); break; + case 5: host.onCommandKey(null, 0, KEYS.right); break; + case 7: host.onCommandKey(null, MODS.option, KEYS.right); break; + case 8: host.onCommandKey(null, 0, KEYS.end); break; + case 9: host.onCommandKey(null, 0, KEYS.down); break; + } + } else { + switch (selectionEnd) { + case 6: host.onCommandKey(null, MODS.shift, KEYS.right); break; + case 7: host.onCommandKey(null, MODS.shift | MODS.option, KEYS.right); break; + case 8: host.onCommandKey(null, MODS.shift, KEYS.end); break; + case 9: host.onCommandKey(null, MODS.shift, KEYS.down); break; + } + switch (selectionStart) { + case 0: host.onCommandKey(null, MODS.shift, KEYS.up); break; + case 1: host.onCommandKey(null, MODS.shift, KEYS.home); break; + case 2: host.onCommandKey(null, MODS.shift | MODS.option, KEYS.left); break; + case 3: host.onCommandKey(null, MODS.shift, KEYS.left); break; + } + } + } + document.addEventListener("selectionchange", detectArrowKeys); + host.on("destroy", function() { + document.removeEventListener("selectionchange", detectArrowKeys); + }) + } +}; + +exports.TextInput = TextInput; +}); + +ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/keyboard/textinput_ios"], function(require, exports, module) { +"use strict"; + +var event = require("../lib/event"); +var useragent = require("../lib/useragent"); +var dom = require("../lib/dom"); +var lang = require("../lib/lang"); +var BROKEN_SETDATA = useragent.isChrome < 18; +var USE_IE_MIME_TYPE = useragent.isIE; + +var TextInputIOS = require("./textinput_ios").TextInput +var TextInput = function(parentNode, host) { + if (useragent.isIOS) + return TextInputIOS.call(this, parentNode, host); + + var text = dom.createElement("textarea"); + text.className = "ace_text-input"; + + text.setAttribute("wrap", "off"); + text.setAttribute("autocorrect", "off"); + text.setAttribute("autocapitalize", "off"); + text.setAttribute("spellcheck", false); + + text.style.opacity = "0"; + parentNode.insertBefore(text, parentNode.firstChild); + + var PLACEHOLDER = "\u2028\u2028"; var copied = false; var pasted = false; @@ -2023,54 +2498,6 @@ var TextInput = function(parentNode, host) { var isAllSelected = function(text) { return text.selectionStart === 0 && text.selectionEnd === text.value.length; }; - if (!text.setSelectionRange && text.createTextRange) { - text.setSelectionRange = function(selectionStart, selectionEnd) { - var range = this.createTextRange(); - range.collapse(true); - range.moveStart('character', selectionStart); - range.moveEnd('character', selectionEnd); - range.select(); - }; - isAllSelected = function(text) { - try { - var range = text.ownerDocument.selection.createRange(); - }catch(e) {} - if (!range || range.parentElement() != text) return false; - return range.text == text.value; - } - } - if (useragent.isOldIE) { - var inPropertyChange = false; - var onPropertyChange = function(e){ - if (inPropertyChange) - return; - var data = text.value; - if (inComposition || !data || data == PLACEHOLDER) - return; - if (e && data == PLACEHOLDER[0]) - return syncProperty.schedule(); - - sendText(data); - inPropertyChange = true; - resetValue(); - inPropertyChange = false; - }; - var syncProperty = lang.delayedCall(onPropertyChange); - event.addListener(text, "propertychange", onPropertyChange); - - var keytable = { 13:1, 27:1 }; - event.addListener(text, "keyup", function (e) { - if (inComposition && (!text.value || keytable[e.keyCode])) - setTimeout(onCompositionEnd, 0); - if ((text.value.charCodeAt(0)||0) < 129) { - return syncProperty.call(); - } - inComposition ? onCompositionUpdate() : onCompositionStart(); - }); - event.addListener(text, "keydown", function (e) { - syncProperty.schedule(50); - }); - } var onSelect = function(e) { if (copied) { @@ -2197,7 +2624,7 @@ var TextInput = function(parentNode, host) { event.addListener(text, "cut", onCut); event.addListener(text, "copy", onCopy); event.addListener(text, "paste", onPaste); - if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)){ + if (!('oncut' in text) || !('oncopy' in text) || !('onpaste' in text)) { event.addListener(parentNode, "keydown", function(e) { if ((useragent.isMac && !e.metaKey) || !e.ctrlKey) return; @@ -2234,7 +2661,7 @@ var TextInput = function(parentNode, host) { var onCompositionUpdate = function() { if (!inComposition || !host.onCompositionUpdate || host.$readOnly) return; - var val = text.value.replace(/\x01/g, ""); + var val = text.value.replace(/\u2028/g, ""); if (inComposition.lastValue === val) return; host.onCompositionUpdate(val); @@ -2258,7 +2685,7 @@ var TextInput = function(parentNode, host) { inComposition = false; var timer = setTimeout(function() { timer = null; - var str = text.value.replace(/\x01/g, ""); + var str = text.value.replace(/\u2028/g, ""); if (inComposition) return; else if (str == c.lastValue) @@ -2271,7 +2698,7 @@ var TextInput = function(parentNode, host) { inputHandler = function compositionInputHandler(str) { if (timer) clearTimeout(timer); - str = str.replace(/\x01/g, ""); + str = str.replace(/\u2028/g, ""); if (str == c.lastValue) return ""; if (c.lastValue && timer) @@ -2283,6 +2710,13 @@ var TextInput = function(parentNode, host) { if (e.type == "compositionend" && c.range) { host.selection.setRange(c.range); } + var needsOnInput = + (!!useragent.isChrome && useragent.isChrome >= 53) || + (!!useragent.isWebKit && useragent.isWebKit >= 603); + + if (needsOnInput) { + onInput(); + } }; @@ -2314,8 +2748,6 @@ var TextInput = function(parentNode, host) { }; this.moveToMouse = function(e, bringToFront) { - if (!bringToFront && useragent.isOldIE) - return; if (!tempStyle) tempStyle = text.style.cssText; text.style.cssText = (bringToFront ? "z-index:100000;" : "") @@ -2340,7 +2772,7 @@ var TextInput = function(parentNode, host) { host.renderer.$keepTextAreaAtCursor = null; clearTimeout(closeTimeout); - if (useragent.isWin && !useragent.isOldIE) + if (useragent.isWin) event.capture(host.container, move, onContextMenuClose); }; @@ -2357,7 +2789,7 @@ var TextInput = function(parentNode, host) { host.renderer.$keepTextAreaAtCursor = true; host.renderer.$moveTextAreaToCursor(); } - }, useragent.isOldIE ? 200 : 0); + }, 0); } var onContextMenu = function(e) { @@ -2423,9 +2855,12 @@ function DefaultHandlers(mouseHandler) { if (selectionEmpty || button == 1) editor.selection.moveToPosition(pos); editor.$blockScrolling--; - if (button == 2) + if (button == 2) { editor.textInput.onContextMenu(ev.domEvent); - return; // stopping event here breaks contextmenu on ff mac + if (!useragent.isMozilla) + ev.preventDefault(); + } + return; } this.mousedownEvent.time = Date.now(); @@ -2693,6 +3128,13 @@ function Tooltip (parentNode) { this.getWidth = function() { return this.getElement().offsetWidth; }; + + this.destroy = function() { + this.isOpen = false; + if (this.$element && this.$element.parentNode) { + this.$element.parentNode.removeChild(this.$element); + } + }; }).call(Tooltip.prototype); @@ -3327,7 +3769,7 @@ exports.get = function (url, callback) { exports.loadScript = function(path, callback) { var head = dom.getDocumentHead(); var s = document.createElement('script'); - s.setAttribute('nonce', btoa(OC.requestToken)); + s.src = path; head.appendChild(s); @@ -4585,6 +5027,16 @@ var Selection = function(session) { this.moveCursorDown = function() { this.moveCursorBy(1, 0); }; + this.wouldMoveIntoSoftTab = function(cursor, tabSize, direction) { + var start = cursor.column; + var end = cursor.column + tabSize; + + if (direction < 0) { + start = cursor.column - tabSize; + end = cursor.column; + } + return this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(start, end).split(" ").length-1 == tabSize + } this.moveCursorLeft = function() { var cursor = this.lead.getPosition(), fold; @@ -4598,10 +5050,11 @@ var Selection = function(session) { } else { var tabSize = this.session.getTabSize(); - if (this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(cursor.column-tabSize, cursor.column).split(" ").length-1 == tabSize) + if (this.wouldMoveIntoSoftTab(cursor, tabSize, -1) && !this.session.getNavigateWithinSoftTabs()) { this.moveCursorBy(0, -tabSize); - else + } else { this.moveCursorBy(0, -1); + } } }; this.moveCursorRight = function() { @@ -4618,10 +5071,11 @@ var Selection = function(session) { else { var tabSize = this.session.getTabSize(); var cursor = this.lead; - if (this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(cursor.column, cursor.column+tabSize).split(" ").length-1 == tabSize) + if (this.wouldMoveIntoSoftTab(cursor, tabSize, 1) && !this.session.getNavigateWithinSoftTabs()) { this.moveCursorBy(0, tabSize); - else + } else { this.moveCursorBy(0, 1); + } } }; this.moveCursorLineStart = function() { @@ -5189,7 +5643,7 @@ var Tokenizer = function(rules) { rule = state[mapping[i]]; if (rule.onMatch) - type = rule.onMatch(value, currentState, stack); + type = rule.onMatch(value, currentState, stack, line); else type = rule.token; @@ -5211,6 +5665,8 @@ var Tokenizer = function(rules) { re = this.regExps[currentState]; re.lastIndex = index; } + if (rule.consumeLineEnd) + lastIndex = index; break; } @@ -5424,13 +5880,12 @@ var TextHighlightRules = function() { } } } - var includeName = typeof rule == "string" - ? rule - : typeof rule.include == "string" - ? rule.include - : ""; + var includeName = typeof rule == "string" ? rule : rule.include; if (includeName) { - toInsert = rules[includeName]; + if (Array.isArray(includeName)) + toInsert = includeName.map(function(x) { return rules[x]; }); + else + toInsert = rules[includeName]; } if (toInsert) { @@ -5633,6 +6088,8 @@ var SAFE_INSERT_BEFORE_TOKENS = var context; var contextCache = {}; +var defaultQuotes = {'"' : '"', "'" : "'"}; + var initContext = function(editor) { var id = -1; if (editor.multiSelect) { @@ -5666,7 +6123,7 @@ var getWrapped = function(selection, selected, opening, closing) { }; }; -var CstyleBehaviour = function() { +var CstyleBehaviour = function(options) { this.add("braces", "insertion", function(state, action, editor, session, text) { var cursor = editor.getCursorPosition(); var line = session.doc.getLine(cursor.row); @@ -5677,7 +6134,7 @@ var CstyleBehaviour = function() { if (selected !== "" && selected !== "{" && editor.getWrapBehavioursEnabled()) { return getWrapped(selection, selected, '{', '}'); } else if (CstyleBehaviour.isSaneInsertion(editor, session)) { - if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode) { + if (/[\]\}\)]/.test(line[cursor.column]) || editor.inMultiSelectMode || options && options.braces) { CstyleBehaviour.recordAutoInsert(editor, session, "}"); return { text: '{}', @@ -5840,14 +6297,15 @@ var CstyleBehaviour = function() { }); this.add("string_dquotes", "insertion", function(state, action, editor, session, text) { - if (text == '"' || text == "'") { + var quotes = session.$mode.$quotes || defaultQuotes; + if (text.length == 1 && quotes[text]) { if (this.lineCommentStart && this.lineCommentStart.indexOf(text) != -1) return; initContext(editor); var quote = text; var selection = editor.getSelectionRange(); var selected = session.doc.getTextRange(selection); - if (selected !== "" && selected !== "'" && selected != '"' && editor.getWrapBehavioursEnabled()) { + if (selected !== "" && (selected.length != 1 || !quotes[selected]) && editor.getWrapBehavioursEnabled()) { return getWrapped(selection, selected, quote, quote); } else if (!selected) { var cursor = editor.getCursorPosition(); @@ -6047,7 +6505,7 @@ var Mode = function() { }; (function() { - this.$behaviour = new CstyleBehaviour(); + this.$defaultBehaviour = new CstyleBehaviour(); this.tokenRe = new RegExp("^[" + unicode.packages.L @@ -6974,6 +7432,9 @@ var BackgroundTokenizer = function(tokenizer, editor) { } self.currentLine = currentLine; + if (endLine == -1) + endLine = currentLine; + if (startLine <= endLine) self.fireUpdateEvent(startLine, endLine); }; @@ -8148,9 +8609,13 @@ function Folding() { this.getCommentFoldRange = function(row, column, dir) { var iterator = new TokenIterator(this, row, column); var token = iterator.getCurrentToken(); - if (token && /^comment|string/.test(token.type)) { + var type = token.type; + if (token && /^comment|string/.test(type)) { + type = type.match(/comment|string/)[0]; + if (type == "comment") + type += "|doc-start"; + var re = new RegExp(type); var range = new Range(); - var re = new RegExp(token.type.replace(/\..*/, "\\.")); if (dir != 1) { do { token = iterator.stepBackward(); @@ -8164,8 +8629,16 @@ function Folding() { iterator = new TokenIterator(this, row, column); if (dir != -1) { + var lastRow = -1; do { token = iterator.stepForward(); + if (lastRow == -1) { + var state = this.getState(iterator.$row); + if (!re.test(state)) + lastRow = iterator.$row; + } else if (iterator.$row > lastRow) { + break; + } } while (token && re.test(token.type)); token = iterator.stepBackward(); } else @@ -8615,6 +9088,8 @@ var EditSession = function(text, mode) { }; +EditSession.$uid = 0; + (function() { oop.implement(this, EventEmitter); @@ -8824,6 +9299,12 @@ var EditSession = function(text, mode) { this.isTabStop = function(position) { return this.$useSoftTabs && (position.column % this.$tabSize === 0); }; + this.setNavigateWithinSoftTabs = function (navigateWithinSoftTabs) { + this.setOption("navigateWithinSoftTabs", navigateWithinSoftTabs) + } + this.getNavigateWithinSoftTabs = function() { + return this.$navigateWithinSoftTabs; + } this.$overwrite = false; this.setOverwrite = function(overwrite) { @@ -10303,6 +10784,7 @@ config.defineOptions(EditSession.prototype, "session", { initialValue: 4, handlesSet: true }, + navigateWithinSoftTabs: {initialValue: false}, overwrite: { set: function(val) {this._signal("changeOverwrite");}, initialValue: false @@ -10350,18 +10832,15 @@ var Search = function() { return false; var firstRange = null; - iterator.forEach(function(range, row, offset) { - if (!range.start) { - var column = range.offset + (offset || 0); - firstRange = new Range(row, column, row, column + range.length); - if (!range.length && options.start && options.start.start - && options.skipCurrent != false && firstRange.isEqual(options.start) - ) { - firstRange = null; - return false; - } - } else - firstRange = range; + iterator.forEach(function(sr, sc, er, ec) { + firstRange = new Range(sr, sc, er, ec); + if (sc == ec && options.start && options.start.start + && options.skipCurrent != false && firstRange.isEqual(options.start) + ) { + firstRange = null; + return false; + } + return true; }); @@ -10464,62 +10943,6 @@ var Search = function() { return replacement; }; - this.$matchIterator = function(session, options) { - var re = this.$assembleRegExp(options); - if (!re) - return false; - - var callback; - if (options.$isMultiLine) { - var len = re.length; - var matchIterator = function(line, row, offset) { - var startIndex = line.search(re[0]); - if (startIndex == -1) - return; - for (var i = 1; i < len; i++) { - line = session.getLine(row + i); - if (line.search(re[i]) == -1) - return; - } - - var endIndex = line.match(re[len - 1])[0].length; - - var range = new Range(row, startIndex, row + len - 1, endIndex); - if (re.offset == 1) { - range.start.row--; - range.start.column = Number.MAX_VALUE; - } else if (offset) - range.start.column += offset; - - if (callback(range)) - return true; - }; - } else if (options.backwards) { - var matchIterator = function(line, row, startIndex) { - var matches = lang.getMatchOffsets(line, re); - for (var i = matches.length-1; i >= 0; i--) - if (callback(matches[i], row, startIndex)) - return true; - }; - } else { - var matchIterator = function(line, row, startIndex) { - var matches = lang.getMatchOffsets(line, re); - for (var i = 0; i < matches.length; i++) - if (callback(matches[i], row, startIndex)) - return true; - }; - } - - var lineIterator = this.$lineIterator(session, options); - - return { - forEach: function(_callback) { - callback = _callback; - lineIterator.forEach(matchIterator); - } - }; - }; - this.$assembleRegExp = function(options, $disableFakeMultiline) { if (options.needle instanceof RegExp) return options.re = options.needle; @@ -10533,7 +10956,7 @@ var Search = function() { needle = lang.escapeRegExp(needle); if (options.wholeWord) - needle = "\\b" + needle + "\\b"; + needle = addWordBoundary(needle, options); var modifier = options.caseSensitive ? "gm" : "gmi"; @@ -10557,16 +10980,13 @@ var Search = function() { } catch(e) { return false; } - if (parts[0] == "") { - re.shift(); - re.offset = 1; - } else { - re.offset = 0; - } return re; }; - this.$lineIterator = function(session, options) { + this.$matchIterator = function(session, options) { + var re = this.$assembleRegExp(options); + if (!re) + return false; var backwards = options.backwards == true; var skipCurrent = options.skipCurrent != false; @@ -10580,48 +11000,114 @@ var Search = function() { var firstRow = range ? range.start.row : 0; var lastRow = range ? range.end.row : session.getLength() - 1; - - var forEach = backwards ? function(callback) { + + if (backwards) { + var forEach = function(callback) { var row = start.row; - - var line = session.getLine(row).substring(0, start.column); - if (callback(line, row)) + if (forEachInLine(row, start.column, callback)) return; - for (row--; row >= firstRow; row--) - if (callback(session.getLine(row), row)) + if (forEachInLine(row, Number.MAX_VALUE, callback)) return; - if (options.wrap == false) return; - for (row = lastRow, firstRow = start.row; row >= firstRow; row--) - if (callback(session.getLine(row), row)) + if (forEachInLine(row, Number.MAX_VALUE, callback)) return; - } : function(callback) { + }; + } + else { + var forEach = function(callback) { var row = start.row; - - var line = session.getLine(row).substr(start.column); - if (callback(line, row, start.column)) + if (forEachInLine(row, start.column, callback)) return; - - for (row = row+1; row <= lastRow; row++) - if (callback(session.getLine(row), row)) + for (row = row + 1; row <= lastRow; row++) + if (forEachInLine(row, 0, callback)) return; - if (options.wrap == false) return; - for (row = firstRow, lastRow = start.row; row <= lastRow; row++) - if (callback(session.getLine(row), row)) + if (forEachInLine(row, 0, callback)) return; }; + } + if (options.$isMultiLine) { + var len = re.length; + var forEachInLine = function(row, offset, callback) { + var startRow = backwards ? row - len + 1 : row; + if (startRow < 0) return; + var line = session.getLine(startRow); + var startIndex = line.search(re[0]) + if (!backwards && startIndex < offset || startIndex === -1) return; + for (var i = 1; i < len; i++) { + line = session.getLine(startRow + i); + if (line.search(re[i]) == -1) + return; + } + var endIndex = line.match(re[len - 1])[0].length; + if (backwards && endIndex > offset) return; + if (callback(startRow, startIndex, startRow + len - 1, endIndex)) + return true; + }; + } + else if (backwards) { + var forEachInLine = function(row, endIndex, callback) { + var line = session.getLine(row); + var matches = []; + var m, last = 0; + re.lastIndex = 0; + while((m = re.exec(line))) { + var length = m[0].length; + last = m.index; + if (!length) { + if (last >= line.length) break; + re.lastIndex = last += 1; + } + if (m.index + length > endIndex) + break; + matches.push(m.index, length) + } + for (var i = matches.length - 1; i >= 0; i -= 2) { + var column = matches[i - 1]; + var length = matches[i]; + if (callback(row, column, row, column + length)) + return true; + } + }; + } + else { + var forEachInLine = function(row, startIndex, callback) { + var line = session.getLine(row); + var m; + var last = startIndex; + re.lastIndex = startIndex; + while((m = re.exec(line))) { + var length = m[0].length; + last = m.index; + if (callback(row, last, row,last + length)) + return true; + if (!length) { + re.lastIndex = last += 1; + if (last >= line.length) return false; + } + } + }; + } return {forEach: forEach}; }; }).call(Search.prototype); +function addWordBoundary(needle, options) { + function wordBoundary(c) { + if (/\w/.test(c) || options.regExp) return "\\b"; + return ""; + } + return wordBoundary(needle[0]) + needle + + wordBoundary(needle[needle.length - 1]); +} + exports.Search = Search; }); @@ -10713,7 +11199,8 @@ MultiHashHandler.prototype = HashHandler.prototype; function getPosition(command) { return typeof command == "object" && command.bindKey - && command.bindKey.position || 0; + && command.bindKey.position + || (command.isDefault ? -100 : 0); } this._addCommandToBinding = function(keyId, command, position) { var ckb = this.commandKeyBinding, i; @@ -10727,13 +11214,11 @@ MultiHashHandler.prototype = HashHandler.prototype; } else if ((i = ckb[keyId].indexOf(command)) != -1) { ckb[keyId].splice(i, 1); } - + if (typeof position != "number") { - if (position || command.isDefault) - position = -100; - else - position = getPosition(command); + position = getPosition(command); } + var commands = ckb[keyId]; for (i = 0; i < commands.length; i++) { var other = commands[i]; @@ -10875,7 +11360,7 @@ oop.inherits(CommandManager, MultiHashHandler); } return false; } - + if (typeof command === "string") command = this.commands[command]; @@ -10885,6 +11370,9 @@ oop.inherits(CommandManager, MultiHashHandler); if (editor && editor.$readOnly && !command.readOnly) return false; + if (command.isAvailable && !command.isAvailable(editor)) + return false; + var e = {editor: editor, command: command, args: args}; e.returnValue = this._emit("exec", e); this._signal("afterExec", e); @@ -10976,7 +11464,7 @@ exports.commands = [{ readOnly: true }, { name: "goToNextError", - bindKey: bindKey("Alt-E", "Ctrl-E"), + bindKey: bindKey("Alt-E", "F4"), exec: function(editor) { config.loadModule("ace/ext/error_marker", function(module) { module.showErrorMarker(editor, 1); @@ -10986,7 +11474,7 @@ exports.commands = [{ readOnly: true }, { name: "goToPreviousError", - bindKey: bindKey("Alt-Shift-E", "Ctrl-Shift-E"), + bindKey: bindKey("Alt-Shift-E", "Shift-F4"), exec: function(editor) { config.loadModule("ace/ext/error_marker", function(module) { module.showErrorMarker(editor, -1); @@ -11111,7 +11599,7 @@ exports.commands = [{ readOnly: true }, { name: "selecttostart", - bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Up"), + bindKey: bindKey("Ctrl-Shift-Home", "Command-Shift-Home|Command-Shift-Up"), exec: function(editor) { editor.getSelection().selectFileStart(); }, multiSelectAction: "forEach", readOnly: true, @@ -11127,7 +11615,7 @@ exports.commands = [{ aceCommandGroup: "fileJump" }, { name: "selectup", - bindKey: bindKey("Shift-Up", "Shift-Up"), + bindKey: bindKey("Shift-Up", "Shift-Up|Ctrl-Shift-P"), exec: function(editor) { editor.getSelection().selectUp(); }, multiSelectAction: "forEach", scrollIntoView: "cursor", @@ -11141,7 +11629,7 @@ exports.commands = [{ readOnly: true }, { name: "selecttoend", - bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-Down"), + bindKey: bindKey("Ctrl-Shift-End", "Command-Shift-End|Command-Shift-Down"), exec: function(editor) { editor.getSelection().selectFileEnd(); }, multiSelectAction: "forEach", readOnly: true, @@ -11157,7 +11645,7 @@ exports.commands = [{ aceCommandGroup: "fileJump" }, { name: "selectdown", - bindKey: bindKey("Shift-Down", "Shift-Down"), + bindKey: bindKey("Shift-Down", "Shift-Down|Ctrl-Shift-N"), exec: function(editor) { editor.getSelection().selectDown(); }, multiSelectAction: "forEach", scrollIntoView: "cursor", @@ -11185,7 +11673,7 @@ exports.commands = [{ readOnly: true }, { name: "selecttolinestart", - bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left"), + bindKey: bindKey("Alt-Shift-Left", "Command-Shift-Left|Ctrl-Shift-A"), exec: function(editor) { editor.getSelection().selectLineStart(); }, multiSelectAction: "forEach", scrollIntoView: "cursor", @@ -11199,7 +11687,7 @@ exports.commands = [{ readOnly: true }, { name: "selectleft", - bindKey: bindKey("Shift-Left", "Shift-Left"), + bindKey: bindKey("Shift-Left", "Shift-Left|Ctrl-Shift-B"), exec: function(editor) { editor.getSelection().selectLeft(); }, multiSelectAction: "forEach", scrollIntoView: "cursor", @@ -11227,7 +11715,7 @@ exports.commands = [{ readOnly: true }, { name: "selecttolineend", - bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right"), + bindKey: bindKey("Alt-Shift-Right", "Command-Shift-Right|Shift-End|Ctrl-Shift-E"), exec: function(editor) { editor.getSelection().selectLineEnd(); }, multiSelectAction: "forEach", scrollIntoView: "cursor", @@ -11540,7 +12028,7 @@ exports.commands = [{ scrollIntoView: "cursor" }, { name: "transposeletters", - bindKey: bindKey("Ctrl-T", "Ctrl-T"), + bindKey: bindKey("Alt-Shift-X", "Ctrl-T"), exec: function(editor) { editor.transposeLetters(); }, multiSelectAction: function(editor) {editor.transposeSelections(1); }, scrollIntoView: "cursor" @@ -11672,13 +12160,17 @@ var Editor = function(renderer, session) { var container = renderer.getContainerElement(); this.container = container; this.renderer = renderer; + this.id = "editor" + (++Editor.$uid); this.commands = new CommandManager(useragent.isMac ? "mac" : "win", defaultCommands); - this.textInput = new TextInput(renderer.getTextAreaContainer(), this); - this.renderer.textarea = this.textInput.getElement(); + if (typeof document == "object") { + this.textInput = new TextInput(renderer.getTextAreaContainer(), this); + this.renderer.textarea = this.textInput.getElement(); + this.$mouseHandler = new MouseHandler(this); + new FoldHandler(this); + } + this.keyBinding = new KeyBinding(this); - this.$mouseHandler = new MouseHandler(this); - new FoldHandler(this); this.$blockScrolling = 0; this.$search = new Search().set({ @@ -11705,6 +12197,8 @@ var Editor = function(renderer, session) { config._signal("editor", this); }; +Editor.$uid = 0; + (function(){ oop.implement(this, EventEmitter); @@ -11951,6 +12445,9 @@ var Editor = function(renderer, session) { oldSession && oldSession._signal("changeEditor", {oldEditor: this}); session && session._signal("changeEditor", {editor: this}); + + if (session && session.bgTokenizer) + session.bgTokenizer.scheduleStart(); }; this.getSession = function() { return this.session; @@ -12091,7 +12588,8 @@ var Editor = function(renderer, session) { var row = iterator.getCurrentTokenRow(); var column = iterator.getCurrentTokenColumn(); var range = new Range(row, column, row, column+token.value.length); - if (session.$tagHighlight && range.compareRange(session.$backMarkers[session.$tagHighlight].range)!==0) { + var sbm = session.$backMarkers[session.$tagHighlight]; + if (session.$tagHighlight && sbm != undefined && range.compareRange(sbm.range) !== 0) { session.removeMarker(session.$tagHighlight); session.$tagHighlight = null; } @@ -12359,7 +12857,7 @@ var Editor = function(renderer, session) { cursor = this.session.remove(range); this.clearSelection(); } - else if (this.session.getOverwrite()) { + else if (this.session.getOverwrite() && text.indexOf("\n") == -1) { var range = new Range.fromPoints(cursor, cursor); range.end.column += text.length; this.session.remove(range); @@ -12618,6 +13116,7 @@ var Editor = function(renderer, session) { range = new Range(cursor.row, column-2, cursor.row, column); } this.session.replace(range, swap); + this.session.selection.moveToPosition(range.end); }; this.toLowerCase = function() { var originalRange = this.getSelectionRange(); @@ -13773,7 +14272,7 @@ var Gutter = function(parentEl) { var text = lastLineNumber = gutterRenderer ? gutterRenderer.getText(session, row) : row + firstLineNumber; - if (text != cell.textNode.data) + if (text !== cell.textNode.data) cell.textNode.data = text; row++; @@ -13880,9 +14379,7 @@ var Marker = function(parentEl) { }; this.update = function(config) { - var config = config || this.config; - if (!config) - return; + if (!config) return; this.config = config; @@ -14821,6 +15318,7 @@ var VScrollBar = function(parent, renderer) { this.width = dom.scrollbarWidth(parent.ownerDocument); this.inner.style.width = this.element.style.width = (this.width || 15) + 5 + "px"; + this.$minWidth = 0; }; oop.inherits(VScrollBar, ScrollBar); @@ -14840,7 +15338,7 @@ oop.inherits(VScrollBar, ScrollBar); this.skipEvent = false; }; this.getWidth = function() { - return this.isVisible ? this.width : 0; + return Math.max(this.isVisible ? this.width : 0, this.$minWidth || 0); }; this.setHeight = function(height) { this.element.style.height = height + "px"; @@ -15119,6 +15617,7 @@ overflow: hidden;\ font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;\ direction: ltr;\ text-align: left;\ +-webkit-tap-highlight-color: rgba(0, 0, 0, 0);\ }\ .ace_scroller {\ position: absolute;\ @@ -15292,6 +15791,9 @@ box-sizing: border-box;\ border-left: 2px solid;\ transform: translatez(0);\ }\ +.ace_multiselect .ace_cursor {\ +border-left-width: 1px;\ +}\ .ace_slim-cursors .ace_cursor {\ border-left-width: 1px;\ }\ @@ -15306,9 +15808,6 @@ opacity: 0.2;\ -webkit-transition: opacity 0.18s;\ transition: opacity 0.18s;\ }\ -.ace_editor.ace_multiselect .ace_cursor {\ -border-left-width: 1px;\ -}\ .ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {\ position: absolute;\ z-index: 3;\ @@ -15486,6 +15985,11 @@ z-index: 8;\ .ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\ .ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\ .ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}\ +.ace_text-input-ios {\ +position: absolute !important;\ +top: -100000px !important;\ +left: -100000px !important;\ +}\ "; dom.importCssString(editorCss, "ace_editor.css"); @@ -15644,7 +16148,7 @@ var VirtualRenderer = function(container, theme) { this.$loop.schedule(this.CHANGE_FULL); this.session.$setFontMetrics(this.$fontMetrics); - this.scrollBarV.scrollLeft = this.scrollBarV.scrollTop = null; + this.scrollBarH.scrollLeft = this.scrollBarV.scrollTop = null; this.onChangeNewLineMode = this.onChangeNewLineMode.bind(this); this.onChangeNewLineMode() @@ -16247,6 +16751,7 @@ var VirtualRenderer = function(container, theme) { }; this.$updateLines = function() { + if (!this.$changedLines) return; var firstRow = this.$changedLines.firstRow; var lastRow = this.$changedLines.lastRow; this.$changedLines = null; @@ -16761,7 +17266,26 @@ var net = require("../lib/net"); var EventEmitter = require("../lib/event_emitter").EventEmitter; var config = require("../config"); -var WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl) { +function $workerBlob(workerUrl) { + var script = "importScripts('" + net.qualifyURL(workerUrl) + "');"; + try { + return new Blob([script], {"type": "application/javascript"}); + } catch (e) { // Backwards-compatibility + var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder; + var blobBuilder = new BlobBuilder(); + blobBuilder.append(script); + return blobBuilder.getBlob("application/javascript"); + } +} + +function createWorker(workerUrl) { + var blob = $workerBlob(workerUrl); + var URL = window.URL || window.webkitURL; + var blobURL = URL.createObjectURL(blob); + return new Worker(blobURL); +} + +var WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl, importScripts) { this.$sendDeltaQueue = this.$sendDeltaQueue.bind(this); this.changeListener = this.changeListener.bind(this); this.onMessage = this.onMessage.bind(this); @@ -16780,19 +17304,9 @@ var WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl) { }); } - try { - this.$worker = new Worker(workerUrl); - } catch(e) { - if (e instanceof window.DOMException) { - var blob = this.$workerBlob(workerUrl); - var URL = window.URL || window.webkitURL; - var blobURL = URL.createObjectURL(blob); - - this.$worker = new Worker(blobURL); - URL.revokeObjectURL(blobURL); - } else { - throw e; - } + this.$worker = createWorker(workerUrl); + if (importScripts) { + this.send("importScripts", importScripts); } this.$worker.postMessage({ init : true, @@ -16813,7 +17327,7 @@ var WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl) { this.onMessage = function(e) { var msg = e.data; - switch(msg.type) { + switch (msg.type) { case "event": this._signal(msg.name, {data: msg.data}); break; @@ -16874,7 +17388,7 @@ var WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl) { }; this.attachToDocument = function(doc) { - if(this.$doc) + if (this.$doc) this.terminate(); this.$doc = doc; @@ -16903,18 +17417,6 @@ var WorkerClient = function(topLevelNamespaces, mod, classname, workerUrl) { this.emit("change", {data: q}); }; - this.$workerBlob = function(workerUrl) { - var script = "importScripts('" + net.qualifyURL(workerUrl) + "');"; - try { - return new Blob([script], {"type": "application/javascript"}); - } catch (e) { // Backwards-compatibility - var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder; - var blobBuilder = new BlobBuilder(); - blobBuilder.append(script); - return blobBuilder.getBlob("application/javascript"); - } - }; - }).call(WorkerClient.prototype); @@ -16972,6 +17474,8 @@ UIWorkerClient.prototype = WorkerClient.prototype; exports.UIWorkerClient = UIWorkerClient; exports.WorkerClient = WorkerClient; +exports.createWorker = createWorker; + }); @@ -19039,7 +19543,7 @@ exports.createEditSession = function(text, mode) { } exports.EditSession = EditSession; exports.UndoManager = UndoManager; -exports.version = "1.2.5"; +exports.version = "1.2.8"; }); (function() { ace.require(["ace/ace"], function(a) { diff --git a/js/core/vendor/ace-builds/src-noconflict/ext-modelist.js b/js/core/vendor/ace-builds/src-noconflict/ext-modelist.js index 8ead96e..b0c7fd0 100644 --- a/js/core/vendor/ace-builds/src-noconflict/ext-modelist.js +++ b/js/core/vendor/ace-builds/src-noconflict/ext-modelist.js @@ -44,6 +44,7 @@ var supportedModes = { Assembly_x86:["asm|a"], AutoHotKey: ["ahk"], BatchFile: ["bat|cmd"], + Bro: ["bro"], C_Cpp: ["cpp|c|cc|cxx|h|hh|hpp|ino"], C9Search: ["c9search_results"], Cirru: ["cirru|cr"], @@ -76,19 +77,21 @@ var supportedModes = { Glsl: ["glsl|frag|vert"], Gobstones: ["gbs"], golang: ["go"], + GraphQLSchema: ["gql"], Groovy: ["groovy"], HAML: ["haml"], Handlebars: ["hbs|handlebars|tpl|mustache"], Haskell: ["hs"], Haskell_Cabal: ["cabal"], haXe: ["hx"], + Hjson: ["hjson"], HTML: ["html|htm|xhtml"], HTML_Elixir: ["eex|html.eex"], HTML_Ruby: ["erb|rhtml|html.erb"], INI: ["ini|conf|cfg|prefs"], Io: ["io"], Jack: ["jack"], - Jade: ["jade"], + Jade: ["jade|pug"], Java: ["java"], JavaScript: ["js|jsm|jsx"], JSON: ["json"], @@ -123,6 +126,7 @@ var supportedModes = { Perl: ["pl|pm"], pgSQL: ["pgsql"], PHP: ["php|phtml|shtml|php3|php4|php5|phps|phpt|aw|ctp|module"], + Pig: ["pig"], Powershell: ["ps1"], Praat: ["praat|praatscript|psc|proc"], Prolog: ["plg|prolog"], @@ -157,9 +161,9 @@ var supportedModes = { Text: ["txt"], Textile: ["textile"], Toml: ["toml"], + TSX: ["tsx"], Twig: ["twig|swig"], Typescript: ["ts|typescript|str"], - TSX: ["tsx"], Vala: ["vala"], VBScript: ["vbs|vb"], Velocity: ["vm"], diff --git a/js/core/vendor/ace-builds/src-noconflict/ext-searchbox.js b/js/core/vendor/ace-builds/src-noconflict/ext-searchbox.js index 2031506..81b936b 100644 --- a/js/core/vendor/ace-builds/src-noconflict/ext-searchbox.js +++ b/js/core/vendor/ace-builds/src-noconflict/ext-searchbox.js @@ -7,16 +7,14 @@ var event = require("../lib/event"); var searchboxCss = "\ .ace_search {\ background-color: #ddd;\ +color: #666;\ border: 1px solid #cbcbcb;\ border-top: 0 none;\ -max-width: 325px;\ overflow: hidden;\ margin: 0;\ -padding: 4px;\ -padding-right: 6px;\ -padding-bottom: 0;\ +padding: 4px 6px 0 4px;\ position: absolute;\ -top: 0px;\ +top: 0;\ z-index: 99;\ white-space: normal;\ }\ @@ -31,59 +29,71 @@ border-right: 0 none;\ right: 0;\ }\ .ace_search_form, .ace_replace_form {\ -border-radius: 3px;\ -border: 1px solid #cbcbcb;\ -float: left;\ -margin-bottom: 4px;\ +margin: 0 20px 4px 0;\ overflow: hidden;\ +line-height: 1.9;\ +}\ +.ace_replace_form {\ +margin-right: 0;\ }\ .ace_search_form.ace_nomatch {\ outline: 1px solid red;\ }\ .ace_search_field {\ +border-radius: 3px 0 0 3px;\ background-color: white;\ -border-right: 1px solid #cbcbcb;\ -border: 0 none;\ --webkit-box-sizing: border-box;\ --moz-box-sizing: border-box;\ -box-sizing: border-box;\ -float: left;\ -height: 22px;\ +color: black;\ +border: 1px solid #cbcbcb;\ +border-right: 0 none;\ +box-sizing: border-box!important;\ outline: 0;\ -padding: 0 7px;\ -width: 214px;\ +padding: 0;\ +font-size: inherit;\ margin: 0;\ +line-height: inherit;\ +padding: 0 6px;\ +min-width: 17em;\ +vertical-align: top;\ }\ -.ace_searchbtn,\ -.ace_replacebtn {\ +.ace_searchbtn {\ +border: 1px solid #cbcbcb;\ +line-height: inherit;\ +display: inline-block;\ +padding: 0 6px;\ background: #fff;\ -border: 0 none;\ +border-right: 0 none;\ border-left: 1px solid #dcdcdc;\ cursor: pointer;\ -float: left;\ -height: 22px;\ margin: 0;\ position: relative;\ +box-sizing: content-box!important;\ +color: #666;\ }\ -.ace_searchbtn:last-child,\ -.ace_replacebtn:last-child {\ -border-top-right-radius: 3px;\ -border-bottom-right-radius: 3px;\ +.ace_searchbtn:last-child {\ +border-radius: 0 3px 3px 0;\ +border-right: 1px solid #cbcbcb;\ }\ .ace_searchbtn:disabled {\ background: none;\ cursor: default;\ }\ -.ace_searchbtn {\ -background-position: 50% 50%;\ -background-repeat: no-repeat;\ -width: 27px;\ +.ace_searchbtn:hover {\ +background-color: #eef1f6;\ +}\ +.ace_searchbtn.prev, .ace_searchbtn.next {\ +padding: 0px 0.7em\ }\ -.ace_searchbtn.prev {\ -background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); \ +.ace_searchbtn.prev:after, .ace_searchbtn.next:after {\ +content: \"\";\ +border: solid 2px #888;\ +width: 0.5em;\ +height: 0.5em;\ +border-width: 2px 0 0 2px;\ +display:inline-block;\ +transform: rotate(-45deg);\ }\ -.ace_searchbtn.next {\ -background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); \ +.ace_searchbtn.next:after {\ +border-width: 0 2px 2px 0 ;\ }\ .ace_searchbtn_close {\ background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;\ @@ -91,25 +101,19 @@ border-radius: 50%;\ border: 0 none;\ color: #656565;\ cursor: pointer;\ -float: right;\ font: 16px/16px Arial;\ -height: 14px;\ -margin: 5px 1px 9px 5px;\ padding: 0;\ -text-align: center;\ +height: 14px;\ width: 14px;\ +top: 9px;\ +right: 7px;\ +position: absolute;\ }\ .ace_searchbtn_close:hover {\ background-color: #656565;\ background-position: 50% 100%;\ color: white;\ }\ -.ace_replacebtn.prev {\ -width: 54px\ -}\ -.ace_replacebtn.next {\ -width: 27px\ -}\ .ace_button {\ margin-left: 2px;\ cursor: pointer;\ @@ -122,8 +126,7 @@ overflow: hidden;\ opacity: 0.7;\ border: 1px solid rgba(100,100,100,0.23);\ padding: 1px;\ --moz-box-sizing: border-box;\ -box-sizing: border-box;\ +box-sizing: border-box!important;\ color: black;\ }\ .ace_button:hover {\ @@ -145,36 +148,50 @@ text-align: right;\ -o-user-select: none;\ -ms-user-select: none;\ user-select: none;\ +clear: both;\ +}\ +.ace_search_counter {\ +float: left;\ +font-family: arial;\ +padding: 0 8px;\ }"; var HashHandler = require("../keyboard/hash_handler").HashHandler; var keyUtil = require("../lib/keys"); +var MAX_COUNT = 999; + dom.importCssString(searchboxCss, "ace_searchbox"); var html = '<div class="ace_search right">\ - <button type="button" action="hide" class="ace_searchbtn_close"></button>\ + <span action="hide" class="ace_searchbtn_close"></span>\ <div class="ace_search_form">\ <input class="ace_search_field" placeholder="Search for" spellcheck="false"></input>\ - <button type="button" action="findNext" class="ace_searchbtn next"></button>\ - <button type="button" action="findPrev" class="ace_searchbtn prev"></button>\ - <button type="button" action="findAll" class="ace_searchbtn" title="Alt-Enter">All</button>\ + <span action="findPrev" class="ace_searchbtn prev"></span>\ + <span action="findNext" class="ace_searchbtn next"></span>\ + <span action="findAll" class="ace_searchbtn" title="Alt-Enter">All</span>\ </div>\ <div class="ace_replace_form">\ <input class="ace_search_field" placeholder="Replace with" spellcheck="false"></input>\ - <button type="button" action="replaceAndFindNext" class="ace_replacebtn">Replace</button>\ - <button type="button" action="replaceAll" class="ace_replacebtn">All</button>\ + <span action="replaceAndFindNext" class="ace_searchbtn">Replace</span>\ + <span action="replaceAll" class="ace_searchbtn">All</span>\ </div>\ <div class="ace_search_options">\ + <span action="toggleReplace" class="ace_button" title="Toggel Replace mode"\ + style="float:left;margin-top:-2px;padding:0 5px;">+</span>\ + <span class="ace_search_counter"></span>\ <span action="toggleRegexpMode" class="ace_button" title="RegExp Search">.*</span>\ <span action="toggleCaseSensitive" class="ace_button" title="CaseSensitive Search">Aa</span>\ <span action="toggleWholeWords" class="ace_button" title="Whole Word Search">\\b</span>\ + <span action="searchInSelection" class="ace_button" title="Search In Selection">S</span>\ </div>\ -</div>'.replace(/>\s+/g, ">"); +</div>'.replace(/> +/g, ">"); var SearchBox = function(editor, range, showReplaceForm) { var div = dom.createElement("div"); div.innerHTML = html; this.element = div.firstChild; + + this.setSession = this.setSession.bind(this); this.$init(); this.setEditor(editor); @@ -183,19 +200,27 @@ var SearchBox = function(editor, range, showReplaceForm) { (function() { this.setEditor = function(editor) { editor.searchBox = this; - editor.container.appendChild(this.element); + editor.renderer.scroller.appendChild(this.element); this.editor = editor; }; + + this.setSession = function(e) { + debugger + this.searchRange = null; + this.$syncOptions(true); + } this.$initElements = function(sb) { this.searchBox = sb.querySelector(".ace_search_form"); this.replaceBox = sb.querySelector(".ace_replace_form"); - this.searchOptions = sb.querySelector(".ace_search_options"); + this.searchOption = sb.querySelector("[action=searchInSelection]"); + this.replaceOption = sb.querySelector("[action=toggleReplace]"); this.regExpOption = sb.querySelector("[action=toggleRegexpMode]"); this.caseSensitiveOption = sb.querySelector("[action=toggleCaseSensitive]"); this.wholeWordOption = sb.querySelector("[action=toggleWholeWords]"); this.searchInput = this.searchBox.querySelector(".ace_search_field"); this.replaceInput = this.replaceBox.querySelector(".ace_search_field"); + this.searchCounter = sb.querySelector(".ace_search_counter"); }; this.$init = function() { @@ -257,10 +282,13 @@ var SearchBox = function(editor, range, showReplaceForm) { "Ctrl-f|Command-f": function(sb) { var isReplace = sb.isReplace = !sb.isReplace; sb.replaceBox.style.display = isReplace ? "" : "none"; + sb.replaceOption.checked = false; + sb.$syncOptions(); sb.searchInput.focus(); }, "Ctrl-H|Command-Option-F": function(sb) { - sb.replaceBox.style.display = ""; + sb.replaceOption.checked = true; + sb.$syncOptions(); sb.replaceInput.focus(); }, "Ctrl-G|Command-G": function(sb) { @@ -313,13 +341,40 @@ var SearchBox = function(editor, range, showReplaceForm) { sb.wholeWordOption.checked = !sb.wholeWordOption.checked; sb.$syncOptions(); } + }, { + name: "toggleReplace", + exec: function(sb) { + sb.replaceOption.checked = !sb.replaceOption.checked; + sb.$syncOptions(); + } + }, { + name: "searchInSelection", + exec: function(sb) { + sb.searchOption.checked = !sb.searchRange; + sb.setSearchRange(sb.searchOption.checked && sb.editor.getSelectionRange()); + sb.$syncOptions(); + } }]); + + this.setSearchRange = function(range) { + this.searchRange = range; + if (range) { + this.searchRangeMarker = this.editor.session.addMarker(range, "ace_active-line"); + } else if (this.searchRangeMarker) { + this.editor.session.removeMarker(this.searchRangeMarker); + this.searchRangeMarker = null; + } + } - this.$syncOptions = function() { + this.$syncOptions = function(preventScroll) { + dom.setCssClass(this.replaceOption, "checked", this.searchRange); + dom.setCssClass(this.searchOption, "checked", this.searchOption.checked); + this.replaceOption.textContent = this.replaceOption.checked ? "-" : "+"; dom.setCssClass(this.regExpOption, "checked", this.regExpOption.checked); dom.setCssClass(this.wholeWordOption, "checked", this.wholeWordOption.checked); dom.setCssClass(this.caseSensitiveOption, "checked", this.caseSensitiveOption.checked); - this.find(false, false); + this.replaceBox.style.display = this.replaceOption.checked ? "" : "none"; + this.find(false, false, preventScroll); }; this.highlight = function(re) { @@ -334,10 +389,46 @@ var SearchBox = function(editor, range, showReplaceForm) { regExp: this.regExpOption.checked, caseSensitive: this.caseSensitiveOption.checked, wholeWord: this.wholeWordOption.checked, - preventScroll: preventScroll + preventScroll: preventScroll, + range: this.searchRange }); - dom.setCssClass(this.searchBox, "ace_nomatch", !range && this.searchInput.value); + var noMatch = !range && this.searchInput.value; + dom.setCssClass(this.searchBox, "ace_nomatch", noMatch); + this.editor._emit("findSearchBox", { match: !noMatch }); this.highlight(); + this.updateCounter(); + }; + this.updateCounter = function() { + var editor = this.editor; + var regex = editor.$search.$options.re; + var all = 0; + var before = 0 + if (regex) { + var value = this.searchRange + ? editor.session.getTextRange(this.searchRange) + : editor.getValue(); + + var offset = editor.session.doc.positionToIndex(editor.selection.anchor); + if (this.searchRange) + offset -= editor.session.doc.positionToIndex(this.searchRange.start); + + var last = regex.lastIndex = 0; + var m; + while ((m = regex.exec(value))) { + all++; + last = m.index; + if (last <= offset) + before++; + if (all > MAX_COUNT) + break + if (!m[0]) { + regex.lastIndex = last += 1; + if (last >= value.length) + break; + } + } + } + this.searchCounter.textContent = before + " of " + (all > MAX_COUNT ? MAX_COUNT + "+" : all); }; this.findNext = function() { this.find(true, false); @@ -373,25 +464,29 @@ var SearchBox = function(editor, range, showReplaceForm) { }; this.hide = function() { + this.active = false; + this.setSearchRange(null) + this.editor.off("changeSession", this.setSession); + this.element.style.display = "none"; this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb); this.editor.focus(); }; this.show = function(value, isReplace) { + this.active = true; + this.editor.on("changeSession", this.setSession); this.element.style.display = ""; - this.replaceBox.style.display = isReplace ? "" : "none"; - - this.isReplace = isReplace; - + this.replaceOption.checked = isReplace; + if (value) this.searchInput.value = value; - this.find(false, false, true); - this.searchInput.focus(); this.searchInput.select(); this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb); + + this.$syncOptions(true); }; this.isFocused = function() { diff --git a/js/core/vendor/ace-builds/src-noconflict/keybinding-vim.js b/js/core/vendor/ace-builds/src-noconflict/keybinding-vim.js index 754d43c..5b0f378 100644 --- a/js/core/vendor/ace-builds/src-noconflict/keybinding-vim.js +++ b/js/core/vendor/ace-builds/src-noconflict/keybinding-vim.js @@ -1452,8 +1452,12 @@ dom.importCssString(".normal-mode .ace_cursor{\ if (lastInsertModeKeyTimer) { window.clearTimeout(lastInsertModeKeyTimer); } if (keysAreChars) { - var here = cm.getCursor(); - cm.replaceRange('', offsetCursor(here, 0, -(keys.length - 1)), here, '+input'); + var selections = cm.listSelections(); + for (var i = 0; i < selections.length; i++) { + var here = selections[i].head; + cm.replaceRange('', offsetCursor(here, 0, -(keys.length - 1)), here, '+input'); + } + vimGlobalState.macroModeState.lastInsertModeChanges.changes.pop(); } clearInputState(cm); return match.command; @@ -1725,7 +1729,9 @@ dom.importCssString(".normal-mode .ace_cursor{\ } } if (bestMatch.keys.slice(-11) == '<character>') { - inputState.selectedCharacter = lastChar(keys); + var character = lastChar(keys); + if (/<C-.>/.test(character)) return {type: 'none'}; + inputState.selectedCharacter = character; } return {type: 'full', command: bestMatch}; }, @@ -4983,6 +4989,8 @@ dom.importCssString(".normal-mode .ace_cursor{\ cm.setCursor(cm.getCursor().line, cm.getCursor().ch-1); cm.setOption('keyMap', 'vim'); cm.setOption('disableInput', true); + + lastChange.overwrite = cm.state.overwrite; cm.toggleOverwrite(false); // exit replace mode if we were in it. insertModeChangeRegister.setText(lastChange.changes.join('')); CodeMirror.signal(cm, "vim-mode-change", {mode: "normal"}); @@ -5193,7 +5201,7 @@ dom.importCssString(".normal-mode .ace_cursor{\ if (macroModeState.lastInsertModeChanges.changes.length > 0) { repeat = !vim.lastEditActionCommand ? 1 : repeat; var changeObject = macroModeState.lastInsertModeChanges; - repeatInsertModeChanges(cm, changeObject.changes, repeat); + repeatInsertModeChanges(cm, changeObject.changes, repeat, changeObject.overwrite); } } vim.inputState = vim.lastEditInputState; @@ -5215,7 +5223,7 @@ dom.importCssString(".normal-mode .ace_cursor{\ macroModeState.isPlaying = false; } - function repeatInsertModeChanges(cm, changes, repeat) { + function repeatInsertModeChanges(cm, changes, repeat, overwrite) { function keyHandler(binding) { if (typeof binding == 'string') { CodeMirror.commands[binding](cm); @@ -5244,7 +5252,11 @@ dom.importCssString(".normal-mode .ace_cursor{\ CodeMirror.lookupKey(change.keyName, 'vim-insert', keyHandler); } else { var cur = cm.getCursor(); - cm.replaceRange(change, cur, cur); + var end = cur; + if (overwrite && !/\n/.test(change)) { + end = offsetCursor(cur, 0, change.length); + } + cm.replaceRange(change, cur, end); } } } diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-abc.js b/js/core/vendor/ace-builds/src-noconflict/mode-abc.js index 41332e8..c03859d 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-abc.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-abc.js @@ -249,6 +249,7 @@ ace.define("ace/mode/abc",["require","exports","module","ace/lib/oop","ace/mode/ var Mode = function () { this.HighlightRules = ABCHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-actionscript.js b/js/core/vendor/ace-builds/src-noconflict/mode-actionscript.js index ff7e7b9..c1af163 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-actionscript.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-actionscript.js @@ -253,6 +253,7 @@ var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = ActionScriptHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-ada.js b/js/core/vendor/ace-builds/src-noconflict/mode-ada.js index b4abcd5..da05988 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-ada.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-ada.js @@ -62,16 +62,16 @@ oop.inherits(AdaHighlightRules, TextHighlightRules); exports.AdaHighlightRules = AdaHighlightRules; }); -ace.define("ace/mode/ada",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ada_highlight_rules","ace/range"], function(require, exports, module) { +ace.define("ace/mode/ada",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/ada_highlight_rules"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var AdaHighlightRules = require("./ada_highlight_rules").AdaHighlightRules; -var Range = require("../range").Range; var Mode = function() { this.HighlightRules = AdaHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-apache_conf.js b/js/core/vendor/ace-builds/src-noconflict/mode-apache_conf.js index 13636f6..bb6566a 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-apache_conf.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-apache_conf.js @@ -343,6 +343,7 @@ var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = ApacheConfHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-applescript.js b/js/core/vendor/ace-builds/src-noconflict/mode-applescript.js index 5270d43..936ce2f 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-applescript.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-applescript.js @@ -246,18 +246,18 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/applescript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/applescript_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/applescript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/applescript_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; var AppleScriptHighlightRules = require("./applescript_highlight_rules").AppleScriptHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = AppleScriptHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-assembly_x86.js b/js/core/vendor/ace-builds/src-noconflict/mode-assembly_x86.js index bbbc642..f6a56f1 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-assembly_x86.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-assembly_x86.js @@ -173,6 +173,7 @@ var FoldMode = require("./folding/coffee").FoldMode; var Mode = function() { this.HighlightRules = AssemblyX86HighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-autohotkey.js b/js/core/vendor/ace-builds/src-noconflict/mode-autohotkey.js index f188860..538e6fd 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-autohotkey.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-autohotkey.js @@ -221,6 +221,7 @@ var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = AutoHotKeyHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-batchfile.js b/js/core/vendor/ace-builds/src-noconflict/mode-batchfile.js index ad03902..3f31ce1 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-batchfile.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-batchfile.js @@ -209,6 +209,7 @@ var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = BatchFileHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-bro.js b/js/core/vendor/ace-builds/src-noconflict/mode-bro.js new file mode 100644 index 0000000..dd259eb --- /dev/null +++ b/js/core/vendor/ace-builds/src-noconflict/mode-bro.js @@ -0,0 +1,327 @@ +ace.define("ace/mode/bro_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var BroHighlightRules = function() { + + this.$rules = { + start: [{ + token: "punctuation.definition.comment.bro", + regex: /#/, + push: [{ + token: "comment.line.number-sign.bro", + regex: /$/, + next: "pop" + }, { + defaultToken: "comment.line.number-sign.bro" + }] + }, { + token: "keyword.control.bro", + regex: /\b(?:break|case|continue|else|for|if|return|switch|next|when|timeout|schedule)\b/ + }, { + token: [ + "meta.function.bro", + "meta.function.bro", + "storage.type.bro", + "meta.function.bro", + "entity.name.function.bro", + "meta.function.bro" + ], + regex: /^(\s*)(?:function|hook|event)(\s*)(.*)(\s*\()(.*)(\).*$)/ + }, { + token: "storage.type.bro", + regex: /\b(?:bool|enum|double|int|count|port|addr|subnet|any|file|interval|time|string|table|vector|set|record|pattern|hook)\b/ + }, { + token: "storage.modifier.bro", + regex: /\b(?:global|const|redef|local|&(?:optional|rotate_interval|rotate_size|add_func|del_func|expire_func|expire_create|expire_read|expire_write|persistent|synchronized|encrypt|mergeable|priority|group|type_column|log|error_handler))\b/ + }, { + token: "keyword.operator.bro", + regex: /\s*(?:\||&&|(?:>|<|!)=?|==)\s*|\b!?in\b/ + }, { + token: "constant.language.bro", + regex: /\b(?:T|F)\b/ + }, { + token: "constant.numeric.bro", + regex: /\b(?:0(?:x|X)[0-9a-fA-F]*|(?:[0-9]+\.?[0-9]*|\.[0-9]+)(?:(?:e|E)(?:\+|-)?[0-9]+)?)(?:\/(?:tcp|udp|icmp)|\s*(?:u?sec|min|hr|day)s?)?\b/ + }, { + token: "punctuation.definition.string.begin.bro", + regex: /"/, + push: [{ + token: "punctuation.definition.string.end.bro", + regex: /"/, + next: "pop" + }, { + include: "#string_escaped_char" + }, { + include: "#string_placeholder" + }, { + defaultToken: "string.quoted.double.bro" + }] + }, { + token: "punctuation.definition.string.begin.bro", + regex: /\//, + push: [{ + token: "punctuation.definition.string.end.bro", + regex: /\//, + next: "pop" + }, { + include: "#string_escaped_char" + }, { + include: "#string_placeholder" + }, { + defaultToken: "string.quoted.regex.bro" + }] + }, { + token: [ + "meta.preprocessor.bro.load", + "keyword.other.special-method.bro" + ], + regex: /^(\s*)(\@load(?:-sigs)?)\b/, + push: [{ + token: [], + regex: /(?=\#)|$/, + next: "pop" + }, { + defaultToken: "meta.preprocessor.bro.load" + }] + }, { + token: [ + "meta.preprocessor.bro.if", + "keyword.other.special-method.bro", + "meta.preprocessor.bro.if" + ], + regex: /^(\s*)(\@endif|\@if(?:n?def)?)(.*$)/, + push: [{ + token: [], + regex: /$/, + next: "pop" + }, { + defaultToken: "meta.preprocessor.bro.if" + }] + }], + "#disabled": [{ + token: "text", + regex: /^\s*\@if(?:n?def)?\b.*$/, + push: [{ + token: "text", + regex: /^\s*\@endif\b.*$/, + next: "pop" + }, { + include: "#disabled" + }, { + include: "#pragma-mark" + }], + comment: "eat nested preprocessor ifdefs" + }], + "#preprocessor-rule-other": [{ + token: [ + "text", + "meta.preprocessor.bro", + "meta.preprocessor.bro", + "text" + ], + regex: /^(\s*)(@if)((?:n?def)?)\b(.*?)(?:(?=)|$)/, + push: [{ + token: ["text", "meta.preprocessor.bro", "text"], + regex: /^(\s*)(@endif)\b(.*$)/, + next: "pop" + }, { + include: "$base" + }] + }], + "#string_escaped_char": [{ + token: "constant.character.escape.bro", + regex: /\\(?:\\|[abefnprtv'"?]|[0-3]\d{,2}|[4-7]\d?|x[a-fA-F0-9]{,2})/ + }, { + token: "invalid.illegal.unknown-escape.bro", + regex: /\\./ + }], + "#string_placeholder": [{ + token: "constant.other.placeholder.bro", + regex: /%(?:\d+\$)?[#0\- +']*[,;:_]?(?:-?\d+|\*(?:-?\d+\$)?)?(?:\.(?:-?\d+|\*(?:-?\d+\$)?)?)?(?:hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)?[diouxXDOUeEfFgGaACcSspn%]/ + }, { + token: "invalid.illegal.placeholder.bro", + regex: /%/ + }] + } + + this.normalizeRules(); +}; + +BroHighlightRules.metaData = { + fileTypes: ["bro"], + foldingStartMarker: "^(\\@if(n?def)?)", + foldingStopMarker: "^\\@endif", + keyEquivalent: "@B", + name: "Bro", + scopeName: "source.bro" +} + + +oop.inherits(BroHighlightRules, TextHighlightRules); + +exports.BroHighlightRules = BroHighlightRules; +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; + +var FoldMode = exports.FoldMode = function(commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp( + this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) + ); + this.foldingStopMarker = new RegExp( + this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) + ); + } +}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function(session, foldStyle, row) { + var line = session.getLine(row); + + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + + var fw = this._getFoldWidgetBase(session, foldStyle, row); + + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + + return fw; + }; + + this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } else if (foldStyle != "all") + range = null; + } + + return range; + } + + if (foldStyle === "markbegin") + return; + + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + + return session.getCommentFoldRange(row, i, -1); + } + }; + + this.getSectionRange = function(session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } else if (subRange.isMultiLine()) { + row = subRange.end.row; + } else if (startIndent == indent) { + break; + } + } + endRow = row; + } + + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function(session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) continue; + if (m[1]) depth--; + else depth++; + + if (!depth) break; + } + + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; + +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/bro",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/bro_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var BroHighlightRules = require("./bro_highlight_rules").BroHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = BroHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + this.$id = "ace/mode/bro" +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-c9search.js b/js/core/vendor/ace-builds/src-noconflict/mode-c9search.js index 608df0e..aad3dc1 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-c9search.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-c9search.js @@ -108,11 +108,6 @@ var C9SearchHighlightRules = function() { }); } - if (replace) { - search = replace; - options = ""; - } - if (search) { if (!/regex/.test(options)) search = lang.escapeRegExp(search); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-c_cpp.js b/js/core/vendor/ace-builds/src-noconflict/mode-c_cpp.js index 90b63ac..ea6d222 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-c_cpp.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-c_cpp.js @@ -173,11 +173,10 @@ var c_cppHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "singleLineComment" : [ diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-cirru.js b/js/core/vendor/ace-builds/src-noconflict/mode-cirru.js index 274f89c..9d3bab8 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-cirru.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-cirru.js @@ -190,6 +190,7 @@ var CoffeeFoldMode = require("./folding/coffee").FoldMode; var Mode = function() { this.HighlightRules = CirruHighlightRules; this.foldingRules = new CoffeeFoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-clojure.js b/js/core/vendor/ace-builds/src-noconflict/mode-clojure.js index 649f288..c8f7a0d 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-clojure.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-clojure.js @@ -222,6 +222,7 @@ var MatchingParensOutdent = require("./matching_parens_outdent").MatchingParensO var Mode = function() { this.HighlightRules = ClojureHighlightRules; this.$outdent = new MatchingParensOutdent(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-cobol.js b/js/core/vendor/ace-builds/src-noconflict/mode-cobol.js index 75d8791..89367e0 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-cobol.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-cobol.js @@ -69,16 +69,16 @@ oop.inherits(CobolHighlightRules, TextHighlightRules); exports.CobolHighlightRules = CobolHighlightRules; }); -ace.define("ace/mode/cobol",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cobol_highlight_rules","ace/range"], function(require, exports, module) { +ace.define("ace/mode/cobol",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/cobol_highlight_rules"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CobolHighlightRules = require("./cobol_highlight_rules").CobolHighlightRules; -var Range = require("../range").Range; var Mode = function() { this.HighlightRules = CobolHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-coldfusion.js b/js/core/vendor/ace-builds/src-noconflict/mode-coldfusion.js index 40ea623..edbdb5b 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-coldfusion.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-coldfusion.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -791,10 +797,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -810,84 +816,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" + regex: ";", + next: "start" }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -907,14 +911,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -1267,14 +1321,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -1286,9 +1336,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -1302,11 +1352,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -1344,7 +1389,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -1391,7 +1436,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1806,7 +1851,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -1819,6 +1864,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -1937,8 +1988,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -2279,7 +2332,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-csharp.js b/js/core/vendor/ace-builds/src-noconflict/mode-csharp.js index ce3faf5..d91e998 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-csharp.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-csharp.js @@ -75,7 +75,7 @@ var CSharpHighlightRules = function() { next : "comment" }, { token : "string", // character - regex : /'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))'/ + regex : /'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))?'/ }, { token : "string", start : '"', end : '"|$', next: [ {token: "constant.language.escape", regex: /\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/}, @@ -126,11 +126,10 @@ var CSharpHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ] }; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-css.js b/js/core/vendor/ace-builds/src-noconflict/mode-css.js index f8fdea2..b7a4185 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-css.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-css.js @@ -7,10 +7,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -26,84 +26,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" + regex: ";", + next: "start" }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + next : "start" }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -123,14 +121,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-curly.js b/js/core/vendor/ace-builds/src-noconflict/mode-curly.js index d2b13d7..d6d9d1c 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-curly.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-curly.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -791,10 +797,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -810,84 +816,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" + regex: ";", + next: "start" }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -907,14 +911,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -1267,14 +1321,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -1286,9 +1336,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -1302,11 +1352,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -1344,7 +1389,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -1391,7 +1436,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1806,7 +1851,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -1819,6 +1864,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -1937,8 +1988,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -2279,7 +2332,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; @@ -2457,13 +2510,12 @@ exports.CurlyHighlightRules = CurlyHighlightRules; }); -ace.define("ace/mode/curly",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/matching_brace_outdent","ace/mode/html_highlight_rules","ace/mode/folding/html","ace/mode/curly_highlight_rules"], function(require, exports, module) { +ace.define("ace/mode/curly",["require","exports","module","ace/lib/oop","ace/mode/html","ace/mode/matching_brace_outdent","ace/mode/folding/html","ace/mode/curly_highlight_rules"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var HtmlMode = require("./html").Mode; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var HtmlHighlightRules = require("./html_highlight_rules").HtmlHighlightRules; var HtmlFoldMode = require("./folding/html").FoldMode; var CurlyHighlightRules = require("./curly_highlight_rules").CurlyHighlightRules; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-d.js b/js/core/vendor/ace-builds/src-noconflict/mode-d.js index aa85335..672411a 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-d.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-d.js @@ -499,6 +499,7 @@ var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = DHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-dart.js b/js/core/vendor/ace-builds/src-noconflict/mode-dart.js index 665f276..c704234 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-dart.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-dart.js @@ -173,11 +173,10 @@ var c_cppHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "singleLineComment" : [ @@ -513,8 +512,7 @@ var DartHighlightRules = function() { }, "identifier"); var stringfill = { - token : "string", - regex : ".+" + defaultToken : "string" }; this.$rules = @@ -622,11 +620,10 @@ var DartHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "qdoc" : [ diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-django.js b/js/core/vendor/ace-builds/src-noconflict/mode-django.js index 42f25dc..b681d99 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-django.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-django.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -791,10 +797,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -810,84 +816,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" + regex: ";", + next: "start" }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -907,14 +911,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -1267,14 +1321,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -1286,9 +1336,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -1302,11 +1352,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -1344,7 +1389,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -1391,7 +1436,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1806,7 +1851,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -1819,6 +1864,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -1937,8 +1988,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -2279,7 +2332,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; @@ -2448,11 +2501,6 @@ var DjangoHighlightRules = function(){ token: "variable", regex: "[-_a-zA-Z0-9:]+" }], - 'comment': [{ - token : "comment.block", - merge: true, - regex : ".+?" - }], 'tag': [{ token: "entity.name.function", regex: "[a-zA-Z][_a-zA-Z0-9]*", diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-dot.js b/js/core/vendor/ace-builds/src-noconflict/mode-dot.js index e352277..7291476 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-dot.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-dot.js @@ -163,13 +163,10 @@ var DotHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", - merge : true, + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - merge : true, - regex : ".+" + defaultToken : "comment" } ], "qqstring" : [ @@ -368,6 +365,7 @@ var Mode = function() { this.HighlightRules = DotHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.foldingRules = new DotFoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-drools.js b/js/core/vendor/ace-builds/src-noconflict/mode-drools.js index 3e60388..5863afe 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-drools.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-drools.js @@ -152,11 +152,10 @@ var JavaHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ] }; @@ -267,11 +266,10 @@ var DroolsHighlightRules = function() { return [ { token : "comment.block", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : returnRule }, { - token : "comment.block", // comment spanning whole line - regex : ".+" + defaultToken : "comment.block" } ]; } @@ -433,18 +431,18 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/drools",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/drools_highlight_rules","ace/range","ace/mode/folding/drools"], function(require, exports, module) { +ace.define("ace/mode/drools",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/drools_highlight_rules","ace/mode/folding/drools"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var DroolsHighlightRules = require("./drools_highlight_rules").DroolsHighlightRules; -var Range = require("../range").Range; var DroolsFoldMode = require("./folding/drools").FoldMode; var Mode = function() { this.HighlightRules = DroolsHighlightRules; this.foldingRules = new DroolsFoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-eiffel.js b/js/core/vendor/ace-builds/src-noconflict/mode-eiffel.js index 75a73a1..decf61d 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-eiffel.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-eiffel.js @@ -105,16 +105,16 @@ oop.inherits(EiffelHighlightRules, TextHighlightRules); exports.EiffelHighlightRules = EiffelHighlightRules; }); -ace.define("ace/mode/eiffel",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/eiffel_highlight_rules","ace/range"], function(require, exports, module) { +ace.define("ace/mode/eiffel",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/eiffel_highlight_rules"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var EiffelHighlightRules = require("./eiffel_highlight_rules").EiffelHighlightRules; -var Range = require("../range").Range; var Mode = function() { this.HighlightRules = EiffelHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-ejs.js b/js/core/vendor/ace-builds/src-noconflict/mode-ejs.js index f679c3a..4309c8b 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-ejs.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-ejs.js @@ -7,10 +7,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -26,84 +26,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" + regex: ";", + next: "start" }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -123,14 +121,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -216,7 +264,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -250,11 +298,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -305,6 +353,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -321,6 +372,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -460,7 +514,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -476,7 +530,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -486,8 +540,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -522,14 +576,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -580,8 +634,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -596,7 +650,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -672,14 +726,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -691,9 +741,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -707,11 +757,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -749,7 +794,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -796,7 +841,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1133,14 +1178,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -1158,6 +1202,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -1806,7 +1851,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -1819,6 +1864,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -1937,8 +1988,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -2279,7 +2332,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; @@ -2461,6 +2514,11 @@ var constantNumericFloat = exports.constantNumericFloat = { regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b" }; +var instanceVariable = exports.instanceVariable = { + token : "variable.instance", // instance variable + regex : "@{1,2}[a-zA-Z_\\d]+" +}; + var RubyHighlightRules = function() { var builtinFunctions = ( diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-elixir.js b/js/core/vendor/ace-builds/src-noconflict/mode-elixir.js index 1e6d32b..d8931b9 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-elixir.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-elixir.js @@ -481,6 +481,7 @@ var FoldMode = require("./folding/coffee").FoldMode; var Mode = function() { this.HighlightRules = ElixirHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-elm.js b/js/core/vendor/ace-builds/src-noconflict/mode-elm.js index 9f7d6f0..24406af 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-elm.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-elm.js @@ -285,6 +285,7 @@ var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = HighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-erlang.js b/js/core/vendor/ace-builds/src-noconflict/mode-erlang.js index b219b9e..3554bf7 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-erlang.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-erlang.js @@ -472,7 +472,7 @@ var ErlangHighlightRules = function() { 'punctuation.definition.parameters.end.erlang', 'meta.directive.ifdef.erlang', 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(ifdef)(\\s*)(\\()(\\s*)([a-zA-z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' }, + regex: '^(\\s*)(-)(\\s*)(ifdef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' }, { token: [ 'meta.directive.ifndef.erlang', 'punctuation.section.directive.begin.erlang', @@ -486,7 +486,7 @@ var ErlangHighlightRules = function() { 'punctuation.definition.parameters.end.erlang', 'meta.directive.ifndef.erlang', 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(ifndef)(\\s*)(\\()(\\s*)([a-zA-z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' }, + regex: '^(\\s*)(-)(\\s*)(ifndef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' }, { token: [ 'meta.directive.undef.erlang', 'punctuation.section.directive.begin.erlang', @@ -500,7 +500,7 @@ var ErlangHighlightRules = function() { 'punctuation.definition.parameters.end.erlang', 'meta.directive.undef.erlang', 'punctuation.section.directive.end.erlang' ], - regex: '^(\\s*)(-)(\\s*)(undef)(\\s*)(\\()(\\s*)([a-zA-z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' } ], + regex: '^(\\s*)(-)(\\s*)(undef)(\\s*)(\\()(\\s*)([a-zA-Z\\d@_]+)(\\s*)(\\))(\\s*)(\\.)' } ], '#macro-usage': [ { token: [ 'keyword.operator.macro.erlang', @@ -988,6 +988,7 @@ var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = ErlangHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-forth.js b/js/core/vendor/ace-builds/src-noconflict/mode-forth.js index f15004c..f960fd6 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-forth.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-forth.js @@ -276,6 +276,7 @@ var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = ForthHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-fortran.js b/js/core/vendor/ace-builds/src-noconflict/mode-fortran.js index 6b290d0..3f2c5bd 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-fortran.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-fortran.js @@ -352,6 +352,7 @@ var Range = require("../range").Range; var Mode = function() { this.HighlightRules = FortranHighlightRules; this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-ftl.js b/js/core/vendor/ace-builds/src-noconflict/mode-ftl.js index f56a942..dbca4fd 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-ftl.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-ftl.js @@ -7,10 +7,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -26,84 +26,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" + regex: ";", + next: "start" }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -123,14 +121,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -216,7 +264,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -250,11 +298,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -305,6 +353,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -321,6 +372,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -460,7 +514,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -476,7 +530,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -486,8 +540,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -522,14 +576,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -580,8 +634,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -596,7 +650,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -672,14 +726,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -691,9 +741,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -707,11 +757,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -749,7 +794,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -796,7 +841,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1100,11 +1145,10 @@ var FtlHighlightRules = function() { this.addRules({ "ftl-dcomment" : [{ token : "comment", - regex : ".*?-->", + regex : "-->", next : "pop" }, { - token : "comment", - regex : ".+" + defaultToken : "comment" }] }); @@ -1125,6 +1169,7 @@ var FtlHighlightRules = require("./ftl_highlight_rules").FtlHighlightRules; var Mode = function() { this.HighlightRules = FtlHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-gcode.js b/js/core/vendor/ace-builds/src-noconflict/mode-gcode.js index 77e9e80..a648426 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-gcode.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-gcode.js @@ -73,6 +73,7 @@ ace.define("ace/mode/gcode",["require","exports","module","ace/lib/oop","ace/mod var Mode = function() { this.HighlightRules = GcodeHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-gherkin.js b/js/core/vendor/ace-builds/src-noconflict/mode-gherkin.js index 011e0c2..322dbe4 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-gherkin.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-gherkin.js @@ -118,6 +118,7 @@ var GherkinHighlightRules = require("./gherkin_highlight_rules").GherkinHighligh var Mode = function() { this.HighlightRules = GherkinHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-gitignore.js b/js/core/vendor/ace-builds/src-noconflict/mode-gitignore.js index a3cc839..c3eac55 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-gitignore.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-gitignore.js @@ -39,6 +39,7 @@ var GitignoreHighlightRules = require("./gitignore_highlight_rules").GitignoreHi var Mode = function() { this.HighlightRules = GitignoreHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-glsl.js b/js/core/vendor/ace-builds/src-noconflict/mode-glsl.js index 6684508..ee95fee 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-glsl.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-glsl.js @@ -173,11 +173,10 @@ var c_cppHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "singleLineComment" : [ diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-gobstones.js b/js/core/vendor/ace-builds/src-noconflict/mode-gobstones.js index e4c75bc..746b341 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-gobstones.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-gobstones.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -872,11 +878,10 @@ var GobstonesHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ] }; @@ -900,6 +905,7 @@ var GobstonesHighlightRules = require("./gobstones_highlight_rules").GobstonesHi var Mode = function() { JavaScriptMode.call(this); this.HighlightRules = GobstonesHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, JavaScriptMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-graphqlschema.js b/js/core/vendor/ace-builds/src-noconflict/mode-graphqlschema.js new file mode 100644 index 0000000..9d2833d --- /dev/null +++ b/js/core/vendor/ace-builds/src-noconflict/mode-graphqlschema.js @@ -0,0 +1,206 @@ +ace.define("ace/mode/graphqlschema_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var GraphQLSchemaHighlightRules = function() { + + var keywords = ( + "type|interface|union|enum|schema|input|implements|extends|scalar" + ); + + var dataTypes = ( + "Int|Float|String|ID|Boolean" + ); + + var keywordMapper = this.createKeywordMapper({ + "keyword": keywords, + "storage.type": dataTypes + }, "identifier"); + + this.$rules = { + "start" : [ { + token : "comment", + regex : "#.*$" + }, { + token : "paren.lparen", + regex : /[\[({]/, + next : "start" + }, { + token : "paren.rparen", + regex : /[\])}]/ + }, { + token : keywordMapper, + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + } ] + }; + this.normalizeRules(); +}; + +oop.inherits(GraphQLSchemaHighlightRules, TextHighlightRules); + +exports.GraphQLSchemaHighlightRules = GraphQLSchemaHighlightRules; +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; + +var FoldMode = exports.FoldMode = function(commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp( + this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) + ); + this.foldingStopMarker = new RegExp( + this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) + ); + } +}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function(session, foldStyle, row) { + var line = session.getLine(row); + + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + + var fw = this._getFoldWidgetBase(session, foldStyle, row); + + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + + return fw; + }; + + this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } else if (foldStyle != "all") + range = null; + } + + return range; + } + + if (foldStyle === "markbegin") + return; + + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + + return session.getCommentFoldRange(row, i, -1); + } + }; + + this.getSectionRange = function(session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } else if (subRange.isMultiLine()) { + row = subRange.end.row; + } else if (startIndent == indent) { + break; + } + } + endRow = row; + } + + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function(session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) continue; + if (m[1]) depth--; + else depth++; + + if (!depth) break; + } + + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; + +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/graphqlschema",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/graphqlschema_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var GraphQLSchemaHighlightRules = require("./graphqlschema_highlight_rules").GraphQLSchemaHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = GraphQLSchemaHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "#"; + this.$id = "ace/mode/graphqlschema"; +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-groovy.js b/js/core/vendor/ace-builds/src-noconflict/mode-groovy.js index 8236a87..b04ffd9 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-groovy.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-groovy.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -899,11 +905,10 @@ var GroovyHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "qqstring" : [ diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-haml.js b/js/core/vendor/ace-builds/src-noconflict/mode-haml.js index f98d56c..c4255c5 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-haml.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-haml.js @@ -7,10 +7,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -26,84 +26,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" + regex: ";", + next: "start" }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -123,14 +121,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -216,7 +264,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -250,11 +298,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -305,6 +353,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -321,6 +372,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -460,7 +514,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -476,7 +530,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -486,8 +540,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -522,14 +576,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -580,8 +634,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -596,7 +650,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -672,14 +726,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -691,9 +741,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -707,11 +757,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -749,7 +794,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -796,7 +841,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -988,6 +1033,11 @@ var constantNumericFloat = exports.constantNumericFloat = { regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b" }; +var instanceVariable = exports.instanceVariable = { + token : "variable.instance", // instance variable + regex : "@{1,2}[a-zA-Z_\\d]+" +}; + var RubyHighlightRules = function() { var builtinFunctions = ( @@ -1252,116 +1302,130 @@ var RubyHighlightRules = RubyExports.RubyHighlightRules; var HamlHighlightRules = function() { HtmlHighlightRules.call(this); - this.$rules.start.unshift( - { - token : "punctuation.section.comment", - regex : /^\s*\/.*/ - }, - { - token: "string.quoted.double", - regex: "==.+?==" - }, - { - token: "keyword.other.doctype", - regex: "^!!!\\s*(?:[a-zA-Z0-9-_]+)?" - }, - RubyExports.qString, - RubyExports.qqString, - RubyExports.tString, - { - token: "character.escape.haml", - regex: "^\\s*\\\\." - }, - { - token: "text", - regex: /^\s*/, - next: "tag_single" - }, - RubyExports.constantNumericHex, - RubyExports.constantNumericFloat, - - RubyExports.constantOtherSymbol, - { - token: "text", - regex: "=|-|~", - next: "embedded_ruby" - } - ); - this.$rules.tag_single = [ - { - token: "meta.tag.haml", - regex: /(%[\w:\-]+)/ - }, - { - token: "keyword.attribute-name.class.haml", - regex: "\\.[\\w-]+" - }, - { - token: "keyword.attribute-name.id.haml", - regex: "#[\\w-]+" - }, - { - token: "punctuation.section", - regex: "\\{", - next: "section" - }, - - RubyExports.constantOtherSymbol, - - { - token: "text", - regex: /\s/, - next: "start" - }, - { - token: "empty", - regex: "$|(?!\\.|#|\\{|\\[|=|-|~|\\/)", - next: "start" - } - ]; - this.$rules.section = [ - RubyExports.constantOtherSymbol, - - RubyExports.qString, - RubyExports.qqString, - RubyExports.tString, - - RubyExports.constantNumericHex, - RubyExports.constantNumericFloat, - { - token: "punctuation.section", - regex: "\\}", - next: "start" - } - ]; - - this.$rules.embedded_ruby = [ - RubyExports.constantNumericHex, - RubyExports.constantNumericFloat, - { + + this.$rules = { + "start": [ + { + token: "comment.block", // multiline HTML comment + regex: /^\/$/, + next: "comment" + }, + { + token: "comment.block", // multiline HAML comment + regex: /^\-#$/, + next: "comment" + }, + { + token: "comment.line", // HTML comment + regex: /\/\s*.*/ + }, + { + token: "comment.line", // HAML comment + regex: /-#\s*.*/ + }, + { + token: "keyword.other.doctype", + regex: "^!!!\\s*(?:[a-zA-Z0-9-_]+)?" + }, + RubyExports.qString, + RubyExports.qqString, + RubyExports.tString, + { + token: "meta.tag.haml", + regex: /(%[\w:\-]+)/ + }, + { + token: "keyword.attribute-name.class.haml", + regex: /\.[\w-]+/ + }, + { + token: "keyword.attribute-name.id.haml", + regex: /#[\w-]+/, + next: "element_class" + }, + RubyExports.constantNumericHex, + RubyExports.constantNumericFloat, + RubyExports.constantOtherSymbol, + { + token: "text", + regex: /=|-|~/, + next: "embedded_ruby" + } + ], + "element_class": [ + { + token: "keyword.attribute-name.class.haml", + regex: /\.[\w-]+/ + }, + { + token: "punctuation.section", + regex: /\{/, + next: "element_attributes" + }, + RubyExports.constantOtherSymbol, + { + token: "empty", + regex: "$|(?!\\.|#|\\{|\\[|=|-|~|\\/])", + next: "start" + } + ], + "element_attributes": [ + RubyExports.constantOtherSymbol, + RubyExports.qString, + RubyExports.qqString, + RubyExports.tString, + RubyExports.constantNumericHex, + RubyExports.constantNumericFloat, + { + token: "punctuation.section", + regex: /$|\}/, + next: "start" + } + ], + "embedded_ruby": [ + RubyExports.constantNumericHex, + RubyExports.constantNumericFloat, + RubyExports.instanceVariable, + RubyExports.qString, + RubyExports.qqString, + RubyExports.tString, + { token : "support.class", // class name regex : "[A-Z][a-zA-Z_\\d]+" - }, - { - token : new RubyHighlightRules().getKeywords(), - regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" - }, - { - token : ["keyword", "text", "text"], - regex : "(?:do|\\{)(?: \\|[^|]+\\|)?$", - next : "start" - }, - { - token : ["text"], - regex : "^$", - next : "start" - }, - { - token : ["text"], - regex : "^(?!.*\\|\\s*$)", - next : "start" - } - ]; + }, + { + token : new RubyHighlightRules().getKeywords(), + regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" + }, + { + token : ["keyword", "text", "text"], + regex : "(?:do|\\{)(?: \\|[^|]+\\|)?$", + next : "start" + }, + { + token : ["text"], + regex : "^$", + next : "start" + }, + { + token : ["text"], + regex : "^(?!.*\\|\\s*$)", + next : "start" + } + ], + "comment": [ + { + token: "comment.block", + regex: /^$/, + next: "start" + }, + { + token: "comment.block", // comment spanning the whole line + regex: /\s+.*/ + } + ] + + }; this.normalizeRules(); }; @@ -1469,6 +1533,7 @@ var FoldMode = require("./folding/coffee").FoldMode; var Mode = function() { this.HighlightRules = HamlHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-handlebars.js b/js/core/vendor/ace-builds/src-noconflict/mode-handlebars.js index 3a91440..c970820 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-handlebars.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-handlebars.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -791,10 +797,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -810,84 +816,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" + regex: ";", + next: "start" }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -907,14 +911,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -1267,14 +1321,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -1286,9 +1336,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -1302,11 +1352,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -1344,7 +1389,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -1391,7 +1436,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1806,7 +1851,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -1819,6 +1864,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -1937,8 +1988,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -2279,7 +2332,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-haskell.js b/js/core/vendor/ace-builds/src-noconflict/mode-haskell.js index 2ef7dfa..51a5445 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-haskell.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-haskell.js @@ -358,6 +358,7 @@ var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = HaskellHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-haskell_cabal.js b/js/core/vendor/ace-builds/src-noconflict/mode-haskell_cabal.js index 6b79b42..5b69e04 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-haskell_cabal.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-haskell_cabal.js @@ -120,6 +120,7 @@ var FoldMode = require("./folding/haskell_cabal").FoldMode; var Mode = function() { this.HighlightRules = CabalHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-haxe.js b/js/core/vendor/ace-builds/src-noconflict/mode-haxe.js index f4a0012..694b9b8 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-haxe.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-haxe.js @@ -124,11 +124,10 @@ var HaxeHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ] }; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-hjson.js b/js/core/vendor/ace-builds/src-noconflict/mode-hjson.js new file mode 100644 index 0000000..8575876 --- /dev/null +++ b/js/core/vendor/ace-builds/src-noconflict/mode-hjson.js @@ -0,0 +1,346 @@ +ace.define("ace/mode/hjson_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var HjsonHighlightRules = function() { + + this.$rules = { + start: [{ + include: "#comments" + }, { + include: "#rootObject" + }, { + include: "#value" + }], + "#array": [{ + token: "paren.lparen", + regex: /\[/, + push: [{ + token: "paren.rparen", + regex: /\]/, + next: "pop" + }, { + include: "#value" + }, { + include: "#comments" + }, { + token: "text", + regex: /,|$/ + }, { + token: "invalid.illegal", + regex: /[^\s\]]/ + }, { + defaultToken: "array" + }] + }], + "#comments": [{ + token: [ + "comment.punctuation", + "comment.line" + ], + regex: /(#)(.*$)/ + }, { + token: "comment.punctuation", + regex: /\/\*/, + push: [{ + token: "comment.punctuation", + regex: /\*\//, + next: "pop" + }, { + defaultToken: "comment.block" + }] + }, { + token: [ + "comment.punctuation", + "comment.line" + ], + regex: /(\/\/)(.*$)/ + }], + "#constant": [{ + token: "constant", + regex: /\b(?:true|false|null)\b/ + }], + "#keyname": [{ + token: "keyword", + regex: /(?:[^,\{\[\}\]\s]+|"(?:[^"\\]|\\.)*")\s*(?=:)/ + }], + "#mstring": [{ + token: "string", + regex: /'''/, + push: [{ + token: "string", + regex: /'''/, + next: "pop" + }, { + defaultToken: "string" + }] + }], + "#number": [{ + token: "constant.numeric", + regex: /-?(?:0|[1-9]\d*)(?:(?:\.\d+)?(?:[eE][+-]?\d+)?)?/, + comment: "handles integer and decimal numbers" + }], + "#object": [{ + token: "paren.lparen", + regex: /\{/, + push: [{ + token: "paren.rparen", + regex: /\}/, + next: "pop" + }, { + include: "#keyname" + }, { + include: "#value" + }, { + token: "text", + regex: /:/ + }, { + token: "text", + regex: /,/ + }, { + defaultToken: "paren" + }] + }], + "#rootObject": [{ + token: "paren", + regex: /(?=\s*(?:[^,\{\[\}\]\s]+|"(?:[^"\\]|\\.)*")\s*:)/, + push: [{ + token: "paren.rparen", + regex: /---none---/, + next: "pop" + }, { + include: "#keyname" + }, { + include: "#value" + }, { + token: "text", + regex: /:/ + }, { + token: "text", + regex: /,/ + }, { + defaultToken: "paren" + }] + }], + "#string": [{ + token: "string", + regex: /"/, + push: [{ + token: "string", + regex: /"/, + next: "pop" + }, { + token: "constant.language.escape", + regex: /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/ + }, { + token: "invalid.illegal", + regex: /\\./ + }, { + defaultToken: "string" + }] + }], + "#ustring": [{ + token: "string", + regex: /\b[^:,0-9\-\{\[\}\]\s].*$/ + }], + "#value": [{ + include: "#constant" + }, { + include: "#number" + }, { + include: "#string" + }, { + include: "#array" + }, { + include: "#object" + }, { + include: "#comments" + }, { + include: "#mstring" + }, { + include: "#ustring" + }] + } + + this.normalizeRules(); +}; + +HjsonHighlightRules.metaData = { + fileTypes: ["hjson"], + foldingStartMarker: "(?x: # turn on extended mode\n ^ # a line beginning with\n \\s* # some optional space\n [{\\[] # the start of an object or array\n (?! # but not followed by\n .* # whatever\n [}\\]] # and the close of an object or array\n ,? # an optional comma\n \\s* # some optional space\n $ # at the end of the line\n )\n | # ...or...\n [{\\[] # the start of an object or array\n \\s* # some optional space\n $ # at the end of the line\n )", + foldingStopMarker: "(?x: # turn on extended mode\n ^ # a line beginning with\n \\s* # some optional space\n [}\\]] # and the close of an object or array\n )", + keyEquivalent: "^~J", + name: "Hjson", + scopeName: "source.hjson" +} + + +oop.inherits(HjsonHighlightRules, TextHighlightRules); + +exports.HjsonHighlightRules = HjsonHighlightRules; +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; + +var FoldMode = exports.FoldMode = function(commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp( + this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) + ); + this.foldingStopMarker = new RegExp( + this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) + ); + } +}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function(session, foldStyle, row) { + var line = session.getLine(row); + + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + + var fw = this._getFoldWidgetBase(session, foldStyle, row); + + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + + return fw; + }; + + this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } else if (foldStyle != "all") + range = null; + } + + return range; + } + + if (foldStyle === "markbegin") + return; + + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + + return session.getCommentFoldRange(row, i, -1); + } + }; + + this.getSectionRange = function(session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } else if (subRange.isMultiLine()) { + row = subRange.end.row; + } else if (startIndent == indent) { + break; + } + } + endRow = row; + } + + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function(session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) continue; + if (m[1]) depth--; + else depth++; + + if (!depth) break; + } + + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; + +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/hjson",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/hjson_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var HjsonHighlightRules = require("./hjson_highlight_rules").HjsonHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = HjsonHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "//"; + this.blockComment = { start: "/*", end: "*/" }; + this.$id = "ace/mode/hjson" +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-html.js b/js/core/vendor/ace-builds/src-noconflict/mode-html.js index cf48fc5..35aa2cc 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-html.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-html.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -791,10 +797,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -810,84 +816,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" + regex: ";", + next: "start" }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -907,14 +911,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -1267,14 +1321,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -1286,9 +1336,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -1302,11 +1352,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -1344,7 +1389,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -1391,7 +1436,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1806,7 +1851,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -1819,6 +1864,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -1937,8 +1988,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -2279,7 +2332,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-html_elixir.js b/js/core/vendor/ace-builds/src-noconflict/mode-html_elixir.js index 90eec80..207e489 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-html_elixir.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-html_elixir.js @@ -7,10 +7,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -26,84 +26,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" + regex: ";", + next: "start" }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -123,14 +121,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -216,7 +264,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -250,11 +298,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -305,6 +353,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -321,6 +372,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -460,7 +514,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -476,7 +530,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -486,8 +540,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -522,14 +576,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -580,8 +634,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -596,7 +650,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -672,14 +726,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -691,9 +741,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -707,11 +757,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -749,7 +794,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -796,7 +841,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1573,14 +1618,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -1598,6 +1642,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -2246,7 +2291,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -2259,6 +2304,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -2377,8 +2428,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -2719,7 +2772,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; @@ -2964,6 +3017,7 @@ var FoldMode = require("./folding/coffee").FoldMode; var Mode = function() { this.HighlightRules = ElixirHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-html_ruby.js b/js/core/vendor/ace-builds/src-noconflict/mode-html_ruby.js index 6290099..593e955 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-html_ruby.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-html_ruby.js @@ -7,10 +7,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -26,84 +26,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" + regex: ";", + next: "start" }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -123,14 +121,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -216,7 +264,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -250,11 +298,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -305,6 +353,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -321,6 +372,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -460,7 +514,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -476,7 +530,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -486,8 +540,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -522,14 +576,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -580,8 +634,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -596,7 +650,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -672,14 +726,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -691,9 +741,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -707,11 +757,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -749,7 +794,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -796,7 +841,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -988,6 +1033,11 @@ var constantNumericFloat = exports.constantNumericFloat = { regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b" }; +var instanceVariable = exports.instanceVariable = { + token : "variable.instance", // instance variable + regex : "@{1,2}[a-zA-Z_\\d]+" +}; + var RubyHighlightRules = function() { var builtinFunctions = ( @@ -1477,14 +1527,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -1502,6 +1551,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -2150,7 +2200,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -2163,6 +2213,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -2281,8 +2337,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -2623,7 +2681,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-ini.js b/js/core/vendor/ace-builds/src-noconflict/mode-ini.js index 805433b..f53e87f 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-ini.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-ini.js @@ -141,6 +141,7 @@ var FoldMode = require("./folding/ini").FoldMode; var Mode = function() { this.HighlightRules = IniHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-io.js b/js/core/vendor/ace-builds/src-noconflict/mode-io.js index 3fd016e..93d53e2 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-io.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-io.js @@ -221,25 +221,25 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/io",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/io_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/io",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/io_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; -var Tokenizer = require("../tokenizer").Tokenizer; var IoHighlightRules = require("./io_highlight_rules").IoHighlightRules; var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = IoHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); (function() { this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; - this.$id = "ace/mode/io" + this.$id = "ace/mode/io"; }).call(Mode.prototype); exports.Mode = Mode; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-jade.js b/js/core/vendor/ace-builds/src-noconflict/mode-jade.js index 701b9b2..bfbe9c8 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-jade.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-jade.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -528,14 +534,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -547,9 +549,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -563,11 +565,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -605,7 +602,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -652,7 +649,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -736,10 +733,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -755,84 +752,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" + regex: ";", + next: "start" }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -852,14 +847,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -1113,8 +1158,7 @@ var MarkdownHighlightRules = function() { regex : "^\\s*```", next : "start" }, { - token : "support.function", - regex : ".+" + defaultToken : "support.function" } ] }); @@ -1226,7 +1270,7 @@ var ScssHighlightRules = function() { "alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|" + "floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|" + "nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|" + - "scale_color|transparentize|type_of|unit|unitless|unqoute").split("|") + "scale_color|transparentize|type_of|unit|unitless|unquote").split("|") ); var constants = lang.arrayToMap( @@ -1254,8 +1298,30 @@ var ScssHighlightRules = function() { ); var colors = lang.arrayToMap( - ("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|" + - "purple|red|silver|teal|white|yellow").split("|") + ("aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|" + + "blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|" + + "chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|" + + "darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|" + + "darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|" + + "darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|" + + "darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|" + + "dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|" + + "ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|" + + "hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|" + + "lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|" + + "lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|" + + "lightsalmon|lightseagreen|lightskyblue|lightslategray|" + + "lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|" + + "magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|" + + "mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|" + + "mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|" + + "moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|" + + "orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|" + + "papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|" + + "red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|" + + "seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|" + + "springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|" + + "wheat|white|whitesmoke|yellow|yellowgreen").split("|") ); var keywords = lang.arrayToMap( @@ -1367,11 +1433,10 @@ var ScssHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "qqstring" : [ @@ -1522,11 +1587,10 @@ var LessHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ] }; @@ -2051,8 +2115,8 @@ var FoldMode = require("./folding/coffee").FoldMode; var Mode = function() { this.HighlightRules = JadeHighlightRules; - this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-java.js b/js/core/vendor/ace-builds/src-noconflict/mode-java.js index feba6ff..8fac1eb 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-java.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-java.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -886,11 +892,10 @@ var JavaHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ] }; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-javascript.js b/js/core/vendor/ace-builds/src-noconflict/mode-javascript.js index 5a25b0e..0e4a81a 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-javascript.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-javascript.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-json.js b/js/core/vendor/ace-builds/src-noconflict/mode-json.js index 2d009dc..6be2035 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-json.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-json.js @@ -24,12 +24,16 @@ var JsonHighlightRules = function() { token : "constant.language.boolean", regex : "(?:true|false)\\b" }, { - token : "invalid.illegal", // single quoted strings are not allowed + token : "text", // single quoted strings are not allowed regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { - token : "invalid.illegal", // comments are not allowed + token : "comment", // comments are not allowed, but who cares? regex : "\\/\\/.*$" }, { + token : "comment.start", // comments are not allowed, but who cares? + regex : "\\/\\*", + next : "comment" + }, { token : "paren.lparen", regex : "[[({]" }, { @@ -46,15 +50,19 @@ var JsonHighlightRules = function() { regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ }, { token : "string", - regex : '[^"\\\\]+' - }, { - token : "string", - regex : '"', + regex : '"|$', next : "start" }, { - token : "string", - regex : "", + defaultToken : "string" + } + ], + "comment" : [ + { + token : "comment.end", // comments are not allowed, but who cares? + regex : "\\*\\/", next : "start" + }, { + defaultToken: "comment" } ] }; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-jsp.js b/js/core/vendor/ace-builds/src-noconflict/mode-jsp.js index 98f4e77..ad13aed 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-jsp.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-jsp.js @@ -7,10 +7,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -26,84 +26,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" + regex: ";", + next: "start" }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -123,14 +121,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -216,7 +264,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -250,11 +298,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -305,6 +353,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -321,6 +372,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -460,7 +514,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -476,7 +530,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -486,8 +540,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -522,14 +576,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -580,8 +634,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -596,7 +650,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -672,14 +726,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -691,9 +741,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -707,11 +757,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -749,7 +794,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -796,7 +841,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1057,11 +1102,10 @@ var JavaHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ] }; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-jsx.js b/js/core/vendor/ace-builds/src-noconflict/mode-jsx.js index b2965e5..3f3d3e4 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-jsx.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-jsx.js @@ -149,11 +149,10 @@ var JsxHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ] }; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-julia.js b/js/core/vendor/ace-builds/src-noconflict/mode-julia.js index ae692e3..ee1e88a 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-julia.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-julia.js @@ -282,6 +282,7 @@ var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = JuliaHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-latex.js b/js/core/vendor/ace-builds/src-noconflict/mode-latex.js index cf91761..cfdf56f 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-latex.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-latex.js @@ -195,18 +195,19 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/latex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/latex_highlight_rules","ace/mode/folding/latex","ace/range"], function(require, exports, module) { +ace.define("ace/mode/latex",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/latex_highlight_rules","ace/mode/behaviour/cstyle","ace/mode/folding/latex"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var LatexHighlightRules = require("./latex_highlight_rules").LatexHighlightRules; +var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var LatexFoldMode = require("./folding/latex").FoldMode; -var Range = require("../range").Range; var Mode = function() { this.HighlightRules = LatexHighlightRules; this.foldingRules = new LatexFoldMode(); + this.$behaviour = new CstyleBehaviour({ braces: true }); }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-less.js b/js/core/vendor/ace-builds/src-noconflict/mode-less.js index 43ea2e3..c407a09 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-less.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-less.js @@ -7,10 +7,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -26,84 +26,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" + regex: ";", + next: "start" }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + next : "start" }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' - }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -123,14 +121,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -261,11 +309,10 @@ var LessHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ] }; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-liquid.js b/js/core/vendor/ace-builds/src-noconflict/mode-liquid.js index 18fe355..925ef30 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-liquid.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-liquid.js @@ -7,10 +7,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -26,84 +26,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" + regex: ";", + next: "start" }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -123,14 +121,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -216,7 +264,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -250,11 +298,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -305,6 +353,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -321,6 +372,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -460,7 +514,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -476,7 +530,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -486,8 +540,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -522,14 +576,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -580,8 +634,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -596,7 +650,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -672,14 +726,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -691,9 +741,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -707,11 +757,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -749,7 +794,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -796,7 +841,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1085,17 +1130,17 @@ var MatchingBraceOutdent = function() {}; exports.MatchingBraceOutdent = MatchingBraceOutdent; }); -ace.define("ace/mode/liquid",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/liquid_highlight_rules","ace/mode/matching_brace_outdent","ace/range"], function(require, exports, module) { +ace.define("ace/mode/liquid",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/liquid_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module) { var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var LiquidHighlightRules = require("./liquid_highlight_rules").LiquidHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var Mode = function() { this.HighlightRules = LiquidHighlightRules; this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-lisp.js b/js/core/vendor/ace-builds/src-noconflict/mode-lisp.js index 0c6fc4d..fb0897d 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-lisp.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-lisp.js @@ -90,6 +90,7 @@ var LispHighlightRules = require("./lisp_highlight_rules").LispHighlightRules; var Mode = function() { this.HighlightRules = LispHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-lua.js b/js/core/vendor/ace-builds/src-noconflict/mode-lua.js index 3d7e328..bcf4daa 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-lua.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-lua.js @@ -96,7 +96,7 @@ var LuaHighlightRules = function() { stateName: "bracketedString", onMatch : function(value, currentState, stack){ stack.unshift(this.next, value.length, currentState); - return "comment"; + return "string.start"; }, regex : /\[=*\[/, next : [ @@ -109,13 +109,13 @@ var LuaHighlightRules = function() { } else { this.next = ""; } - return "comment"; + return "string.end"; }, regex : /\]=*\]/, next : "start" }, { - defaultToken : "comment" + defaultToken : "string" } ] }, @@ -305,6 +305,7 @@ var Mode = function() { this.HighlightRules = LuaHighlightRules; this.foldingRules = new LuaFoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); @@ -395,7 +396,7 @@ oop.inherits(Mode, TextMode); var tabLength = session.getTabString().length; var expectedIndent = prevIndent + tabLength * getNetIndentLevel(prevTokens); var curIndent = this.$getIndent(session.getLine(row)).length; - if (curIndent < expectedIndent) { + if (curIndent <= expectedIndent) { return; } session.outdentRows(new Range(row, 0, row + 2, 0)); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-luapage.js b/js/core/vendor/ace-builds/src-noconflict/mode-luapage.js index 9c6d0e5..be6b092 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-luapage.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-luapage.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -791,10 +797,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -810,84 +816,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" + regex: ";", + next: "start" }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -907,14 +911,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -1267,14 +1321,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -1286,9 +1336,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -1302,11 +1352,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -1344,7 +1389,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -1391,7 +1436,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1806,7 +1851,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -1819,6 +1864,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -1937,8 +1988,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -2279,7 +2332,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; @@ -2524,7 +2577,7 @@ var LuaHighlightRules = function() { stateName: "bracketedString", onMatch : function(value, currentState, stack){ stack.unshift(this.next, value.length, currentState); - return "comment"; + return "string.start"; }, regex : /\[=*\[/, next : [ @@ -2537,13 +2590,13 @@ var LuaHighlightRules = function() { } else { this.next = ""; } - return "comment"; + return "string.end"; }, regex : /\]=*\]/, next : "start" }, { - defaultToken : "comment" + defaultToken : "string" } ] }, @@ -2733,6 +2786,7 @@ var Mode = function() { this.HighlightRules = LuaHighlightRules; this.foldingRules = new LuaFoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); @@ -2823,7 +2877,7 @@ oop.inherits(Mode, TextMode); var tabLength = session.getTabString().length; var expectedIndent = prevIndent + tabLength * getNetIndentLevel(prevTokens); var curIndent = this.$getIndent(session.getLine(row)).length; - if (curIndent < expectedIndent) { + if (curIndent <= expectedIndent) { return; } session.outdentRows(new Range(row, 0, row + 2, 0)); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-lucene.js b/js/core/vendor/ace-builds/src-noconflict/mode-lucene.js index dbb214b..b830b7a 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-lucene.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-lucene.js @@ -57,6 +57,7 @@ var LuceneHighlightRules = require("./lucene_highlight_rules").LuceneHighlightRu var Mode = function() { this.HighlightRules = LuceneHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-makefile.js b/js/core/vendor/ace-builds/src-noconflict/mode-makefile.js index 85636c9..cc6fc65 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-makefile.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-makefile.js @@ -388,6 +388,7 @@ var FoldMode = require("./folding/coffee").FoldMode; var Mode = function() { this.HighlightRules = MakefileHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-markdown.js b/js/core/vendor/ace-builds/src-noconflict/mode-markdown.js index 8a9b07f..51df9be 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-markdown.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-markdown.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -795,14 +801,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -814,9 +816,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -830,11 +832,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -872,7 +869,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -919,7 +916,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1198,7 +1195,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -1211,6 +1208,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -1329,8 +1332,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -1457,10 +1462,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -1476,84 +1481,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" + regex: ";", + next: "start" }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -1573,14 +1576,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -2325,7 +2378,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; @@ -2632,8 +2685,7 @@ var MarkdownHighlightRules = function() { regex : "^\\s*```", next : "start" }, { - token : "support.function", - regex : ".+" + defaultToken : "support.function" } ] }); @@ -2785,6 +2837,7 @@ var Mode = function() { }); this.foldingRules = new MarkdownFoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-mask.js b/js/core/vendor/ace-builds/src-noconflict/mode-mask.js index 4393457..983d02f 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-mask.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-mask.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -524,10 +530,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -543,84 +549,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" + regex: ";", + next: "start" }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -640,14 +644,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -672,14 +726,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -691,9 +741,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -707,11 +757,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -749,7 +794,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -796,7 +841,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1113,8 +1158,7 @@ var MarkdownHighlightRules = function() { regex : "^\\s*```", next : "start" }, { - token : "support.function", - regex : ".+" + defaultToken : "support.function" } ] }); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-matlab.js b/js/core/vendor/ace-builds/src-noconflict/mode-matlab.js index 6659a81..b887040 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-matlab.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-matlab.js @@ -230,16 +230,16 @@ oop.inherits(MatlabHighlightRules, TextHighlightRules); exports.MatlabHighlightRules = MatlabHighlightRules; }); -ace.define("ace/mode/matlab",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/matlab_highlight_rules","ace/range"], function(require, exports, module) { +ace.define("ace/mode/matlab",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/matlab_highlight_rules"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var MatlabHighlightRules = require("./matlab_highlight_rules").MatlabHighlightRules; -var Range = require("../range").Range; var Mode = function() { this.HighlightRules = MatlabHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-maze.js b/js/core/vendor/ace-builds/src-noconflict/mode-maze.js index 47dcdc3..cdc8d22 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-maze.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-maze.js @@ -271,6 +271,7 @@ var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = MazeHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-mushcode.js b/js/core/vendor/ace-builds/src-noconflict/mode-mushcode.js index 717593c..5e6b7ea 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-mushcode.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-mushcode.js @@ -605,6 +605,7 @@ var Range = require("../range").Range; var Mode = function() { this.HighlightRules = MushCodeRules; this.foldingRules = new PythonFoldMode("\\:"); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-mysql.js b/js/core/vendor/ace-builds/src-noconflict/mode-mysql.js index 74573c7..7abe675 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-mysql.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-mysql.js @@ -137,15 +137,15 @@ oop.inherits(MysqlHighlightRules, TextHighlightRules); exports.MysqlHighlightRules = MysqlHighlightRules; }); -ace.define("ace/mode/mysql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mysql_highlight_rules","ace/range"], function(require, exports, module) { +ace.define("ace/mode/mysql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mysql_highlight_rules"], function(require, exports, module) { var oop = require("../lib/oop"); var TextMode = require("../mode/text").Mode; var MysqlHighlightRules = require("./mysql_highlight_rules").MysqlHighlightRules; -var Range = require("../range").Range; var Mode = function() { this.HighlightRules = MysqlHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-nix.js b/js/core/vendor/ace-builds/src-noconflict/mode-nix.js index d50adfa..3424bea 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-nix.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-nix.js @@ -173,11 +173,10 @@ var c_cppHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "singleLineComment" : [ @@ -555,11 +554,10 @@ ace.define("ace/mode/nix_highlight_rules",["require","exports","module","ace/lib }], "comment": [{ token: "comment", // closing comment - regex: ".*?\\*\\/", + regex: "\\*\\/", next: "start" }, { - token: "comment", // comment spanning whole line - regex: ".+" + defaultToken: "comment" }], "qqdoc": [ { @@ -619,6 +617,7 @@ var Mode = function() { CMode.call(this); this.HighlightRules = NixHighlightRules; this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, CMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-nsis.js b/js/core/vendor/ace-builds/src-noconflict/mode-nsis.js index 202bf7a..a20aed2 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-nsis.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-nsis.js @@ -9,33 +9,33 @@ var NSISHighlightRules = function() { this.$rules = { start: [{ token: "keyword.compiler.nsis", - regex: /(?:\b|^\s*)!(?:include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|finalize|getdllversion|system|tempfile|warning|verbose|define|undef|insertmacro|macro|macroend|makensis|searchparse|searchreplace)\b/, + regex: /^\s*!(?:include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|finalize|getdllversion|system|tempfile|warning|verbose|define|undef|insertmacro|macro|macroend|makensis|searchparse|searchreplace)\b/, caseInsensitive: true }, { token: "keyword.command.nsis", - regex: /(?:\b|^\s*)(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|IntCmp|IntCmpU|IntFmt|IntOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetPluginUnload|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegStr|WriteUninstaller|XPStyle)\b/, + regex: /^\s*(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|IntCmp|IntCmpU|IntFmt|IntOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegStr|WriteUninstaller|XPStyle)\b/, caseInsensitive: true }, { token: "keyword.control.nsis", - regex: /(?:\b|^\s*)!(?:ifdef|ifndef|if|ifmacrodef|ifmacrondef|else|endif)\b/, + regex: /^\s*!(?:ifdef|ifndef|if|ifmacrodef|ifmacrondef|else|endif)\b/, caseInsensitive: true }, { token: "keyword.plugin.nsis", - regex: /(?:\b|^\s*)\w+::\w+/, + regex: /^\s*\w+::\w+/, caseInsensitive: true }, { token: "keyword.operator.comparison.nsis", regex: /[!<>]?=|<>|<|>/ }, { token: "support.function.nsis", - regex: /(?:\b|^\s*)(?:Function|FunctionEnd|Section|SectionEnd|SectionGroup|SectionGroupEnd|SubSection|SubSectionEnd|PageEx|PageExEnd)\b/, + regex: /(?:\b|^\s*)(?:Function|FunctionEnd|Section|SectionEnd|SectionGroup|SectionGroupEnd|PageEx|PageExEnd)\b/, caseInsensitive: true }, { token: "support.library.nsis", - regex: /\${[\w]+}/ + regex: /\${[\w\.:-]+}/ }, { token: "constant.nsis", - regex: /(?:\b|^\s*)(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/, + regex: /\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/, caseInsensitive: true }, { token: "constant.library.nsis", @@ -52,14 +52,14 @@ var NSISHighlightRules = function() { caseInsensitive: true }, { token: "constant.language.slash-option.nsis", - regex: /\/(?:a|BRANDING|CENTER|COMPONENTSONLYONCUSTOM|CUSTOMSTRING=|date|e|ENABLECANCEL|FILESONLY|file|FINAL|GLOBAL|gray|ifempty|ifndef|ignorecase|IMGID=|ITALIC|LANG=|NOCUSTOM|noerrors|NONFATAL|nonfatal|oname=|o|REBOOTOK|redef|RESIZETOFIT|r|SHORT|SILENT|SOLID|STRIKE|TRIM|UNDERLINE|utcdate|windows|x)\b/, + regex: /\b\/(?:a|BRANDING|CENTER|COMPONENTSONLYONCUSTOM|CUSTOMSTRING=|date|e|ENABLECANCEL|FILESONLY|file|FINAL|GLOBAL|gray|ifempty|ifndef|ignorecase|IMGID=|ITALIC|LANG=|NOCUSTOM|noerrors|NONFATAL|nonfatal|oname=|o|REBOOTOK|redef|RESIZETOFIT|r|SHORT|SILENT|SOLID|STRIKE|TRIM|UNDERLINE|utcdate|windows|x)\b/, caseInsensitive: true }, { token: "constant.numeric.nsis", regex: /\b(?:0(?:x|X)[0-9a-fA-F]+|[0-9]+(?:\.[0-9]+)?)\b/ }, { token: "entity.name.function.nsis", - regex: /\${[\w]+}/ + regex: /\$\([\w\.:-]+\)/ }, { token: "storage.type.function.nsis", regex: /\$[\w]+/ @@ -291,6 +291,7 @@ var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = NSISHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-objectivec.js b/js/core/vendor/ace-builds/src-noconflict/mode-objectivec.js index 1660bbe..1dd0cb5 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-objectivec.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-objectivec.js @@ -173,11 +173,10 @@ var c_cppHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "singleLineComment" : [ @@ -528,8 +527,7 @@ var ObjectiveCHighlightRules = function() { regex : ".*?\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "methods" : [ @@ -713,6 +711,7 @@ var CStyleFoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = ObjectiveCHighlightRules; this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-ocaml.js b/js/core/vendor/ace-builds/src-noconflict/mode-ocaml.js index 39f849b..29f26cc 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-ocaml.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-ocaml.js @@ -279,12 +279,11 @@ var OcamlHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\)", + regex : "\\*\\)", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], @@ -357,6 +356,7 @@ var Range = require("../range").Range; var Mode = function() { this.HighlightRules = OcamlHighlightRules; + this.$behaviour = this.$defaultBehaviour; this.$outdent = new MatchingBraceOutdent(); }; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-pascal.js b/js/core/vendor/ace-builds/src-noconflict/mode-pascal.js index 2bda331..9ccd1ed 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-pascal.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-pascal.js @@ -179,6 +179,7 @@ var FoldMode = require("./folding/coffee").FoldMode; var Mode = function() { this.HighlightRules = PascalHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-perl.js b/js/core/vendor/ace-builds/src-noconflict/mode-perl.js index 446958e..768c538 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-perl.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-perl.js @@ -311,14 +311,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/perl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/perl_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/perl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/perl_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var PerlHighlightRules = require("./perl_highlight_rules").PerlHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var CStyleFoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { @@ -326,6 +325,7 @@ var Mode = function() { this.$outdent = new MatchingBraceOutdent(); this.foldingRules = new CStyleFoldMode({start: "^=(begin|item)\\b", end: "^=(cut)\\b"}); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-pgsql.js b/js/core/vendor/ace-builds/src-noconflict/mode-pgsql.js index 354c4bd..189f17a 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-pgsql.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-pgsql.js @@ -363,12 +363,16 @@ var JsonHighlightRules = function() { token : "constant.language.boolean", regex : "(?:true|false)\\b" }, { - token : "invalid.illegal", // single quoted strings are not allowed + token : "text", // single quoted strings are not allowed regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { - token : "invalid.illegal", // comments are not allowed + token : "comment", // comments are not allowed, but who cares? regex : "\\/\\/.*$" }, { + token : "comment.start", // comments are not allowed, but who cares? + regex : "\\/\\*", + next : "comment" + }, { token : "paren.lparen", regex : "[[({]" }, { @@ -385,15 +389,19 @@ var JsonHighlightRules = function() { regex : /\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/ }, { token : "string", - regex : '[^"\\\\]+' - }, { - token : "string", - regex : '"', + regex : '"|$', next : "start" }, { - token : "string", - regex : "", + defaultToken : "string" + } + ], + "comment" : [ + { + token : "comment.end", // comments are not allowed, but who cares? + regex : "\\*\\/", next : "start" + }, { + defaultToken: "comment" } ] }; @@ -429,7 +437,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -463,11 +471,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -518,6 +526,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -534,6 +545,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -673,7 +687,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -689,7 +703,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -699,8 +713,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -735,14 +749,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -793,8 +807,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -809,7 +823,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -1397,31 +1411,28 @@ var PgsqlHighlightRules = function() { "comment" : [{ token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "commentStatement" : [{ token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "statement" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "commentDollarSql" : [{ token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "dollarSql" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], @@ -1458,15 +1469,15 @@ oop.inherits(PgsqlHighlightRules, TextHighlightRules); exports.PgsqlHighlightRules = PgsqlHighlightRules; }); -ace.define("ace/mode/pgsql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pgsql_highlight_rules","ace/range"], function(require, exports, module) { +ace.define("ace/mode/pgsql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pgsql_highlight_rules"], function(require, exports, module) { var oop = require("../lib/oop"); var TextMode = require("../mode/text").Mode; var PgsqlHighlightRules = require("./pgsql_highlight_rules").PgsqlHighlightRules; -var Range = require("../range").Range; var Mode = function() { this.HighlightRules = PgsqlHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); @@ -1480,7 +1491,7 @@ oop.inherits(Mode, TextMode); } else { return this.$getIndent(line); // Keep whatever indent the previous line has } - } + }; this.$id = "ace/mode/pgsql"; }).call(Mode.prototype); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-php.js b/js/core/vendor/ace-builds/src-noconflict/mode-php.js index e91a790..b4d55de 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-php.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-php.js @@ -57,10 +57,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -76,84 +76,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" + regex: ";", + next: "start" }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -173,14 +171,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -216,7 +264,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -250,11 +298,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -305,6 +353,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -321,6 +372,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -460,7 +514,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -476,7 +530,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -486,8 +540,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -522,14 +576,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -580,8 +634,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -596,7 +650,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -672,14 +726,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -691,9 +741,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -707,11 +757,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -749,7 +794,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -796,7 +841,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -11371,14 +11416,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -11396,6 +11440,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -12044,7 +12089,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -12057,6 +12102,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -12175,8 +12226,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -12517,7 +12570,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-pig.js b/js/core/vendor/ace-builds/src-noconflict/mode-pig.js new file mode 100644 index 0000000..e251e38 --- /dev/null +++ b/js/core/vendor/ace-builds/src-noconflict/mode-pig.js @@ -0,0 +1,303 @@ +ace.define("ace/mode/pig_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var PigHighlightRules = function() { + + this.$rules = { + start: [{ + token: "comment.block.pig", + regex: /\/\*/, + push: [{ + token: "comment.block.pig", + regex: /\*\//, + next: "pop" + }, { + defaultToken: "comment.block.pig" + }] + }, { + token: "comment.line.double-dash.asciidoc", + regex: /--.*$/ + }, { + token: "keyword.control.pig", + regex: /\b(?:ASSERT|LOAD|STORE|DUMP|FILTER|DISTINCT|FOREACH|GENERATE|STREAM|JOIN|COGROUP|GROUP|CROSS|ORDER|LIMIT|UNION|SPLIT|DESCRIBE|EXPLAIN|ILLUSTRATE|AS|BY|INTO|USING|LIMIT|PARALLEL|OUTER|INNER|DEFAULT|LEFT|SAMPLE|RANK|CUBE|ALL|KILL|QUIT|MAPREDUCE|ASC|DESC|THROUGH|SHIP|CACHE|DECLARE|CASE|WHEN|THEN|END|IN|PARTITION|FULL|IMPORT|IF|ONSCHEMA|INPUT|OUTPUT)\b/, + caseInsensitive: true + }, { + token: "storage.datatypes.pig", + regex: /\b(?:int|long|float|double|chararray|bytearray|boolean|datetime|biginteger|bigdecimal|tuple|bag|map)\b/, + caseInsensitive: true + }, { + token: "support.function.storage.pig", + regex: /\b(?:PigStorage|BinStorage|BinaryStorage|PigDump|HBaseStorage|JsonLoader|JsonStorage|AvroStorage|TextLoader|PigStreaming|TrevniStorage|AccumuloStorage)\b/ + }, { + token: "support.function.udf.pig", + regex: /\b(?:DIFF|TOBAG|TOMAP|TOP|TOTUPLE|RANDOM|FLATTEN|flatten|CUBE|ROLLUP|IsEmpty|ARITY|PluckTuple|SUBTRACT|BagToString)\b/ + }, { + token: "support.function.udf.math.pig", + regex: /\b(?:ABS|ACOS|ASIN|ATAN|CBRT|CEIL|COS|COSH|EXP|FLOOR|LOG|LOG10|ROUND|ROUND_TO|SIN|SINH|SQRT|TAN|TANH|AVG|COUNT|COUNT_STAR|MAX|MIN|SUM|COR|COV)\b/ + }, { + token: "support.function.udf.string.pig", + regex: /\b(?:CONCAT|INDEXOF|LAST_INDEX_OF|LCFIRST|LOWER|REGEX_EXTRACT|REGEX_EXTRACT_ALL|REPLACE|SIZE|STRSPLIT|SUBSTRING|TOKENIZE|TRIM|UCFIRST|UPPER|LTRIM|RTRIM|ENDSWITH|STARTSWITH|TRIM)\b/ + }, { + token: "support.function.udf.datetime.pig", + regex: /\b(?:AddDuration|CurrentTime|DaysBetween|GetDay|GetHour|GetMilliSecond|GetMinute|GetMonth|GetSecond|GetWeek|GetWeekYear|GetYear|HoursBetween|MilliSecondsBetween|MinutesBetween|MonthsBetween|SecondsBetween|SubtractDuration|ToDate|WeeksBetween|YearsBetween|ToMilliSeconds|ToString|ToUnixTime)\b/ + }, { + token: "support.function.command.pig", + regex: /\b(?:cat|cd|copyFromLocal|copyToLocal|cp|ls|mkdir|mv|pwd|rm)\b/ + }, { + token: "variable.pig", + regex: /\$[a_zA-Z0-9_]+/ + }, { + token: "constant.language.pig", + regex: /\b(?:NULL|true|false|stdin|stdout|stderr)\b/, + caseInsensitive: true + }, { + token: "constant.numeric.pig", + regex: /\b\d+(?:\.\d+)?\b/ + }, { + token: "keyword.operator.comparison.pig", + regex: /!=|==|<|>|<=|>=|\b(?:MATCHES|IS|OR|AND|NOT)\b/, + caseInsensitive: true + }, { + token: "keyword.operator.arithmetic.pig", + regex: /\+|\-|\*|\/|\%|\?|:|::|\.\.|#/ + }, { + token: "string.quoted.double.pig", + regex: /"/, + push: [{ + token: "string.quoted.double.pig", + regex: /"/, + next: "pop" + }, { + token: "constant.character.escape.pig", + regex: /\\./ + }, { + defaultToken: "string.quoted.double.pig" + }] + }, { + token: "string.quoted.single.pig", + regex: /'/, + push: [{ + token: "string.quoted.single.pig", + regex: /'/, + next: "pop" + }, { + token: "constant.character.escape.pig", + regex: /\\./ + }, { + defaultToken: "string.quoted.single.pig" + }] + }, { + todo: { + token: [ + "text", + "keyword.parameter.pig", + "text", + "storage.type.parameter.pig" + ], + regex: /^(\s*)(set)(\s+)(\S+)/, + caseInsensitive: true, + push: [{ + token: "text", + regex: /$/, + next: "pop" + }, { + include: "$self" + }] + } + }, { + token: [ + "text", + "keyword.alias.pig", + "text", + "storage.type.alias.pig" + ], + regex: /(\s*)(DEFINE|DECLARE|REGISTER)(\s+)(\S+)/, + caseInsensitive: true, + push: [{ + token: "text", + regex: /;?$/, + next: "pop" + }] + }] + } + + this.normalizeRules(); +}; + +PigHighlightRules.metaData = { + fileTypes: ["pig"], + name: "Pig", + scopeName: "source.pig" +} + + +oop.inherits(PigHighlightRules, TextHighlightRules); + +exports.PigHighlightRules = PigHighlightRules; +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; + +var FoldMode = exports.FoldMode = function(commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp( + this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) + ); + this.foldingStopMarker = new RegExp( + this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) + ); + } +}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function(session, foldStyle, row) { + var line = session.getLine(row); + + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + + var fw = this._getFoldWidgetBase(session, foldStyle, row); + + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + + return fw; + }; + + this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } else if (foldStyle != "all") + range = null; + } + + return range; + } + + if (foldStyle === "markbegin") + return; + + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + + return session.getCommentFoldRange(row, i, -1); + } + }; + + this.getSectionRange = function(session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } else if (subRange.isMultiLine()) { + row = subRange.end.row; + } else if (startIndent == indent) { + break; + } + } + endRow = row; + } + + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function(session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) continue; + if (m[1]) depth--; + else depth++; + + if (!depth) break; + } + + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; + +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/pig",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/pig_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var PigHighlightRules = require("./pig_highlight_rules").PigHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = PigHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + this.lineCommentStart = "--"; + this.blockComment = {start: "/*", end: "*/"}; + this.$id = "ace/mode/pig" +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-praat.js b/js/core/vendor/ace-builds/src-noconflict/mode-praat.js index 7197c81..a3a50f7 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-praat.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-praat.js @@ -412,20 +412,20 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/praat",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/praat_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/praat",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/praat_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var PraatHighlightRules = require("./praat_highlight_rules").PraatHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var CStyleFoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = PraatHighlightRules; - this.$outdent = new MatchingBraceOutdent(); + this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-prolog.js b/js/core/vendor/ace-builds/src-noconflict/mode-prolog.js index d0aded9..6bf01ad 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-prolog.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-prolog.js @@ -350,6 +350,7 @@ var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = PrologHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-properties.js b/js/core/vendor/ace-builds/src-noconflict/mode-properties.js index 91a2150..2e9ba72 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-properties.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-properties.js @@ -61,6 +61,7 @@ var PropertiesHighlightRules = require("./properties_highlight_rules").Propertie var Mode = function() { this.HighlightRules = PropertiesHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-protobuf.js b/js/core/vendor/ace-builds/src-noconflict/mode-protobuf.js index ffffa1b..8cef657 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-protobuf.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-protobuf.js @@ -173,11 +173,10 @@ var c_cppHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "singleLineComment" : [ @@ -537,12 +536,11 @@ ace.define("ace/mode/protobuf_highlight_rules",["require","exports","module","ac regex: "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }], "comment": [{ - token: "comment", // closing comment - regex: ".*?\\*\\/", - next: "start" + token : "comment", // closing comment + regex : "\\*\\/", + next : "start" }, { - token: "comment", // comment spanning whole line - regex: ".+" + defaultToken : "comment" }] }; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-python.js b/js/core/vendor/ace-builds/src-noconflict/mode-python.js index 991951b..19efccb 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-python.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-python.js @@ -195,6 +195,7 @@ var Range = require("../range").Range; var Mode = function() { this.HighlightRules = PythonHighlightRules; this.foldingRules = new PythonFoldMode("\\:"); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-r.js b/js/core/vendor/ace-builds/src-noconflict/mode-r.js index 610a4ca..297d7e0 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-r.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-r.js @@ -275,7 +275,7 @@ var MatchingBraceOutdent = function() {}; exports.MatchingBraceOutdent = MatchingBraceOutdent; }); -ace.define("ace/mode/r",["require","exports","module","ace/range","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/r_highlight_rules","ace/mode/matching_brace_outdent","ace/unicode"], function(require, exports, module) { +ace.define("ace/mode/r",["require","exports","module","ace/range","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/r_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module) { "use strict"; var Range = require("../range").Range; @@ -284,12 +284,11 @@ ace.define("ace/mode/r",["require","exports","module","ace/range","ace/lib/oop", var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var RHighlightRules = require("./r_highlight_rules").RHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; - var unicode = require("../unicode"); - var Mode = function() - { + var Mode = function(){ this.HighlightRules = RHighlightRules; this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-razor.js b/js/core/vendor/ace-builds/src-noconflict/mode-razor.js index 2c4f122..c19ec55 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-razor.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-razor.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -791,10 +797,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -810,84 +816,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" + regex: ";", + next: "start" }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -907,14 +911,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -1267,14 +1321,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -1286,9 +1336,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -1302,11 +1352,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -1344,7 +1389,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -1391,7 +1436,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1806,7 +1851,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -1819,6 +1864,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -1937,8 +1988,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -2279,7 +2332,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; @@ -2453,7 +2506,7 @@ var CSharpHighlightRules = function() { next : "comment" }, { token : "string", // character - regex : /'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))'/ + regex : /'(?:.|\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n]))?'/ }, { token : "string", start : '"', end : '"|$', next: [ {token: "constant.language.escape", regex: /\\(:?u[\da-fA-F]+|x[\da-fA-F]+|[tbrf'"n])/}, @@ -2504,11 +2557,10 @@ var CSharpHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ] }; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-rdoc.js b/js/core/vendor/ace-builds/src-noconflict/mode-rdoc.js index 6c9de47..50d6b4b 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-rdoc.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-rdoc.js @@ -86,7 +86,7 @@ var RDocHighlightRules = function() { next : "nospell" }, { token : "keyword", // command - regex : "\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])" + regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])" }, { token : "paren.keyword.operator", regex : "[[({]" @@ -111,7 +111,7 @@ var RDocHighlightRules = function() { regex : "\\\\(?:name|alias|method|S3method|S4method|item|code|preformatted|kbd|pkg|var|env|option|command|author|email|url|source|cite|acronym|href|code|preformatted|link|eqn|deqn|keyword|usage|examples|dontrun|dontshow|figure|if|ifelse|Sexpr|RdOpts|inputencoding|usepackage)\\b" }, { token : "keyword", // command - regex : "\\\\(?:[a-zA-z0-9]+|[^a-zA-z0-9])", + regex : "\\\\(?:[a-zA-Z0-9]+|[^a-zA-Z0-9])", next : "start" }, { token : "paren.keyword.operator", @@ -179,18 +179,18 @@ var MatchingBraceOutdent = function() {}; exports.MatchingBraceOutdent = MatchingBraceOutdent; }); -ace.define("ace/mode/rdoc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/rdoc_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module) { +ace.define("ace/mode/rdoc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/rdoc_highlight_rules","ace/mode/matching_brace_outdent"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; -var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var RDocHighlightRules = require("./rdoc_highlight_rules").RDocHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; var Mode = function(suppressHighlighting) { this.HighlightRules = RDocHighlightRules; this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-rhtml.js b/js/core/vendor/ace-builds/src-noconflict/mode-rhtml.js index ed8a7cd..aae0378 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-rhtml.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-rhtml.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -791,10 +797,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -810,84 +816,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" + regex: ";", + next: "start" }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -907,14 +911,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -1267,14 +1321,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -1286,9 +1336,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -1302,11 +1352,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -1344,7 +1389,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -1391,7 +1436,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1806,7 +1851,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -1819,6 +1864,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -1937,8 +1988,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -2279,7 +2332,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-rst.js b/js/core/vendor/ace-builds/src-noconflict/mode-rst.js index 0f879e4..235d31a 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-rst.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-rst.js @@ -234,14 +234,14 @@ var TextMode = require("./text").Mode; var RSTHighlightRules = require("./rst_highlight_rules").RSTHighlightRules; var Mode = function() { - this.HighlightRules = RSTHighlightRules; + this.HighlightRules = RSTHighlightRules; }; oop.inherits(Mode, TextMode); (function() { - this.type = "text"; + this.type = "text"; - this.$id = "ace/mode/rst"; + this.$id = "ace/mode/rst"; }).call(Mode.prototype); exports.Mode = Mode; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-ruby.js b/js/core/vendor/ace-builds/src-noconflict/mode-ruby.js index 60ffa81..6732c68 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-ruby.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-ruby.js @@ -33,6 +33,11 @@ var constantNumericFloat = exports.constantNumericFloat = { regex : "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?\\b" }; +var instanceVariable = exports.instanceVariable = { + token : "variable.instance", // instance variable + regex : "@{1,2}[a-zA-Z_\\d]+" +}; + var RubyHighlightRules = function() { var builtinFunctions = ( diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-rust.js b/js/core/vendor/ace-builds/src-noconflict/mode-rust.js index 6256523..0802f6b 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-rust.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-rust.js @@ -56,7 +56,7 @@ var RustHighlightRules = function() { { token: 'keyword.source.rust', regex: '\\b(?:abstract|alignof|as|box|break|continue|const|crate|do|else|enum|extern|for|final|if|impl|in|let|loop|macro|match|mod|move|mut|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\\b' }, { token: 'storage.type.source.rust', - regex: '\\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|f16|f32|f64|i8|i16|i32|i64|str|option|either|c_float|c_double|c_void|FILE|fpos_t|DIR|dirent|c_char|c_schar|c_uchar|c_short|c_ushort|c_int|c_uint|c_long|c_ulong|size_t|ptrdiff_t|clock_t|time_t|c_longlong|c_ulonglong|intptr_t|uintptr_t|off_t|dev_t|ino_t|pid_t|mode_t|ssize_t)\\b' }, + regex: '\\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|u128|f16|f32|f64|i8|i16|i32|i64|i128|str|option|either|c_float|c_double|c_void|FILE|fpos_t|DIR|dirent|c_char|c_schar|c_uchar|c_short|c_ushort|c_int|c_uint|c_long|c_ulong|size_t|ptrdiff_t|clock_t|time_t|c_longlong|c_ulonglong|intptr_t|uintptr_t|off_t|dev_t|ino_t|pid_t|mode_t|ssize_t)\\b' }, { token: 'variable.language.source.rust', regex: '\\bself\\b' }, { token: 'comment.line.doc.source.rust', @@ -87,9 +87,9 @@ var RustHighlightRules = function() { { token: 'meta.preprocessor.source.rust', regex: '\\b\\w\\(\\w\\)*!|#\\[[\\w=\\(\\)_]+\\]\\b' }, { token: 'constant.numeric.source.rust', - regex: /(?:0x[a-fA-F0-9_]+|0o[0-7_]+|0b[01_]+|[0-9][0-9_]*(?!\.))(?:[iu](?:size|8|16|32|64))?\b/ }, + regex: /\b(?:0x[a-fA-F0-9_]+|0o[0-7_]+|0b[01_]+|[0-9][0-9_]*(?!\.))(?:[iu](?:size|8|16|32|64|128))?\b/ }, { token: 'constant.numeric.source.rust', - regex: /(?:[0-9][0-9_]*)(?:\.[0-9][0-9_]*)?(?:[Ee][+-][0-9][0-9_]*)?(?:f32|f64)?\b/ } ] } + regex: /\b(?:[0-9][0-9_]*)(?:\.[0-9][0-9_]*)?(?:[Ee][+-][0-9][0-9_]*)?(?:f32|f64)?\b/ } ] } this.normalizeRules(); }; @@ -257,12 +257,14 @@ var FoldMode = require("./folding/cstyle").FoldMode; var Mode = function() { this.HighlightRules = RustHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); (function() { this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/", nestable: true}; + this.$quotes = { '"': '"' }; this.$id = "ace/mode/rust"; }).call(Mode.prototype); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-sass.js b/js/core/vendor/ace-builds/src-noconflict/mode-sass.js index ec994ce..bd18170 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-sass.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-sass.js @@ -75,7 +75,7 @@ var ScssHighlightRules = function() { "alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|" + "floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|" + "nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|" + - "scale_color|transparentize|type_of|unit|unitless|unqoute").split("|") + "scale_color|transparentize|type_of|unit|unitless|unquote").split("|") ); var constants = lang.arrayToMap( @@ -103,8 +103,30 @@ var ScssHighlightRules = function() { ); var colors = lang.arrayToMap( - ("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|" + - "purple|red|silver|teal|white|yellow").split("|") + ("aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|" + + "blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|" + + "chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|" + + "darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|" + + "darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|" + + "darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|" + + "darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|" + + "dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|" + + "ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|" + + "hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|" + + "lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|" + + "lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|" + + "lightsalmon|lightseagreen|lightskyblue|lightslategray|" + + "lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|" + + "magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|" + + "mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|" + + "mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|" + + "moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|" + + "orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|" + + "papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|" + + "red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|" + + "seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|" + + "springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|" + + "wheat|white|whitesmoke|yellow|yellowgreen").split("|") ); var keywords = lang.arrayToMap( @@ -216,11 +238,10 @@ var ScssHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "qqstring" : [ @@ -399,6 +420,7 @@ var FoldMode = require("./folding/coffee").FoldMode; var Mode = function() { this.HighlightRules = SassHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-scad.js b/js/core/vendor/ace-builds/src-noconflict/mode-scad.js index bdfa832..c9a767b 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-scad.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-scad.js @@ -120,11 +120,10 @@ var scadHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "qqstring" : [ @@ -338,14 +337,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/scad",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scad_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/scad",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scad_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var scadHighlightRules = require("./scad_highlight_rules").scadHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-scala.js b/js/core/vendor/ace-builds/src-noconflict/mode-scala.js index a742704..94c645c 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-scala.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-scala.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -900,11 +906,10 @@ var ScalaHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "string" : [ @@ -953,7 +958,6 @@ var ScalaHighlightRules = require("./scala_highlight_rules").ScalaHighlightRules var Mode = function() { JavaScriptMode.call(this); - this.HighlightRules = ScalaHighlightRules; }; oop.inherits(Mode, JavaScriptMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-scheme.js b/js/core/vendor/ace-builds/src-noconflict/mode-scheme.js index 8abce4f..2e6b7ff 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-scheme.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-scheme.js @@ -140,6 +140,7 @@ var MatchingParensOutdent = require("./matching_parens_outdent").MatchingParensO var Mode = function() { this.HighlightRules = SchemeHighlightRules; this.$outdent = new MatchingParensOutdent(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-scss.js b/js/core/vendor/ace-builds/src-noconflict/mode-scss.js index 4789c98..4785dc3 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-scss.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-scss.js @@ -75,7 +75,7 @@ var ScssHighlightRules = function() { "alpha|join|blue|ceil|change_color|comparable|complement|darken|desaturate|" + "floor|grayscale|green|hue|if|invert|join|length|lighten|lightness|mix|" + "nth|opacify|opacity|percentage|quote|red|round|saturate|saturation|" + - "scale_color|transparentize|type_of|unit|unitless|unqoute").split("|") + "scale_color|transparentize|type_of|unit|unitless|unquote").split("|") ); var constants = lang.arrayToMap( @@ -103,8 +103,30 @@ var ScssHighlightRules = function() { ); var colors = lang.arrayToMap( - ("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|" + - "purple|red|silver|teal|white|yellow").split("|") + ("aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|" + + "blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|" + + "chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|" + + "darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|" + + "darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|" + + "darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|" + + "darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|" + + "dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|" + + "ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|" + + "hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|" + + "lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|" + + "lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|" + + "lightsalmon|lightseagreen|lightskyblue|lightslategray|" + + "lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|" + + "magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|" + + "mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|" + + "mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|" + + "moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|" + + "orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|" + + "papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|" + + "red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|" + + "seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|" + + "springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|" + + "wheat|white|whitesmoke|yellow|yellowgreen").split("|") ); var keywords = lang.arrayToMap( @@ -216,11 +238,10 @@ var ScssHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "qqstring" : [ diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-sjs.js b/js/core/vendor/ace-builds/src-noconflict/mode-sjs.js index c5abe5f..6bcd0bc 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-sjs.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-sjs.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-smarty.js b/js/core/vendor/ace-builds/src-noconflict/mode-smarty.js index 6b1d814..448ced3 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-smarty.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-smarty.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -791,10 +797,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -810,84 +816,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" + regex: ";", + next: "start" }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -907,14 +911,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -1267,14 +1321,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -1286,9 +1336,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -1302,11 +1352,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -1344,7 +1389,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -1391,7 +1436,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1806,7 +1851,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -1819,6 +1864,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -1937,8 +1988,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -2279,7 +2332,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-snippets.js b/js/core/vendor/ace-builds/src-noconflict/mode-snippets.js index e60ffa7..a528501 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-snippets.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-snippets.js @@ -184,6 +184,7 @@ var FoldMode = require("./folding/coffee").FoldMode; var Mode = function() { this.HighlightRules = SnippetGroupHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-soy_template.js b/js/core/vendor/ace-builds/src-noconflict/mode-soy_template.js index 716d0bd..df831bb 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-soy_template.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-soy_template.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -791,10 +797,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -810,84 +816,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" + regex: ";", + next: "start" }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -907,14 +911,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -1267,14 +1321,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -1286,9 +1336,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -1302,11 +1352,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -1344,7 +1389,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -1391,7 +1436,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1806,7 +1851,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -1819,6 +1864,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -1937,8 +1988,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -2279,7 +2332,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-space.js b/js/core/vendor/ace-builds/src-noconflict/mode-space.js index a790b1c..5bbeb48 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-space.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-space.js @@ -149,6 +149,7 @@ var SpaceHighlightRules = require("./space_highlight_rules").SpaceHighlightRules var Mode = function() { this.HighlightRules = SpaceHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); (function() { diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-sparql.js b/js/core/vendor/ace-builds/src-noconflict/mode-sparql.js new file mode 100644 index 0000000..e5a5854 --- /dev/null +++ b/js/core/vendor/ace-builds/src-noconflict/mode-sparql.js @@ -0,0 +1,313 @@ +ace.define("ace/mode/sparql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var SPARQLHighlightRules = function() { + + this.$rules = { + start: [{ + include: "#comments" + }, { + include: "#strings" + }, { + include: "#string-language-suffixes" + }, { + include: "#string-datatype-suffixes" + }, { + include: "#logic-operators" + }, { + include: "#relative-urls" + }, { + include: "#xml-schema-types" + }, { + include: "#rdf-schema-types" + }, { + include: "#owl-types" + }, { + include: "#qnames" + }, { + include: "#keywords" + }, { + include: "#built-in-functions" + }, { + include: "#variables" + }, { + include: "#boolean-literal" + }, { + include: "#punctuation-operators" + }], + "#boolean-literal": [{ + token: "constant.language.boolean.sparql", + regex: /true|false/ + }], + "#built-in-functions": [{ + token: "support.function.sparql", + regex: /[Aa][Bb][Ss]|[Aa][Vv][Gg]|[Bb][Nn][Oo][Dd][Ee]|[Bb][Oo][Uu][Nn][Dd]|[Cc][Ee][Ii][Ll]|[Cc][Oo][Aa][Ll][Ee][Ss][Cc][Ee]|[Cc][Oo][Nn][Cc][Aa][Tt]|[Cc][Oo][Nn][Tt][Aa][Ii][Nn][Ss]|[Cc][Oo][Uu][Nn][Tt]|[Dd][Aa][Tt][Aa][Tt][Yy][Pp][Ee]|[Dd][Aa][Yy]|[Ee][Nn][Cc][Oo][Dd][Ee]_[Ff][Oo][Rr]_[Uu][Rr][Ii]|[Ee][Xx][Ii][Ss][Tt][Ss]|[Ff][Ll][Oo][Oo][Rr]|[Gg][Rr][Oo][Uu][Pp]_[Cc][Oo][Nn][Cc][Aa][Tt]|[Hh][Oo][Uu][Rr][Ss]|[Ii][Ff]|[Ii][Rr][Ii]|[Ii][Ss][Bb][Ll][Aa][Nn][Kk]|[Ii][Ss][Ii][Rr][Ii]|[Ii][Ss][Ll][Ii][Tt][Ee][Rr][Aa][Ll]|[Ii][Ss][Nn][Uu][Mm][Ee][Rr][Ii][Cc]|[Ii][Ss][Uu][Rr][Ii]|[Ll][Aa][Nn][Gg]|[Ll][Aa][Nn][Gg][Mm][Aa][Tt][Cc][Hh][Ee][Ss]|[Ll][Cc][Aa][Ss][Ee]|[Mm][Aa][Xx]|[Mm][Dd]5|[Mm][Ii][Nn]|[Mm][Ii][Nn][Uu][Tt][Ee][Ss]|[Mm][Oo][Nn][Tt][Hh]|[Nn][Oo][Ww]|[Rr][Aa][Nn][Dd]|[Rr][Ee][Gg][Ee][Xx]|[Rr][Ee][Pp][Ll][Aa][Cc][Ee]|[Rr][Oo][Uu][Nn][Dd]|[Ss][Aa][Mm][Ee][Tt][Ee][Rr][Mm]|[Ss][Aa][Mm][Pp][Ll][Ee]|[Ss][Ee][Cc][Oo][Nn][Dd][Ss]|[Ss][Ee][Pp][Aa][Rr][Aa][Tt][Oo][Rr]|[Ss][Hh][Aa](?:1|256|384|512)|[Ss][Tt][Rr]|[Ss][Tt][Rr][Aa][Ff][Tt][Ee][Rr]|[Ss][Tt][Rr][Bb][Ee][Ff][Oo][Rr][Ee]|[Ss][Tt][Rr][Dd][Tt]|[Ss][Tt][Rr][Ee][Nn][Dd][Ss]|[Ss][Tt][Rr][Ll][Aa][Nn][Gg]|[Ss][Tt][Rr][Ll][Ee][Nn]|[Ss][Tt][Rr][Ss][Tt][Aa][Rr][Tt][Ss]|[Ss][Tt][Rr][Uu][Uu][Ii][Dd]|[Ss][Uu][Bb][Ss][Tt][Rr]|[Ss][Uu][Mm]|[Tt][Ii][Mm][Ee][Zz][Oo][Nn][Ee]|[Tt][Zz]|[Uu][Cc][Aa][Ss][Ee]|[Uu][Rr][Ii]|[Uu][Uu][Ii][Dd]|[Yy][Ee][Aa][Rr]/ + }], + "#comments": [{ + token: [ + "punctuation.definition.comment.sparql", + "comment.line.hash.sparql" + ], + regex: /(#)(.*$)/ + }], + "#keywords": [{ + token: "keyword.other.sparql", + regex: /[Aa][Dd][Dd]|[Aa][Ll][Ll]|[Aa][Ss]|[As][Ss][Cc]|[Aa][Ss][Kk]|[Bb][Aa][Ss][Ee]|[Bb][Ii][Nn][Dd]|[Bb][Yy]|[Cc][Ll][Ee][Aa][Rr]|[Cc][Oo][Nn][Ss][Tt][Rr][Uu][Cc][Tt]|[Cc][Oo][Pp][Yy]|[Cc][Rr][Ee][Aa][Tt][Ee]|[Dd][Aa][Tt][Aa]|[Dd][Ee][Ff][Aa][Uu][Ll][Tt]|[Dd][Ee][Ll][Ee][Tt][Ee]|[Dd][Ee][Sc][Cc]|[Dd][Ee][Ss][Cc][Rr][Ii][Bb][Ee]|[Dd][Ii][Ss][Tt][Ii][Nn][Cc][Tt]|[Dd][Rr][Oo][Pp]|[Ff][Ii][Ll][Tt][Ee][Rr]|[Ff][Rr][Oo][Mm]|[Gg][Rr][Aa][Pp][Hh]|[Gg][Rr][Oo][Uu][Pp]|[Hh][Aa][Vv][Ii][Nn][Gg]|[Ii][Nn][Ss][Ee][Rr][Tt]|[Ll][Ii][Mm][Ii][Tt]|[Ll][Oo][Aa][Dd]|[Mm][Ii][Nn][Uu][Ss]|[Mm][Oo][Vv][Ee]|[Nn][Aa][Mm][Ee][Dd]|[Oo][Ff][Ff][Ss][Ee][Tt]|[Oo][Pp][Tt][Ii][Oo][Nn][Aa][Ll]|[Oo][Rr][Dd][Ee][Rr]|[Pp][Rr][Ee][Ff][Ii][Xx]|[Rr][Ee][Dd][Uu][Cc][Ee][Dd]|[Ss][Ee][Ll][Ee][Cc][Tt]|[Ss][Ee][Pp][Aa][Rr][Aa][Tt][Oo][Rr]|[Ss][Ee][Rr][Vv][Ii][Cc][Ee]|[Ss][Ii][Ll][Ee][Nn][Tt]|[Tt][Oo]|[Uu][Nn][Dd][Ee][Ff]|[Uu][Nn][Ii][Oo][Nn]|[Uu][Ss][Ii][Nn][Gg]|[Vv][Aa][Ll][Uu][Ee][Ss]|[Ww][He][Ee][Rr][Ee]|[Ww][Ii][Tt][Hh]/ + }], + "#logic-operators": [{ + token: "keyword.operator.logical.sparql", + regex: /\|\||&&|=|!=|<|>|<=|>=|(?:^|!?\s)IN(?:!?\s|$)|(?:^|!?\s)NOT(?:!?\s|$)|-|\+|\*|\/|\!/ + }], + "#owl-types": [{ + token: "support.type.datatype.owl.sparql", + regex: /owl:[a-zA-Z]+/ + }], + "#punctuation-operators": [{ + token: "keyword.operator.punctuation.sparql", + regex: /;|,|\.|\(|\)|\{|\}|\|/ + }], + "#qnames": [{ + token: "entity.name.other.qname.sparql", + regex: /(?:[a-zA-Z][-_a-zA-Z0-9]*)?:(?:[_a-zA-Z][-_a-zA-Z0-9]*)?/ + }], + "#rdf-schema-types": [{ + token: "support.type.datatype.rdf.schema.sparql", + regex: /rdfs?:[a-zA-Z]+|(?:^|\s)a(?:\s|$)/ + }], + "#relative-urls": [{ + token: "string.quoted.other.relative.url.sparql", + regex: /</, + push: [{ + token: "string.quoted.other.relative.url.sparql", + regex: />/, + next: "pop" + }, { + defaultToken: "string.quoted.other.relative.url.sparql" + }] + }], + "#string-datatype-suffixes": [{ + token: "keyword.operator.datatype.suffix.sparql", + regex: /\^\^/ + }], + "#string-language-suffixes": [{ + token: [ + "keyword.operator.language.suffix.sparql", + "constant.language.suffix.sparql" + ], + regex: /(?!")(@)([a-z]+(?:\-[a-z0-9]+)*)/ + }], + "#strings": [{ + token: "string.quoted.triple.sparql", + regex: /"""/, + push: [{ + token: "string.quoted.triple.sparql", + regex: /"""/, + next: "pop" + }, { + defaultToken: "string.quoted.triple.sparql" + }] + }, { + token: "string.quoted.double.sparql", + regex: /"/, + push: [{ + token: "string.quoted.double.sparql", + regex: /"/, + next: "pop" + }, { + token: "invalid.string.newline", + regex: /$/ + }, { + token: "constant.character.escape.sparql", + regex: /\\./ + }, { + defaultToken: "string.quoted.double.sparql" + }] + }], + "#variables": [{ + token: "variable.other.sparql", + regex: /(?:\?|\$)[-_a-zA-Z0-9]+/ + }], + "#xml-schema-types": [{ + token: "support.type.datatype.schema.sparql", + regex: /xsd?:[a-z][a-zA-Z]+/ + }] + } + + this.normalizeRules(); +}; + +SPARQLHighlightRules.metaData = { + fileTypes: ["rq", "sparql"], + name: "SPARQL", + scopeName: "source.sparql" +} + + +oop.inherits(SPARQLHighlightRules, TextHighlightRules); + +exports.SPARQLHighlightRules = SPARQLHighlightRules; +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; + +var FoldMode = exports.FoldMode = function(commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp( + this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) + ); + this.foldingStopMarker = new RegExp( + this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) + ); + } +}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function(session, foldStyle, row) { + var line = session.getLine(row); + + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + + var fw = this._getFoldWidgetBase(session, foldStyle, row); + + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + + return fw; + }; + + this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } else if (foldStyle != "all") + range = null; + } + + return range; + } + + if (foldStyle === "markbegin") + return; + + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + + return session.getCommentFoldRange(row, i, -1); + } + }; + + this.getSectionRange = function(session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } else if (subRange.isMultiLine()) { + row = subRange.end.row; + } else if (startIndent == indent) { + break; + } + } + endRow = row; + } + + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function(session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) continue; + if (m[1]) depth--; + else depth++; + + if (!depth) break; + } + + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; + +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/sparql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sparql_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var SPARQLHighlightRules = require("./sparql_highlight_rules").SPARQLHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = SPARQLHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + this.$id = "ace/mode/sparql" +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-sql.js b/js/core/vendor/ace-builds/src-noconflict/mode-sql.js index ff0696e..9678787 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-sql.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-sql.js @@ -48,6 +48,9 @@ var SqlHighlightRules = function() { token : "string", // ' string regex : "'.*?'" }, { + token : "string", // ` string (apache drill) + regex : "`.*?`" + }, { token : "constant.numeric", // float regex : "[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b" }, { @@ -75,16 +78,16 @@ oop.inherits(SqlHighlightRules, TextHighlightRules); exports.SqlHighlightRules = SqlHighlightRules; }); -ace.define("ace/mode/sql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sql_highlight_rules","ace/range"], function(require, exports, module) { +ace.define("ace/mode/sql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sql_highlight_rules"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var SqlHighlightRules = require("./sql_highlight_rules").SqlHighlightRules; -var Range = require("../range").Range; var Mode = function() { this.HighlightRules = SqlHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-sqlserver.js b/js/core/vendor/ace-builds/src-noconflict/mode-sqlserver.js index a73319c..59e9b90 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-sqlserver.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-sqlserver.js @@ -407,18 +407,18 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/sqlserver",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sqlserver_highlight_rules","ace/range","ace/mode/folding/sqlserver"], function(require, exports, module) { +ace.define("ace/mode/sqlserver",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sqlserver_highlight_rules","ace/mode/folding/sqlserver"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var SqlServerHighlightRules = require("./sqlserver_highlight_rules").SqlHighlightRules; -var Range = require("../range").Range; var SqlServerFoldMode = require("./folding/sqlserver").FoldMode; var Mode = function() { this.HighlightRules = SqlServerHighlightRules; this.foldingRules = new SqlServerFoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-stylus.js b/js/core/vendor/ace-builds/src-noconflict/mode-stylus.js index 1f54cc5..fed3f82 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-stylus.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-stylus.js @@ -7,10 +7,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -26,84 +26,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" + regex: ";", + next: "start" }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -123,14 +121,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -254,11 +302,10 @@ var StylusHighlightRules = function() { "comment" : [ { token : "comment", // closing comment - regex : ".*?\\*\\/", + regex : "\\*\\/", next : "start" }, { - token : "comment", // comment spanning whole line - regex : ".+" + defaultToken : "comment" } ], "qqstring" : [ @@ -400,6 +447,7 @@ var FoldMode = require("./folding/coffee").FoldMode; var Mode = function() { this.HighlightRules = StylusHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-svg.js b/js/core/vendor/ace-builds/src-noconflict/mode-svg.js index 8f42ff8..25d879b 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-svg.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-svg.js @@ -11,14 +11,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -30,9 +26,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -46,11 +42,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -88,7 +79,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -135,7 +126,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -414,7 +405,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -427,6 +418,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -545,8 +542,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -738,7 +737,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -772,11 +771,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -827,6 +826,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -843,6 +845,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -982,7 +987,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -998,7 +1003,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -1008,8 +1013,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -1044,14 +1049,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -1102,8 +1107,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -1118,7 +1123,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -1361,14 +1366,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -1386,6 +1390,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-swift.js b/js/core/vendor/ace-builds/src-noconflict/mode-swift.js index 1fc2d6e..dc5a430 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-swift.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-swift.js @@ -367,6 +367,7 @@ var Mode = function() { this.HighlightRules = HighlightRules; this.foldingRules = new FoldMode(); this.$behaviour = new CstyleBehaviour(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-tcl.js b/js/core/vendor/ace-builds/src-noconflict/mode-tcl.js index 4c1743d..1f878c3 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-tcl.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-tcl.js @@ -333,6 +333,7 @@ var Mode = function() { this.HighlightRules = TclHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.foldingRules = new CStyleFoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-tex.js b/js/core/vendor/ace-builds/src-noconflict/mode-tex.js index 5bed175..f4f13ba 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-tex.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-tex.js @@ -132,6 +132,7 @@ var Mode = function(suppressHighlighting) { else this.HighlightRules = TexHighlightRules; this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-textile.js b/js/core/vendor/ace-builds/src-noconflict/mode-textile.js index 4b528e7..94ed5c7 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-textile.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-textile.js @@ -113,6 +113,7 @@ var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutd var Mode = function() { this.HighlightRules = TextileHighlightRules; this.$outdent = new MatchingBraceOutdent(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-toml.js b/js/core/vendor/ace-builds/src-noconflict/mode-toml.js index 0ba0f17..2f34893 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-toml.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-toml.js @@ -133,6 +133,7 @@ var FoldMode = require("./folding/ini").FoldMode; var Mode = function() { this.HighlightRules = TomlHighlightRules; this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-tsx.js b/js/core/vendor/ace-builds/src-noconflict/mode-tsx.js index f21688e..9db47ac 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-tsx.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-tsx.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -871,7 +877,7 @@ ace.define("ace/mode/tsx",["require","exports","module","ace/lib/oop","ace/mode/ var oop = require("../lib/oop"); var tsMode = require("./typescript").Mode; -var Mode = function() { +var Mode = function() { tsMode.call(this); this.$highlightRuleConfig = {jsx: true}; }; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-turtle.js b/js/core/vendor/ace-builds/src-noconflict/mode-turtle.js new file mode 100644 index 0000000..4eef543 --- /dev/null +++ b/js/core/vendor/ace-builds/src-noconflict/mode-turtle.js @@ -0,0 +1,289 @@ +ace.define("ace/mode/turtle_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; + +var TurtleHighlightRules = function() { + + this.$rules = { + start: [{ + include: "#comments" + }, { + include: "#strings" + }, { + include: "#base-prefix-declarations" + }, { + include: "#string-language-suffixes" + }, { + include: "#string-datatype-suffixes" + }, { + include: "#relative-urls" + }, { + include: "#xml-schema-types" + }, { + include: "#rdf-schema-types" + }, { + include: "#owl-types" + }, { + include: "#qnames" + }, { + include: "#punctuation-operators" + }], + "#base-prefix-declarations": [{ + token: "keyword.other.prefix.turtle", + regex: /@(?:base|prefix)/ + }], + "#comments": [{ + token: [ + "punctuation.definition.comment.turtle", + "comment.line.hash.turtle" + ], + regex: /(#)(.*$)/ + }], + "#owl-types": [{ + token: "support.type.datatype.owl.turtle", + regex: /owl:[a-zA-Z]+/ + }], + "#punctuation-operators": [{ + token: "keyword.operator.punctuation.turtle", + regex: /;|,|\.|\(|\)|\[|\]/ + }], + "#qnames": [{ + token: "entity.name.other.qname.turtle", + regex: /(?:[a-zA-Z][-_a-zA-Z0-9]*)?:(?:[_a-zA-Z][-_a-zA-Z0-9]*)?/ + }], + "#rdf-schema-types": [{ + token: "support.type.datatype.rdf.schema.turtle", + regex: /rdfs?:[a-zA-Z]+|(?:^|\s)a(?:\s|$)/ + }], + "#relative-urls": [{ + token: "string.quoted.other.relative.url.turtle", + regex: /</, + push: [{ + token: "string.quoted.other.relative.url.turtle", + regex: />/, + next: "pop" + }, { + defaultToken: "string.quoted.other.relative.url.turtle" + }] + }], + "#string-datatype-suffixes": [{ + token: "keyword.operator.datatype.suffix.turtle", + regex: /\^\^/ + }], + "#string-language-suffixes": [{ + token: [ + "keyword.operator.language.suffix.turtle", + "constant.language.suffix.turtle" + ], + regex: /(?!")(@)([a-z]+(?:\-[a-z0-9]+)*)/ + }], + "#strings": [{ + token: "string.quoted.triple.turtle", + regex: /"""/, + push: [{ + token: "string.quoted.triple.turtle", + regex: /"""/, + next: "pop" + }, { + defaultToken: "string.quoted.triple.turtle" + }] + }, { + token: "string.quoted.double.turtle", + regex: /"/, + push: [{ + token: "string.quoted.double.turtle", + regex: /"/, + next: "pop" + }, { + token: "invalid.string.newline", + regex: /$/ + }, { + token: "constant.character.escape.turtle", + regex: /\\./ + }, { + defaultToken: "string.quoted.double.turtle" + }] + }], + "#xml-schema-types": [{ + token: "support.type.datatype.xml.schema.turtle", + regex: /xsd?:[a-z][a-zA-Z]+/ + }] + } + + this.normalizeRules(); +}; + +TurtleHighlightRules.metaData = { + fileTypes: ["ttl", "nt"], + name: "Turtle", + scopeName: "source.turtle" +} + + +oop.inherits(TurtleHighlightRules, TextHighlightRules); + +exports.TurtleHighlightRules = TurtleHighlightRules; +}); + +ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"], function(require, exports, module) { +"use strict"; + +var oop = require("../../lib/oop"); +var Range = require("../../range").Range; +var BaseFoldMode = require("./fold_mode").FoldMode; + +var FoldMode = exports.FoldMode = function(commentRegex) { + if (commentRegex) { + this.foldingStartMarker = new RegExp( + this.foldingStartMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.start) + ); + this.foldingStopMarker = new RegExp( + this.foldingStopMarker.source.replace(/\|[^|]*?$/, "|" + commentRegex.end) + ); + } +}; +oop.inherits(FoldMode, BaseFoldMode); + +(function() { + + this.foldingStartMarker = /(\{|\[)[^\}\]]*$|^\s*(\/\*)/; + this.foldingStopMarker = /^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/; + this.singleLineBlockCommentRe= /^\s*(\/\*).*\*\/\s*$/; + this.tripleStarBlockCommentRe = /^\s*(\/\*\*\*).*\*\/\s*$/; + this.startRegionRe = /^\s*(\/\*|\/\/)#?region\b/; + this._getFoldWidgetBase = this.getFoldWidget; + this.getFoldWidget = function(session, foldStyle, row) { + var line = session.getLine(row); + + if (this.singleLineBlockCommentRe.test(line)) { + if (!this.startRegionRe.test(line) && !this.tripleStarBlockCommentRe.test(line)) + return ""; + } + + var fw = this._getFoldWidgetBase(session, foldStyle, row); + + if (!fw && this.startRegionRe.test(line)) + return "start"; // lineCommentRegionStart + + return fw; + }; + + this.getFoldWidgetRange = function(session, foldStyle, row, forceMultiline) { + var line = session.getLine(row); + + if (this.startRegionRe.test(line)) + return this.getCommentRegionBlock(session, line, row); + + var match = line.match(this.foldingStartMarker); + if (match) { + var i = match.index; + + if (match[1]) + return this.openingBracketBlock(session, match[1], row, i); + + var range = session.getCommentFoldRange(row, i + match[0].length, 1); + + if (range && !range.isMultiLine()) { + if (forceMultiline) { + range = this.getSectionRange(session, row); + } else if (foldStyle != "all") + range = null; + } + + return range; + } + + if (foldStyle === "markbegin") + return; + + var match = line.match(this.foldingStopMarker); + if (match) { + var i = match.index + match[0].length; + + if (match[1]) + return this.closingBracketBlock(session, match[1], row, i); + + return session.getCommentFoldRange(row, i, -1); + } + }; + + this.getSectionRange = function(session, row) { + var line = session.getLine(row); + var startIndent = line.search(/\S/); + var startRow = row; + var startColumn = line.length; + row = row + 1; + var endRow = row; + var maxRow = session.getLength(); + while (++row < maxRow) { + line = session.getLine(row); + var indent = line.search(/\S/); + if (indent === -1) + continue; + if (startIndent > indent) + break; + var subRange = this.getFoldWidgetRange(session, "all", row); + + if (subRange) { + if (subRange.start.row <= startRow) { + break; + } else if (subRange.isMultiLine()) { + row = subRange.end.row; + } else if (startIndent == indent) { + break; + } + } + endRow = row; + } + + return new Range(startRow, startColumn, endRow, session.getLine(endRow).length); + }; + this.getCommentRegionBlock = function(session, line, row) { + var startColumn = line.search(/\s*$/); + var maxRow = session.getLength(); + var startRow = row; + + var re = /^\s*(?:\/\*|\/\/|--)#?(end)?region\b/; + var depth = 1; + while (++row < maxRow) { + line = session.getLine(row); + var m = re.exec(line); + if (!m) continue; + if (m[1]) depth--; + else depth++; + + if (!depth) break; + } + + var endRow = row; + if (endRow > startRow) { + return new Range(startRow, startColumn, endRow, line.length); + } + }; + +}).call(FoldMode.prototype); + +}); + +ace.define("ace/mode/turtle",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/turtle_highlight_rules","ace/mode/folding/cstyle"], function(require, exports, module) { +"use strict"; + +var oop = require("../lib/oop"); +var TextMode = require("./text").Mode; +var TurtleHighlightRules = require("./turtle_highlight_rules").TurtleHighlightRules; +var FoldMode = require("./folding/cstyle").FoldMode; + +var Mode = function() { + this.HighlightRules = TurtleHighlightRules; + this.foldingRules = new FoldMode(); +}; +oop.inherits(Mode, TextMode); + +(function() { + this.$id = "ace/mode/turtle" +}).call(Mode.prototype); + +exports.Mode = Mode; +}); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-twig.js b/js/core/vendor/ace-builds/src-noconflict/mode-twig.js index 956889b..557c124 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-twig.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-twig.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -791,10 +797,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -810,84 +816,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" + regex: ";", + next: "start" }, { - token: "constant", - regex: "[a-z0-9-_]+" - }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -907,14 +911,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -1267,14 +1321,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -1286,9 +1336,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -1302,11 +1352,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -1344,7 +1389,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -1391,7 +1436,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1806,7 +1851,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -1819,6 +1864,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -1937,8 +1988,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -2279,7 +2332,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-typescript.js b/js/core/vendor/ace-builds/src-noconflict/mode-typescript.js index ed96185..1c1b697 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-typescript.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-typescript.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-vbscript.js b/js/core/vendor/ace-builds/src-noconflict/mode-vbscript.js index 6161e74..010be5b 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-vbscript.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-vbscript.js @@ -184,6 +184,7 @@ var VBScriptHighlightRules = require("./vbscript_highlight_rules").VBScriptHighl var Mode = function() { this.HighlightRules = VBScriptHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-velocity.js b/js/core/vendor/ace-builds/src-noconflict/mode-velocity.js index 6dc9f9b..2a420b6 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-velocity.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-velocity.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); @@ -791,10 +797,10 @@ var TextHighlightRules = require("./text_highlight_rules").TextHighlightRules; var supportType = exports.supportType = "align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index"; var supportFunction = exports.supportFunction = "rgb|rgba|url|attr|counter|counters"; var supportConstant = exports.supportConstant = "absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero"; -var supportConstantColor = exports.supportConstantColor = "aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow"; +var supportConstantColor = exports.supportConstantColor = "aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen"; var supportConstantFonts = exports.supportConstantFonts = "arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace"; -var numRe = exports.numRe = "\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"; +var numRe = exports.numRe = "\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))"; var pseudoElements = exports.pseudoElements = "(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b"; var pseudoClasses = exports.pseudoClasses = "(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b"; @@ -810,84 +816,82 @@ var CssHighlightRules = function() { this.$rules = { "start" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "ruleset" + }, { + token: "paren.rparen", + regex: "\\}" }, { token: "string", - regex: "@.*?{", - push: "media" + regex: "@", + next: "media" }, { token: "keyword", regex: "#[a-z0-9-_]+" }, { + token: "keyword", + regex: "%" + }, { token: "variable", regex: "\\.[a-z0-9-_]+" }, { token: "string", regex: ":[a-z0-9-_]+" }, { + token : "constant.numeric", + regex : numRe + }, { token: "constant", regex: "[a-z0-9-_]+" }, { caseInsensitive: true }], - - "media" : [{ - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" + + "media": [{ + include : ["strings", "url", "comments"] }, { token: "paren.lparen", regex: "\\{", - push: "ruleset" + next: "start" }, { - token: "string", + token: "paren.rparen", regex: "\\}", - next: "pop" - }, { - token: "keyword", - regex: "#[a-z0-9-_]+" - }, { - token: "variable", - regex: "\\.[a-z0-9-_]+" + next: "start" }, { token: "string", - regex: ":[a-z0-9-_]+" - }, { - token: "constant", - regex: "[a-z0-9-_]+" + regex: ";", + next: "start" }, { - caseInsensitive: true + token: "keyword", + regex: "(?:media|supports|document|charset|import|namespace|media|supports|document" + + "|page|font|keyframes|viewport|counter-style|font-feature-values" + + "|swash|ornaments|annotation|stylistic|styleset|character-variant)" }], - "comment" : [{ - token : "comment", - regex : "\\*\\/", - next : "pop" - }, { - defaultToken : "comment" + "comments" : [{ + token: "comment", // multi line comment + regex: "\\/\\*", + push: [{ + token : "comment", + regex : "\\*\\/", + next : "pop" + }, { + defaultToken : "comment" + }] }], - "ruleset" : [ - { + "ruleset" : [{ + regex : "-(webkit|ms|moz|o)-", + token : "text" + }, { token : "paren.rparen", regex : "\\}", - next: "pop" - }, { - token : "comment", // multi line comment - regex : "\\/\\*", - push : "comment" - }, { - token : "string", // single line - regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' + next : "start" }, { - token : "string", // single line - regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" + include : ["strings", "url", "comments"] }, { token : ["constant.numeric", "keyword"], regex : "(" + numRe + ")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)" @@ -907,14 +911,64 @@ var CssHighlightRules = function() { token : ["punctuation", "entity.other.attribute-name.pseudo-class.css"], regex : pseudoClasses }, { - token : ["support.function", "string", "support.function"], - regex : "(url\\()(.*)(\\))" + include: "url" }, { token : keywordMapper, regex : "\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*" }, { caseInsensitive: true + }], + + url: [{ + token : "support.function", + regex : "(?:url(:?-prefix)?|domain|regexp)\\(", + push: [{ + token : "support.function", + regex : "\\)", + next : "pop" + }, { + defaultToken: "string" + }] + }], + + strings: [{ + token : "string.start", + regex : "'", + push : [{ + token : "string.end", + regex : "'|$", + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }, { + token : "string.start", + regex : '"', + push : [{ + token : "string.end", + regex : '"|$', + next: "pop" + }, { + include : "escapes" + }, { + token : "constant.language.escape", + regex : /\\$/, + consumeLineEnd: true + }, { + defaultToken: "string" + }] + }], + escapes: [{ + token : "constant.language.escape", + regex : /\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/ }] + }; this.normalizeRules(); @@ -1267,14 +1321,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -1286,9 +1336,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -1302,11 +1352,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -1344,7 +1389,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -1391,7 +1436,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -1806,7 +1851,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -1819,6 +1864,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -1937,8 +1988,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; @@ -2279,7 +2332,7 @@ var HtmlCompletions = function() { if (is(token, "attribute-value")) return this.getAttributeValueCompletions(state, session, pos, prefix); var line = session.getLine(pos.row).substr(0, pos.column); - if (/&[A-z]*$/i.test(line)) + if (/&[a-z]*$/i.test(line)) return this.getHTMLEntityCompletions(state, session, pos, prefix); return []; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-verilog.js b/js/core/vendor/ace-builds/src-noconflict/mode-verilog.js index 86cd3d6..7def13b 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-verilog.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-verilog.js @@ -87,6 +87,7 @@ var Range = require("../range").Range; var Mode = function() { this.HighlightRules = VerilogHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-vhdl.js b/js/core/vendor/ace-builds/src-noconflict/mode-vhdl.js index c9c9c96..41dab57 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-vhdl.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-vhdl.js @@ -85,16 +85,16 @@ oop.inherits(VHDLHighlightRules, TextHighlightRules); exports.VHDLHighlightRules = VHDLHighlightRules; }); -ace.define("ace/mode/vhdl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vhdl_highlight_rules","ace/range"], function(require, exports, module) { +ace.define("ace/mode/vhdl",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/vhdl_highlight_rules"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var VHDLHighlightRules = require("./vhdl_highlight_rules").VHDLHighlightRules; -var Range = require("../range").Range; var Mode = function() { this.HighlightRules = VHDLHighlightRules; + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-wollok.js b/js/core/vendor/ace-builds/src-noconflict/mode-wollok.js index 80aba6a..22c64ac 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-wollok.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-wollok.js @@ -72,7 +72,7 @@ var JavaScriptHighlightRules = function(options) { "keyword": "const|yield|import|get|set|async|await|" + "break|case|catch|continue|default|delete|do|else|finally|for|function|" + - "if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + + "if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|" + "__parent__|__count__|escape|unescape|with|__proto__|" + "class|enum|extends|super|export|implements|private|public|interface|package|protected|static", "storage.type": @@ -106,11 +106,11 @@ var JavaScriptHighlightRules = function(options) { regex : '"(?=.)', next : "qqstring" }, { - token : "constant.numeric", // hex - regex : /0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/ + token : "constant.numeric", // hexadecimal, octal and binary + regex : /0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/ }, { - token : "constant.numeric", // float - regex : /[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/ + token : "constant.numeric", // decimal integers and floats + regex : /(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/ }, { token : [ "storage.type", "punctuation.operator", "support.function", @@ -161,6 +161,9 @@ var JavaScriptHighlightRules = function(options) { next: "function_arguments" }, { token : "keyword", + regex : "from(?=\\s*('|\"))" + }, { + token : "keyword", regex : "(?:" + kwBeforeRe + ")\\b", next : "start" }, { @@ -177,6 +180,9 @@ var JavaScriptHighlightRules = function(options) { regex : /[.](?![.])/, next : "property" }, { + token : "storage.type", + regex : /=>/ + }, { token : "keyword.operator", regex : /--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/, next : "start" @@ -316,7 +322,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qqstring" + consumeLineEnd : true }, { token : "string", regex : '"|$', @@ -332,7 +338,7 @@ var JavaScriptHighlightRules = function(options) { }, { token : "string", regex : "\\\\$", - next : "qstring" + consumeLineEnd : true }, { token : "string", regex : "'|$", @@ -342,8 +348,8 @@ var JavaScriptHighlightRules = function(options) { } ] }; - - + + if (!options || !options.noES6) { this.$rules.no_regex.unshift({ regex: "[{}]", onMatch: function(val, state, stack) { @@ -378,14 +384,14 @@ var JavaScriptHighlightRules = function(options) { defaultToken: "string.quasi" }] }); - + if (!options || options.jsx != false) JSX.call(this); } - + this.embedRules(DocCommentHighlightRules, "doc-", [ DocCommentHighlightRules.getEndRule("no_regex") ]); - + this.normalizeRules(); }; @@ -436,8 +442,8 @@ function JSX() { {defaultToken: "string"} ]; this.$rules.jsxAttributes = [{ - token : "meta.tag.punctuation.tag-close.xml", - regex : "/?>", + token : "meta.tag.punctuation.tag-close.xml", + regex : "/?>", onMatch : function(value, currentState, stack) { if (currentState == stack[0]) stack.shift(); @@ -452,7 +458,7 @@ function JSX() { return [{type: this.token, value: value}]; }, nextState: "jsx" - }, + }, jsxJsRule, comments("jsxAttributes"), { @@ -695,14 +701,13 @@ oop.inherits(FoldMode, BaseFoldMode); }); -ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { +ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var JavaScriptHighlightRules = require("./javascript_highlight_rules").JavaScriptHighlightRules; var MatchingBraceOutdent = require("./matching_brace_outdent").MatchingBraceOutdent; -var Range = require("../range").Range; var WorkerClient = require("../worker/worker_client").WorkerClient; var CstyleBehaviour = require("./behaviour/cstyle").CstyleBehaviour; var CStyleFoldMode = require("./folding/cstyle").FoldMode; @@ -720,6 +725,7 @@ oop.inherits(Mode, TextMode); this.lineCommentStart = "//"; this.blockComment = {start: "/*", end: "*/"}; + this.$quotes = {'"': '"', "'": "'", "`": "`"}; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line); diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-xml.js b/js/core/vendor/ace-builds/src-noconflict/mode-xml.js index cecaffc..f5f840a 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-xml.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-xml.js @@ -11,14 +11,10 @@ var XmlHighlightRules = function(normalize) { start : [ {token : "string.cdata.xml", regex : "<\\!\\[CDATA\\[", next : "cdata"}, { - token : ["punctuation.xml-decl.xml", "keyword.xml-decl.xml"], - regex : "(<\\?)(xml)(?=[\\s])", next : "xml_decl", caseInsensitive: true - }, - { token : ["punctuation.instruction.xml", "keyword.instruction.xml"], regex : "(<\\?)(" + tagRegex + ")", next : "processing_instruction" }, - {token : "comment.xml", regex : "<\\!--", next : "comment"}, + {token : "comment.start.xml", regex : "<\\!--", next : "comment"}, { token : ["xml-pe.doctype.xml", "xml-pe.doctype.xml"], regex : "(<\\!)(DOCTYPE)(?=[\\s])", next : "doctype", caseInsensitive: true @@ -30,9 +26,9 @@ var XmlHighlightRules = function(normalize) { {defaultToken : "text.xml"} ], - xml_decl : [{ + processing_instruction : [{ token : "entity.other.attribute-name.decl-attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.decl-attribute-equals.xml", regex : "=" @@ -46,11 +42,6 @@ var XmlHighlightRules = function(normalize) { next : "start" }], - processing_instruction : [ - {token : "punctuation.instruction.xml", regex : "\\?>", next : "start"}, - {defaultToken : "instruction.xml"} - ], - doctype : [ {include : "whitespace"}, {include : "string"}, @@ -88,7 +79,7 @@ var XmlHighlightRules = function(normalize) { ], comment : [ - {token : "comment.xml", regex : "-->", next : "start"}, + {token : "comment.end.xml", regex : "-->", next : "start"}, {defaultToken : "comment.xml"} ], @@ -135,7 +126,7 @@ var XmlHighlightRules = function(normalize) { attributes: [{ token : "entity.other.attribute-name.xml", - regex : "(?:" + tagRegex + ":)?" + tagRegex + "" + regex : tagRegex }, { token : "keyword.operator.attribute-equals.xml", regex : "=" @@ -414,7 +405,7 @@ function is(token, type) { var tag = this._getFirstTagInLine(session, row); if (!tag) - return ""; + return this.getCommentFoldWidget(session, row); if (tag.closing || (!tag.tagName && tag.selfClosing)) return foldStyle == "markbeginend" ? "end" : ""; @@ -427,6 +418,12 @@ function is(token, type) { return "start"; }; + + this.getCommentFoldWidget = function(session, row) { + if (/comment/.test(session.getState(row)) && /<!-/.test(session.getLine(row))) + return "start"; + return ""; + } this._getFirstTagInLine = function(session, row) { var tokens = session.getTokens(row); var tag = new Tag(); @@ -545,8 +542,10 @@ function is(token, type) { this.getFoldWidgetRange = function(session, foldStyle, row) { var firstTag = this._getFirstTagInLine(session, row); - if (!firstTag) - return null; + if (!firstTag) { + return this.getCommentFoldWidget(session, row) + && session.getCommentFoldRange(row, session.getLine(row).length); + } var isBackward = firstTag.closing || firstTag.selfClosing; var stack = []; diff --git a/js/core/vendor/ace-builds/src-noconflict/mode-yaml.js b/js/core/vendor/ace-builds/src-noconflict/mode-yaml.js index 7b6ce82..8fbc403 100644 --- a/js/core/vendor/ace-builds/src-noconflict/mode-yaml.js +++ b/js/core/vendor/ace-builds/src-noconflict/mode-yaml.js @@ -12,10 +12,10 @@ var YamlHighlightRules = function() { regex : "#.*$" }, { token : "list.markup", - regex : /^(?:-{3}|\.{3})\s*(?=#|$)/ + regex : /^(?:-{3}|\.{3})\s*(?=#|$)/ }, { token : "list.markup", - regex : /^\s*[\-?](?:$|\s)/ + regex : /^\s*[\-?](?:$|\s)/ }, { token: "constant", regex: "!![\\w//]+" @@ -39,8 +39,24 @@ var YamlHighlightRules = function() { regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }, { token : "string", // multi line string start - regex : '[|>][-+\\d\\s]*$', - next : "qqstring" + regex : /[|>][-+\d\s]*$/, + onMatch: function(val, state, stack, line) { + var indent = /^\s*/.exec(line)[0]; + if (stack.length < 1) { + stack.push(this.next); + } else { + stack[0] = "mlString"; + } + + if (stack.length < 2) { + stack.push(indent.length); + } + else { + stack[1] = indent.length; + } + return this.token; + }, + next : "mlString" }, { token : "string", // single quoted string regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" @@ -61,16 +77,32 @@ var YamlHighlightRules = function() { regex : "[\\])}]" } ], - "qqstring" : [ + "mlString" : [ { - token : "string", - regex : '(?=(?:(?:\\\\.)|(?:[^:]))*?:)', - next : "start" + token : "indent", + regex : /^\s*$/ + }, { + token : "indent", + regex : /^\s*/, + onMatch: function(val, state, stack) { + var curIndent = stack[1]; + + if (curIndent >= val.length) { + this.next = "start"; + stack.splice(0); + } + else { + this.next = "mlString"; + } + return this.token; + }, + next : "mlString" }, { token : "string", regex : '.+' } ]}; + this.normalizeRules(); }; @@ -219,6 +251,7 @@ var Mode = function() { this.HighlightRules = YamlHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.foldingRules = new FoldMode(); + this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode); diff --git a/js/core/vendor/ace-builds/src-noconflict/snippets/bro.js b/js/core/vendor/ace-builds/src-noconflict/snippets/bro.js new file mode 100644 index 0000000..2f2e2e1 --- /dev/null +++ b/js/core/vendor/ace-builds/src-noconflict/snippets/bro.js @@ -0,0 +1,7 @@ +ace.define("ace/snippets/bro",["require","exports","module"], function(require, exports, module) { +"use strict"; + +exports.snippetText =undefined; +exports.scope = ""; + +}); diff --git a/js/core/vendor/ace-builds/src-noconflict/snippets/graphqlschema.js b/js/core/vendor/ace-builds/src-noconflict/snippets/graphqlschema.js new file mode 100644 index 0000000..6b1e49f --- /dev/null +++ b/js/core/vendor/ace-builds/src-noconflict/snippets/graphqlschema.js @@ -0,0 +1,39 @@ +ace.define("ace/snippets/graphqlschema",["require","exports","module"], function(require, exports, module) { +"use strict"; + +exports.snippetText = "# Type Snippet\n\ +trigger type\n\ +snippet type\n\ + type ${1:type_name} {\n\ + ${2:type_siblings}\n\ + }\n\ +\n\ +# Input Snippet\n\ +trigger input\n\ +snippet input\n\ + input ${1:input_name} {\n\ + ${2:input_siblings}\n\ + }\n\ +\n\ +# Interface Snippet\n\ +trigger interface\n\ +snippet interface\n\ + interface ${1:interface_name} {\n\ + ${2:interface_siblings}\n\ + }\n\ +\n\ +# Interface Snippet\n\ +trigger union\n\ +snippet union\n\ + union ${1:union_name} = ${2:type} | ${3: type}\n\ +\n\ +# Enum Snippet\n\ +trigger enum\n\ +snippet enum\n\ + enum ${1:enum_name} {\n\ + ${2:enum_siblings}\n\ + }\n\ +"; +exports.scope = "graphqlschema"; + +}); diff --git a/js/core/vendor/ace-builds/src-noconflict/snippets/hjson.js b/js/core/vendor/ace-builds/src-noconflict/snippets/hjson.js new file mode 100644 index 0000000..b31e556 --- /dev/null +++ b/js/core/vendor/ace-builds/src-noconflict/snippets/hjson.js @@ -0,0 +1,7 @@ +ace.define("ace/snippets/hjson",["require","exports","module"], function(require, exports, module) { +"use strict"; + +exports.snippetText =undefined; +exports.scope = ""; + +}); diff --git a/js/core/vendor/ace-builds/src-noconflict/snippets/pig.js b/js/core/vendor/ace-builds/src-noconflict/snippets/pig.js new file mode 100644 index 0000000..479a03b --- /dev/null +++ b/js/core/vendor/ace-builds/src-noconflict/snippets/pig.js @@ -0,0 +1,7 @@ +ace.define("ace/snippets/pig",["require","exports","module"], function(require, exports, module) { +"use strict"; + +exports.snippetText =undefined; +exports.scope = "pig"; + +}); diff --git a/js/core/vendor/ace-builds/src-noconflict/snippets/sh.js b/js/core/vendor/ace-builds/src-noconflict/snippets/sh.js index 12074a6..0f1f6d8 100644 --- a/js/core/vendor/ace-builds/src-noconflict/snippets/sh.js +++ b/js/core/vendor/ace-builds/src-noconflict/snippets/sh.js @@ -62,7 +62,7 @@ snippet getopt\n\ -h|help Display this message\n\ -v|version Display script version\n\ \n\ - EOT\n\ + EOT\n\ } # ---------- end of function usage ----------\n\ \n\ #-----------------------------------------------------------------------\n\ diff --git a/js/core/vendor/ace-builds/src-noconflict/snippets/sparql.js b/js/core/vendor/ace-builds/src-noconflict/snippets/sparql.js new file mode 100644 index 0000000..2c87bbf --- /dev/null +++ b/js/core/vendor/ace-builds/src-noconflict/snippets/sparql.js @@ -0,0 +1,7 @@ +ace.define("ace/snippets/sparql",["require","exports","module"], function(require, exports, module) { +"use strict"; + +exports.snippetText =undefined; +exports.scope = ""; + +}); diff --git a/js/core/vendor/ace-builds/src-noconflict/snippets/turtle.js b/js/core/vendor/ace-builds/src-noconflict/snippets/turtle.js new file mode 100644 index 0000000..5e104b2 --- /dev/null +++ b/js/core/vendor/ace-builds/src-noconflict/snippets/turtle.js @@ -0,0 +1,7 @@ +ace.define("ace/snippets/turtle",["require","exports","module"], function(require, exports, module) { +"use strict"; + +exports.snippetText =undefined; +exports.scope = ""; + +}); diff --git a/js/core/vendor/ace-builds/src-noconflict/worker-lua.js b/js/core/vendor/ace-builds/src-noconflict/worker-lua.js index b2f67f4..e5026ea 100644 --- a/js/core/vendor/ace-builds/src-noconflict/worker-lua.js +++ b/js/core/vendor/ace-builds/src-noconflict/worker-lua.js @@ -1849,7 +1849,7 @@ ace.define("ace/mode/lua/luaparse",["require","exports","module"], function(requ case 126: // ~ if (61 === next) return scanPunctuator('~='); - return raise({}, errors.expected, '=', '~'); + return scanPunctuator('~'); case 58: // : if (58 === next) return scanPunctuator('::'); @@ -2205,7 +2205,7 @@ ace.define("ace/mode/lua/luaparse",["require","exports","module"], function(requ } function isUnary(token) { - if (Punctuator === token.type) return '#-'.indexOf(token.value) >= 0; + if (Punctuator === token.type) return '#-~'.indexOf(token.value) >= 0; if (Keyword === token.type) return 'not' === token.value; return false; } diff --git a/js/core/vendor/ace-builds/src-noconflict/worker-php.js b/js/core/vendor/ace-builds/src-noconflict/worker-php.js index 0b27e96..3752c84 100644 --- a/js/core/vendor/ace-builds/src-noconflict/worker-php.js +++ b/js/core/vendor/ace-builds/src-noconflict/worker-php.js @@ -1410,368 +1410,585 @@ ace.define("ace/mode/php/php",["require","exports","module"], function(require, var PHP = {Constants:{}}; - - - -PHP.Constants.T_INCLUDE = 262; -PHP.Constants.T_INCLUDE_ONCE = 261; -PHP.Constants.T_EVAL = 260; -PHP.Constants.T_REQUIRE = 259; -PHP.Constants.T_REQUIRE_ONCE = 258; -PHP.Constants.T_LOGICAL_OR = 263; -PHP.Constants.T_LOGICAL_XOR = 264; -PHP.Constants.T_LOGICAL_AND = 265; -PHP.Constants.T_PRINT = 266; -PHP.Constants.T_PLUS_EQUAL = 277; -PHP.Constants.T_MINUS_EQUAL = 276; -PHP.Constants.T_MUL_EQUAL = 275; -PHP.Constants.T_DIV_EQUAL = 274; +PHP.Constants.T_INCLUDE = 257; +PHP.Constants.T_INCLUDE_ONCE = 258; +PHP.Constants.T_EVAL = 259; +PHP.Constants.T_REQUIRE = 260; +PHP.Constants.T_REQUIRE_ONCE = 261; +PHP.Constants.T_LOGICAL_OR = 262; +PHP.Constants.T_LOGICAL_XOR = 263; +PHP.Constants.T_LOGICAL_AND = 264; +PHP.Constants.T_PRINT = 265; +PHP.Constants.T_YIELD = 266; +PHP.Constants.T_DOUBLE_ARROW = 267; +PHP.Constants.T_YIELD_FROM = 268; +PHP.Constants.T_PLUS_EQUAL = 269; +PHP.Constants.T_MINUS_EQUAL = 270; +PHP.Constants.T_MUL_EQUAL = 271; +PHP.Constants.T_DIV_EQUAL = 272; PHP.Constants.T_CONCAT_EQUAL = 273; -PHP.Constants.T_MOD_EQUAL = 272; -PHP.Constants.T_AND_EQUAL = 271; -PHP.Constants.T_OR_EQUAL = 270; -PHP.Constants.T_XOR_EQUAL = 269; -PHP.Constants.T_SL_EQUAL = 268; -PHP.Constants.T_SR_EQUAL = 267; -PHP.Constants.T_BOOLEAN_OR = 278; -PHP.Constants.T_BOOLEAN_AND = 279; -PHP.Constants.T_IS_EQUAL = 283; -PHP.Constants.T_IS_NOT_EQUAL = 282; -PHP.Constants.T_IS_IDENTICAL = 281; -PHP.Constants.T_IS_NOT_IDENTICAL = 280; -PHP.Constants.T_IS_SMALLER_OR_EQUAL = 285; -PHP.Constants.T_IS_GREATER_OR_EQUAL = 284; -PHP.Constants.T_SL = 287; -PHP.Constants.T_SR = 286; -PHP.Constants.T_INSTANCEOF = 288; -PHP.Constants.T_INC = 297; -PHP.Constants.T_DEC = 296; -PHP.Constants.T_INT_CAST = 295; -PHP.Constants.T_DOUBLE_CAST = 294; -PHP.Constants.T_STRING_CAST = 293; -PHP.Constants.T_ARRAY_CAST = 292; -PHP.Constants.T_OBJECT_CAST = 291; -PHP.Constants.T_BOOL_CAST = 290; -PHP.Constants.T_UNSET_CAST = 289; -PHP.Constants.T_NEW = 299; -PHP.Constants.T_CLONE = 298; -PHP.Constants.T_EXIT = 300; -PHP.Constants.T_IF = 301; -PHP.Constants.T_ELSEIF = 302; -PHP.Constants.T_ELSE = 303; -PHP.Constants.T_ENDIF = 304; -PHP.Constants.T_LNUMBER = 305; -PHP.Constants.T_DNUMBER = 306; -PHP.Constants.T_STRING = 307; -PHP.Constants.T_STRING_VARNAME = 308; -PHP.Constants.T_VARIABLE = 309; -PHP.Constants.T_NUM_STRING = 310; -PHP.Constants.T_INLINE_HTML = 311; -PHP.Constants.T_CHARACTER = 312; -PHP.Constants.T_BAD_CHARACTER = 313; -PHP.Constants.T_ENCAPSED_AND_WHITESPACE = 314; -PHP.Constants.T_CONSTANT_ENCAPSED_STRING = 315; -PHP.Constants.T_ECHO = 316; -PHP.Constants.T_DO = 317; -PHP.Constants.T_WHILE = 318; -PHP.Constants.T_ENDWHILE = 319; -PHP.Constants.T_FOR = 320; -PHP.Constants.T_ENDFOR = 321; -PHP.Constants.T_FOREACH = 322; -PHP.Constants.T_ENDFOREACH = 323; -PHP.Constants.T_DECLARE = 324; -PHP.Constants.T_ENDDECLARE = 325; -PHP.Constants.T_AS = 326; -PHP.Constants.T_SWITCH = 327; -PHP.Constants.T_ENDSWITCH = 328; -PHP.Constants.T_CASE = 329; -PHP.Constants.T_DEFAULT = 330; -PHP.Constants.T_BREAK = 331; -PHP.Constants.T_CONTINUE = 332; -PHP.Constants.T_GOTO = 333; -PHP.Constants.T_FUNCTION = 334; -PHP.Constants.T_CONST = 335; -PHP.Constants.T_RETURN = 336; -PHP.Constants.T_TRY = 337; -PHP.Constants.T_CATCH = 338; -PHP.Constants.T_THROW = 339; -PHP.Constants.T_USE = 340; -PHP.Constants.T_GLOBAL = 341; -PHP.Constants.T_STATIC = 347; -PHP.Constants.T_ABSTRACT = 346; -PHP.Constants.T_FINAL = 345; -PHP.Constants.T_PRIVATE = 344; -PHP.Constants.T_PROTECTED = 343; -PHP.Constants.T_PUBLIC = 342; -PHP.Constants.T_VAR = 348; -PHP.Constants.T_UNSET = 349; -PHP.Constants.T_ISSET = 350; -PHP.Constants.T_EMPTY = 351; -PHP.Constants.T_HALT_COMPILER = 352; -PHP.Constants.T_CLASS = 353; -PHP.Constants.T_TRAIT = 382; -PHP.Constants.T_INTERFACE = 354; -PHP.Constants.T_EXTENDS = 355; -PHP.Constants.T_IMPLEMENTS = 356; -PHP.Constants.T_OBJECT_OPERATOR = 357; -PHP.Constants.T_DOUBLE_ARROW = 358; -PHP.Constants.T_LIST = 359; -PHP.Constants.T_ARRAY = 360; -PHP.Constants.T_CLASS_C = 361; -PHP.Constants.T_TRAIT_C = 381; -PHP.Constants.T_METHOD_C = 362; -PHP.Constants.T_FUNC_C = 363; -PHP.Constants.T_LINE = 364; -PHP.Constants.T_FILE = 365; -PHP.Constants.T_COMMENT = 366; -PHP.Constants.T_DOC_COMMENT = 367; -PHP.Constants.T_OPEN_TAG = 368; -PHP.Constants.T_OPEN_TAG_WITH_ECHO = 369; -PHP.Constants.T_CLOSE_TAG = 370; -PHP.Constants.T_WHITESPACE = 371; -PHP.Constants.T_START_HEREDOC = 372; -PHP.Constants.T_END_HEREDOC = 373; -PHP.Constants.T_DOLLAR_OPEN_CURLY_BRACES = 374; -PHP.Constants.T_CURLY_OPEN = 375; -PHP.Constants.T_PAAMAYIM_NEKUDOTAYIM = 376; -PHP.Constants.T_DOUBLE_COLON = 376; -PHP.Constants.T_NAMESPACE = 377; -PHP.Constants.T_NS_C = 378; -PHP.Constants.T_DIR = 379; -PHP.Constants.T_NS_SEPARATOR = 380; -PHP.Lexer = function( src, ini ) { - - - var heredoc, - lineBreaker = function( result ) { - if (result.match(/\n/) !== null) { - var quote = result.substring(0, 1); - result = '[' + result.split(/\n/).join( quote + "," + quote ) + '].join("\\n")'; - - } +PHP.Constants.T_MOD_EQUAL = 274; +PHP.Constants.T_AND_EQUAL = 275; +PHP.Constants.T_OR_EQUAL = 276; +PHP.Constants.T_XOR_EQUAL = 277; +PHP.Constants.T_SL_EQUAL = 278; +PHP.Constants.T_SR_EQUAL = 279; +PHP.Constants.T_POW_EQUAL = 280; +PHP.Constants.T_COALESCE = 281; +PHP.Constants.T_BOOLEAN_OR = 282; +PHP.Constants.T_BOOLEAN_AND = 283; +PHP.Constants.T_IS_EQUAL = 284; +PHP.Constants.T_IS_NOT_EQUAL = 285; +PHP.Constants.T_IS_IDENTICAL = 286; +PHP.Constants.T_IS_NOT_IDENTICAL = 287; +PHP.Constants.T_SPACESHIP = 288; +PHP.Constants.T_IS_SMALLER_OR_EQUAL = 289; +PHP.Constants.T_IS_GREATER_OR_EQUAL = 290; +PHP.Constants.T_SL = 291; +PHP.Constants.T_SR = 292; +PHP.Constants.T_INSTANCEOF = 293; +PHP.Constants.T_INC = 294; +PHP.Constants.T_DEC = 295; +PHP.Constants.T_INT_CAST = 296; +PHP.Constants.T_DOUBLE_CAST = 297; +PHP.Constants.T_STRING_CAST = 298; +PHP.Constants.T_ARRAY_CAST = 299; +PHP.Constants.T_OBJECT_CAST = 300; +PHP.Constants.T_BOOL_CAST = 301; +PHP.Constants.T_UNSET_CAST = 302; +PHP.Constants.T_POW = 303; +PHP.Constants.T_NEW = 304; +PHP.Constants.T_CLONE = 305; +PHP.Constants.T_EXIT = 306; +PHP.Constants.T_IF = 307; +PHP.Constants.T_ELSEIF = 308; +PHP.Constants.T_ELSE = 309; +PHP.Constants.T_ENDIF = 310; +PHP.Constants.T_LNUMBER = 311; +PHP.Constants.T_DNUMBER = 312; +PHP.Constants.T_STRING = 313; +PHP.Constants.T_STRING_VARNAME = 314; +PHP.Constants.T_VARIABLE = 315; +PHP.Constants.T_NUM_STRING = 316; +PHP.Constants.T_INLINE_HTML = 317; +PHP.Constants.T_CHARACTER = 318; +PHP.Constants.T_BAD_CHARACTER = 319; +PHP.Constants.T_ENCAPSED_AND_WHITESPACE = 320; +PHP.Constants.T_CONSTANT_ENCAPSED_STRING = 321; +PHP.Constants.T_ECHO = 322; +PHP.Constants.T_DO = 323; +PHP.Constants.T_WHILE = 324; +PHP.Constants.T_ENDWHILE = 325; +PHP.Constants.T_FOR = 326; +PHP.Constants.T_ENDFOR = 327; +PHP.Constants.T_FOREACH = 328; +PHP.Constants.T_ENDFOREACH = 329; +PHP.Constants.T_DECLARE = 330; +PHP.Constants.T_ENDDECLARE = 331; +PHP.Constants.T_AS = 332; +PHP.Constants.T_SWITCH = 333; +PHP.Constants.T_ENDSWITCH = 334; +PHP.Constants.T_CASE = 335; +PHP.Constants.T_DEFAULT = 336; +PHP.Constants.T_BREAK = 337; +PHP.Constants.T_CONTINUE = 338; +PHP.Constants.T_GOTO = 339; +PHP.Constants.T_FUNCTION = 340; +PHP.Constants.T_CONST = 341; +PHP.Constants.T_RETURN = 342; +PHP.Constants.T_TRY = 343; +PHP.Constants.T_CATCH = 344; +PHP.Constants.T_FINALLY = 345; +PHP.Constants.T_THROW = 346; +PHP.Constants.T_USE = 347; +PHP.Constants.T_INSTEADOF = 348; +PHP.Constants.T_GLOBAL = 349; +PHP.Constants.T_STATIC = 350; +PHP.Constants.T_ABSTRACT = 351; +PHP.Constants.T_FINAL = 352; +PHP.Constants.T_PRIVATE = 353; +PHP.Constants.T_PROTECTED = 354; +PHP.Constants.T_PUBLIC = 355; +PHP.Constants.T_VAR = 356; +PHP.Constants.T_UNSET = 357; +PHP.Constants.T_ISSET = 358; +PHP.Constants.T_EMPTY = 359; +PHP.Constants.T_HALT_COMPILER = 360; +PHP.Constants.T_CLASS = 361; +PHP.Constants.T_TRAIT = 362; +PHP.Constants.T_INTERFACE = 363; +PHP.Constants.T_EXTENDS = 364; +PHP.Constants.T_IMPLEMENTS = 365; +PHP.Constants.T_OBJECT_OPERATOR = 366; +PHP.Constants.T_LIST = 367; +PHP.Constants.T_ARRAY = 368; +PHP.Constants.T_CALLABLE = 369; +PHP.Constants.T_CLASS_C = 370; +PHP.Constants.T_TRAIT_C = 371; +PHP.Constants.T_METHOD_C = 372; +PHP.Constants.T_FUNC_C = 373; +PHP.Constants.T_LINE = 374; +PHP.Constants.T_FILE = 375; +PHP.Constants.T_COMMENT = 376; +PHP.Constants.T_DOC_COMMENT = 377; +PHP.Constants.T_OPEN_TAG = 378; +PHP.Constants.T_OPEN_TAG_WITH_ECHO = 379; +PHP.Constants.T_CLOSE_TAG = 380; +PHP.Constants.T_WHITESPACE = 381; +PHP.Constants.T_START_HEREDOC = 382; +PHP.Constants.T_END_HEREDOC = 383; +PHP.Constants.T_DOLLAR_OPEN_CURLY_BRACES = 384; +PHP.Constants.T_CURLY_OPEN = 385; +PHP.Constants.T_PAAMAYIM_NEKUDOTAYIM = 386; +PHP.Constants.T_NAMESPACE = 387; +PHP.Constants.T_NS_C = 388; +PHP.Constants.T_DIR = 389; +PHP.Constants.T_NS_SEPARATOR = 390; +PHP.Constants.T_ELLIPSIS = 391; + +PHP.Lexer = function(src, ini) { + var heredoc, heredocEndAllowed, + + stateStack = ['INITIAL'], stackPos = 0, + swapState = function(state) { + stateStack[stackPos] = state; + }, + pushState = function(state) { + stateStack[++stackPos] = state; + }, + popState = function() { + --stackPos; + }, - return result; + shortOpenTag = ini === undefined || /^(on|true|1)$/i.test(ini.short_open_tag), + openTag = shortOpenTag + ? /^(\<\?php(?:\r\n|[ \t\r\n])|<\?|\<script language\=('|")?php('|")?\>)/i + : /^(\<\?php(?:\r\n|[ \t\r\n])|\<script language\=('|")?php('|")?\>)/i, + inlineHtml = shortOpenTag + ? /[^<]*(?:<(?!\?|script language\=('|")?php('|")?\>)[^<]*)*/i + : /[^<]*(?:<(?!\?=|\?php[ \t\r\n]|script language\=('|")?php('|")?\>)[^<]*)*/i; + labelRegexPart = '[a-zA-Z_\\x7f-\\uffff][a-zA-Z0-9_\\x7f-\\uffff]*', + stringRegexPart = function(quote) { + return '[^' + quote + '\\\\${]*(?:(?:\\\\[\\s\\S]|\\$(?!\\{|[a-zA-Z_\\x7f-\\uffff])|\\{(?!\\$))[^' + quote + '\\\\${]*)*'; }, - prev, - openTag = (ini === undefined || (/^(on|true|1)$/i.test(ini.short_open_tag) ) ? /(\<\?php\s|\<\?|\<\%|\<script language\=('|")?php('|")?\>)/i : /(\<\?php\s|<\?=|\<script language\=('|")?php('|")?\>)/i), - openTagStart = (ini === undefined || (/^(on|true|1)$/i.test(ini.short_open_tag)) ? /^(\<\?php\s|\<\?|\<\%|\<script language\=('|")?php('|")?\>)/i : /^(\<\?php\s|<\?=|\<script language\=('|")?php('|")?\>)/i), - tokens = [ + sharedStringTokens = [ + { + value: PHP.Constants.T_VARIABLE, + re: new RegExp('^\\$' + labelRegexPart + '(?=\\[)'), + func: function() { + pushState('VAR_OFFSET'); + } + }, + { + value: PHP.Constants.T_VARIABLE, + re: new RegExp('^\\$' + labelRegexPart + '(?=->' + labelRegexPart + ')'), + func: function() { + pushState('LOOKING_FOR_PROPERTY'); + } + }, + { + value: PHP.Constants.T_DOLLAR_OPEN_CURLY_BRACES, + re: new RegExp('^\\$\\{(?=' + labelRegexPart + '[\\[}])'), + func: function() { + pushState('LOOKING_FOR_VARNAME'); + } + }, + { + value: PHP.Constants.T_VARIABLE, + re: new RegExp('^\\$' + labelRegexPart) + }, + { + value: PHP.Constants.T_DOLLAR_OPEN_CURLY_BRACES, + re: /^\$\{/, + func: function() { + pushState('IN_SCRIPTING'); + } + }, + { + value: PHP.Constants.T_CURLY_OPEN, + re: /^\{(?=\$)/, + func: function() { + pushState('IN_SCRIPTING'); + } + } + ], + data = { + 'INITIAL': [ { - value: PHP.Constants.T_NAMESPACE, - re: /^namespace(?=\s)/i + value: PHP.Constants.T_OPEN_TAG_WITH_ECHO, + re: /^<\?=/i, + func: function() { + swapState('IN_SCRIPTING'); + } }, { - value: PHP.Constants.T_USE, - re: /^use(?=\s)/i + value: PHP.Constants.T_OPEN_TAG, + re: openTag, + func: function() { + swapState('IN_SCRIPTING'); + } + }, + { + value: PHP.Constants.T_INLINE_HTML, + re: inlineHtml + }, + ], + 'IN_SCRIPTING': [ + { + value: PHP.Constants.T_WHITESPACE, + re: /^[ \n\r\t]+/ }, { value: PHP.Constants.T_ABSTRACT, - re: /^abstract(?=\s)/i + re: /^abstract\b/i }, { - value: PHP.Constants.T_IMPLEMENTS, - re: /^implements(?=\s)/i + value: PHP.Constants.T_LOGICAL_AND, + re: /^and\b/i }, { - value: PHP.Constants.T_INTERFACE, - re: /^interface(?=\s)/i + value: PHP.Constants.T_ARRAY, + re: /^array\b/i }, { - value: PHP.Constants.T_CONST, - re: /^const(?=\s)/i + value: PHP.Constants.T_AS, + re: /^as\b/i }, { - value: PHP.Constants.T_STATIC, - re: /^static(?=\s)/i + value: PHP.Constants.T_BREAK, + re: /^break\b/i }, { - value: PHP.Constants.T_FINAL, - re: /^final(?=\s)/i + value: PHP.Constants.T_CALLABLE, + re: /^callable\b/i }, { - value: PHP.Constants.T_VAR, - re: /^var(?=\s)/i + value: PHP.Constants.T_CASE, + re: /^case\b/i }, { - value: PHP.Constants.T_GLOBAL, - re: /^global(?=\s)/i + value: PHP.Constants.T_CATCH, + re: /^catch\b/i + }, + { + value: PHP.Constants.T_CLASS, + re: /^class\b/i, }, { value: PHP.Constants.T_CLONE, - re: /^clone(?=\s)/i + re: /^clone\b/i }, { - value: PHP.Constants.T_THROW, - re: /^throw(?=\s)/i + value: PHP.Constants.T_CONST, + re: /^const\b/i + }, + { + value: PHP.Constants.T_CONTINUE, + re: /^continue\b/i + }, + { + value: PHP.Constants.T_DECLARE, + re: /^declare\b/i + }, + { + value: PHP.Constants.T_DEFAULT, + re: /^default\b/i + }, + { + value: PHP.Constants.T_DO, + re: /^do\b/i + }, + { + value: PHP.Constants.T_ECHO, + re: /^echo\b/i + }, + { + value: PHP.Constants.T_ELSE, + re: /^else\b/i + }, + { + value: PHP.Constants.T_ELSEIF, + re: /^elseif\b/i + }, + { + value: PHP.Constants.T_ENDDECLARE, + re: /^enddeclare\b/i + }, + { + value: PHP.Constants.T_ENDFOR, + re: /^endfor\b/i + }, + { + value: PHP.Constants.T_ENDFOREACH, + re: /^endforeach\b/i + }, + { + value: PHP.Constants.T_ENDIF, + re: /^endif\b/i + }, + { + value: PHP.Constants.T_ENDSWITCH, + re: /^endswitch\b/i + }, + { + value: PHP.Constants.T_ENDWHILE, + re: /^endwhile\b/i + }, + { + value: PHP.Constants.T_EMPTY, + re: /^empty\b/i + }, + { + value: PHP.Constants.T_EVAL, + re: /^eval\b/i + }, + { + value: PHP.Constants.T_EXIT, + re: /^(?:exit|die)\b/i }, { value: PHP.Constants.T_EXTENDS, - re: /^extends(?=\s)/i + re: /^extends\b/i }, { - value: PHP.Constants.T_AND_EQUAL, - re: /^&=/ + value: PHP.Constants.T_FINAL, + re: /^final\b/i }, { - value: PHP.Constants.T_AS, - re: /^as(?=\s)/i + value: PHP.Constants.T_FINALLY, + re: /^finally\b/i }, { - value: PHP.Constants.T_ARRAY_CAST, - re: /^\(array\)/i + value: PHP.Constants.T_FOR, + re: /^for\b/i }, { - value: PHP.Constants.T_BOOL_CAST, - re: /^\((bool|boolean)\)/i + value: PHP.Constants.T_FOREACH, + re: /^foreach\b/i }, { - value: PHP.Constants.T_DOUBLE_CAST, - re: /^\((real|float|double)\)/i + value: PHP.Constants.T_FUNCTION, + re: /^function\b/i }, { - value: PHP.Constants.T_INT_CAST, - re: /^\((int|integer)\)/i + value: PHP.Constants.T_GLOBAL, + re: /^global\b/i }, { - value: PHP.Constants.T_OBJECT_CAST, - re: /^\(object\)/i + value: PHP.Constants.T_GOTO, + re: /^goto\b/i }, { - value: PHP.Constants.T_STRING_CAST, - re: /^\(string\)/i + value: PHP.Constants.T_IF, + re: /^if\b/i }, { - value: PHP.Constants.T_UNSET_CAST, - re: /^\(unset\)/i + value: PHP.Constants.T_IMPLEMENTS, + re: /^implements\b/i }, { - value: PHP.Constants.T_TRY, - re: /^try(?=\s*{)/i + value: PHP.Constants.T_INCLUDE, + re: /^include\b/i }, { - value: PHP.Constants.T_CATCH, - re: /^catch(?=\s*\()/i + value: PHP.Constants.T_INCLUDE_ONCE, + re: /^include_once\b/i }, { value: PHP.Constants.T_INSTANCEOF, - re: /^instanceof(?=\s)/i + re: /^instanceof\b/i + }, + { + value: PHP.Constants.T_INSTEADOF, + re: /^insteadof\b/i + }, + { + value: PHP.Constants.T_INTERFACE, + re: /^interface\b/i + }, + { + value: PHP.Constants.T_ISSET, + re: /^isset\b/i + }, + { + value: PHP.Constants.T_LIST, + re: /^list\b/i + }, + { + value: PHP.Constants.T_NAMESPACE, + re: /^namespace\b/i + }, + { + value: PHP.Constants.T_NEW, + re: /^new\b/i }, { value: PHP.Constants.T_LOGICAL_OR, - re: /^or(?=\s)/i + re: /^or\b/i }, { - value: PHP.Constants.T_LOGICAL_AND, - re: /^and(?=\s)/i + value: PHP.Constants.T_PRINT, + re: /^print\b/i }, { - value: PHP.Constants.T_LOGICAL_XOR, - re: /^xor(?=\s)/i + value: PHP.Constants.T_PRIVATE, + re: /^private\b/i }, { - value: PHP.Constants.T_BOOLEAN_AND, - re: /^&&/ + value: PHP.Constants.T_PROTECTED, + re: /^protected\b/i }, { - value: PHP.Constants.T_BOOLEAN_OR, - re: /^\|\|/ + value: PHP.Constants.T_PUBLIC, + re: /^public\b/i }, { - value: PHP.Constants.T_CONTINUE, - re: /^continue(?=\s|;)/i + value: PHP.Constants.T_REQUIRE, + re: /^require\b/i }, { - value: PHP.Constants.T_BREAK, - re: /^break(?=\s|;)/i + value: PHP.Constants.T_REQUIRE_ONCE, + re: /^require_once\b/i }, { - value: PHP.Constants.T_ENDDECLARE, - re: /^enddeclare(?=\s|;)/i + value: PHP.Constants.T_STATIC, + re: /^static\b/i }, { - value: PHP.Constants.T_ENDFOR, - re: /^endfor(?=\s|;)/i + value: PHP.Constants.T_SWITCH, + re: /^switch\b/i }, { - value: PHP.Constants.T_ENDFOREACH, - re: /^endforeach(?=\s|;)/i + value: PHP.Constants.T_THROW, + re: /^throw\b/i }, { - value: PHP.Constants.T_ENDIF, - re: /^endif(?=\s|;)/i + value: PHP.Constants.T_TRAIT, + re: /^trait\b/i, }, { - value: PHP.Constants.T_ENDSWITCH, - re: /^endswitch(?=\s|;)/i + value: PHP.Constants.T_TRY, + re: /^try\b/i }, { - value: PHP.Constants.T_ENDWHILE, - re: /^endwhile(?=\s|;)/i + value: PHP.Constants.T_UNSET, + re: /^unset\b/i }, { - value: PHP.Constants.T_CASE, - re: /^case(?=\s)/i + value: PHP.Constants.T_USE, + re: /^use\b/i }, { - value: PHP.Constants.T_DEFAULT, - re: /^default(?=\s|:)/i + value: PHP.Constants.T_VAR, + re: /^var\b/i }, { - value: PHP.Constants.T_SWITCH, - re: /^switch(?=[ (])/i + value: PHP.Constants.T_WHILE, + re: /^while\b/i }, { - value: PHP.Constants.T_EXIT, - re: /^(exit|die)(?=[ \(;])/i + value: PHP.Constants.T_LOGICAL_XOR, + re: /^xor\b/i }, { - value: PHP.Constants.T_CLOSE_TAG, - re: /^(\?\>|\%\>|\<\/script\>)\s?\s?/i, - func: function( result ) { - insidePHP = false; - return result; - } + value: PHP.Constants.T_YIELD_FROM, + re: /^yield\s+from\b/i }, { - value: PHP.Constants.T_DOUBLE_ARROW, - re: /^\=\>/ + value: PHP.Constants.T_YIELD, + re: /^yield\b/i }, { - value: PHP.Constants.T_DOUBLE_COLON, - re: /^\:\:/ + value: PHP.Constants.T_RETURN, + re: /^return\b/i }, { value: PHP.Constants.T_METHOD_C, - re: /^__METHOD__/ + re: /^__METHOD__\b/i }, { value: PHP.Constants.T_LINE, - re: /^__LINE__/ + re: /^__LINE__\b/i }, { value: PHP.Constants.T_FILE, - re: /^__FILE__/ + re: /^__FILE__\b/i }, { value: PHP.Constants.T_FUNC_C, - re: /^__FUNCTION__/ + re: /^__FUNCTION__\b/i }, { value: PHP.Constants.T_NS_C, - re: /^__NAMESPACE__/ + re: /^__NAMESPACE__\b/i }, { value: PHP.Constants.T_TRAIT_C, - re: /^__TRAIT__/ + re: /^__TRAIT__\b/i }, { value: PHP.Constants.T_DIR, - re: /^__DIR__/ + re: /^__DIR__\b/i }, { value: PHP.Constants.T_CLASS_C, - re: /^__CLASS__/ + re: /^__CLASS__\b/i + }, + { + value: PHP.Constants.T_AND_EQUAL, + re: /^&=/ + }, + { + value: PHP.Constants.T_ARRAY_CAST, + re: /^\([ \t]*array[ \t]*\)/i + }, + { + value: PHP.Constants.T_BOOL_CAST, + re: /^\([ \t]*(?:bool|boolean)[ \t]*\)/i + }, + { + value: PHP.Constants.T_DOUBLE_CAST, + re: /^\([ \t]*(?:real|float|double)[ \t]*\)/i + }, + { + value: PHP.Constants.T_INT_CAST, + re: /^\([ \t]*(?:int|integer)[ \t]*\)/i + }, + { + value: PHP.Constants.T_OBJECT_CAST, + re: /^\([ \t]*object[ \t]*\)/i + }, + { + value: PHP.Constants.T_STRING_CAST, + re: /^\([ \t]*(?:binary|string)[ \t]*\)/i + }, + { + value: PHP.Constants.T_UNSET_CAST, + re: /^\([ \t]*unset[ \t]*\)/i + }, + { + value: PHP.Constants.T_BOOLEAN_AND, + re: /^&&/ + }, + { + value: PHP.Constants.T_BOOLEAN_OR, + re: /^\|\|/ + }, + { + value: PHP.Constants.T_CLOSE_TAG, + re: /^(?:\?>|<\/script>)(\r\n|\r|\n)?/i, + func: function() { + swapState('INITIAL'); + } + }, + { + value: PHP.Constants.T_DOUBLE_ARROW, + re: /^=>/ + }, + { + value: PHP.Constants.T_PAAMAYIM_NEKUDOTAYIM, + re: /^::/ }, { value: PHP.Constants.T_INC, @@ -1779,27 +1996,27 @@ PHP.Lexer = function( src, ini ) { }, { value: PHP.Constants.T_DEC, - re: /^\-\-/ + re: /^--/ }, { value: PHP.Constants.T_CONCAT_EQUAL, - re: /^\.\=/ + re: /^\.=/ }, { value: PHP.Constants.T_DIV_EQUAL, - re: /^\/\=/ + re: /^\/=/ }, { value: PHP.Constants.T_XOR_EQUAL, - re: /^\^\=/ + re: /^\^=/ }, { value: PHP.Constants.T_MUL_EQUAL, - re: /^\*\=/ + re: /^\*=/ }, { value: PHP.Constants.T_MOD_EQUAL, - re: /^\%\=/ + re: /^%=/ }, { value: PHP.Constants.T_SL_EQUAL, @@ -1807,10 +2024,19 @@ PHP.Lexer = function( src, ini ) { }, { value: PHP.Constants.T_START_HEREDOC, - re: /^<<<[A-Z_0-9]+\s/i, - func: function( result ){ - heredoc = result.substring(3, result.length - 1); - return result; + re: new RegExp('^[bB]?<<<[ \\t]*\'(' + labelRegexPart + ')\'(?:\\r\\n|\\r|\\n)'), + func: function(result) { + heredoc = result[1]; + swapState('NOWDOC'); + } + }, + { + value: PHP.Constants.T_START_HEREDOC, + re: new RegExp('^[bB]?<<<[ \\t]*("?)(' + labelRegexPart + ')\\1(?:\\r\\n|\\r|\\n)'), + func: function(result) { + heredoc = result[2]; + heredocEndAllowed = true; + swapState('HEREDOC'); } }, { @@ -1818,6 +2044,10 @@ PHP.Lexer = function( src, ini ) { re: /^<</ }, { + value: PHP.Constants.T_SPACESHIP, + re: /^<=>/ + }, + { value: PHP.Constants.T_IS_SMALLER_OR_EQUAL, re: /^<=/ }, @@ -1835,491 +2065,330 @@ PHP.Lexer = function( src, ini ) { }, { value: PHP.Constants.T_OR_EQUAL, - re: /^\|\=/ + re: /^\|=/ }, { value: PHP.Constants.T_PLUS_EQUAL, - re: /^\+\=/ + re: /^\+=/ }, { value: PHP.Constants.T_MINUS_EQUAL, - re: /^-\=/ + re: /^-=/ }, { value: PHP.Constants.T_OBJECT_OPERATOR, - re: /^\-\>/i - }, - { - value: PHP.Constants.T_CLASS, - re: /^class(?=[\s\{])/i, - afterWhitespace: true - }, - { - value: PHP.Constants.T_TRAIT, - re: /^trait(?=[\s]+[A-Za-z])/i, + re: new RegExp('^->(?=[ \n\r\t]*' + labelRegexPart + ')'), + func: function() { + pushState('LOOKING_FOR_PROPERTY'); + } }, { - value: PHP.Constants.T_PUBLIC, - re: /^public(?=[\s])/i + value: PHP.Constants.T_OBJECT_OPERATOR, + re: /^->/i }, { - value: PHP.Constants.T_PRIVATE, - re: /^private(?=[\s])/i + value: PHP.Constants.T_ELLIPSIS, + re: /^\.\.\./ }, { - value: PHP.Constants.T_PROTECTED, - re: /^protected(?=[\s])/i + value: PHP.Constants.T_POW_EQUAL, + re: /^\*\*=/ }, { - value: PHP.Constants.T_ARRAY, - re: /^array(?=\s*?\()/i + value: PHP.Constants.T_POW, + re: /^\*\*/ }, { - value: PHP.Constants.T_EMPTY, - re: /^empty(?=[ \(])/i + value: PHP.Constants.T_COALESCE, + re: /^\?\?/ }, { - value: PHP.Constants.T_ISSET, - re: /^isset(?=[ \(])/i + value: PHP.Constants.T_COMMENT, + re: /^\/\*([\S\s]*?)(?:\*\/|$)/ }, { - value: PHP.Constants.T_UNSET, - re: /^unset(?=[ \(])/i + value: PHP.Constants.T_COMMENT, + re: /^(?:\/\/|#)[^\r\n?]*(?:\?(?!>)[^\r\n?]*)*(?:\r\n|\r|\n)?/ }, { - value: PHP.Constants.T_RETURN, - re: /^return(?=[ "'(;])/i + value: PHP.Constants.T_IS_IDENTICAL, + re: /^===/ }, { - value: PHP.Constants.T_FUNCTION, - re: /^function(?=[ "'(;])/i + value: PHP.Constants.T_IS_EQUAL, + re: /^==/ }, { - value: PHP.Constants.T_ECHO, - re: /^echo(?=[ "'(;])/i + value: PHP.Constants.T_IS_NOT_IDENTICAL, + re: /^!==/ }, { - value: PHP.Constants.T_LIST, - re: /^list(?=\s*?\()/i + value: PHP.Constants.T_IS_NOT_EQUAL, + re: /^(!=|<>)/ }, { - value: PHP.Constants.T_PRINT, - re: /^print(?=[ "'(;])/i + value: PHP.Constants.T_DNUMBER, + re: /^(?:[0-9]+\.[0-9]*|\.[0-9]+)(?:[eE][+-]?[0-9]+)?/ }, { - value: PHP.Constants.T_INCLUDE, - re: /^include(?=[ "'(;])/i + value: PHP.Constants.T_DNUMBER, + re: /^[0-9]+[eE][+-]?[0-9]+/ }, { - value: PHP.Constants.T_INCLUDE_ONCE, - re: /^include_once(?=[ "'(;])/i + value: PHP.Constants.T_LNUMBER, + re: /^(?:0x[0-9A-F]+|0b[01]+|[0-9]+)/i }, { - value: PHP.Constants.T_REQUIRE, - re: /^require(?=[ "'(;])/i + value: PHP.Constants.T_VARIABLE, + re: new RegExp('^\\$' + labelRegexPart) }, { - value: PHP.Constants.T_REQUIRE_ONCE, - re: /^require_once(?=[ "'(;])/i + value: PHP.Constants.T_CONSTANT_ENCAPSED_STRING, + re: /^[bB]?'[^'\\]*(?:\\[\s\S][^'\\]*)*'/, }, { - value: PHP.Constants.T_NEW, - re: /^new(?=[ ])/i + value: PHP.Constants.T_CONSTANT_ENCAPSED_STRING, + re: new RegExp('^[bB]?"' + stringRegexPart('"') + '"') }, { - value: PHP.Constants.T_COMMENT, - re: /^\/\*([\S\s]*?)(?:\*\/|$)/ + value: -1, + re: /^[bB]?"/, + func: function() { + swapState('DOUBLE_QUOTES'); + } }, { - value: PHP.Constants.T_COMMENT, - re: /^\/\/.*(\s)?/ + value: -1, + re: /^`/, + func: function() { + swapState('BACKTICKS'); + } }, { - value: PHP.Constants.T_COMMENT, - re: /^\#.*(\s)?/ + value: PHP.Constants.T_NS_SEPARATOR, + re: /^\\/ }, { - value: PHP.Constants.T_ELSEIF, - re: /^elseif(?=[\s(])/i + value: PHP.Constants.T_STRING, + re: /^[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/ }, { - value: PHP.Constants.T_GOTO, - re: /^goto(?=[\s(])/i + value: -1, + re: /^\{/, + func: function() { + pushState('IN_SCRIPTING'); + } }, { - value: PHP.Constants.T_ELSE, - re: /^else(?=[\s{:])/i + value: -1, + re: /^\}/, + func: function() { + if (stackPos > 0) { + popState(); + } + } }, { - value: PHP.Constants.T_IF, - re: /^if(?=[\s(])/i - }, + value: -1, + re: /^[\[\];:?()!.,><=+-/*|&@^%"'$~]/ + } + ], + 'DOUBLE_QUOTES': sharedStringTokens.concat([ { - value: PHP.Constants.T_DO, - re: /^do(?=[ {])/i + value: -1, + re: /^"/, + func: function() { + swapState('IN_SCRIPTING'); + } }, { - value: PHP.Constants.T_WHILE, - re: /^while(?=[ (])/i - }, + value: PHP.Constants.T_ENCAPSED_AND_WHITESPACE, + re: new RegExp('^' + stringRegexPart('"')) + } + ]), + 'BACKTICKS': sharedStringTokens.concat([ { - value: PHP.Constants.T_FOREACH, - re: /^foreach(?=[ (])/i + value: -1, + re: /^`/, + func: function() { + swapState('IN_SCRIPTING'); + } }, { - value: PHP.Constants.T_ISSET, - re: /^isset(?=[ (])/i - }, + value: PHP.Constants.T_ENCAPSED_AND_WHITESPACE, + re: new RegExp('^' + stringRegexPart('`')) + } + ]), + 'VAR_OFFSET': [ { - value: PHP.Constants.T_IS_IDENTICAL, - re: /^===/ + value: -1, + re: /^\]/, + func: function() { + popState(); + } }, { - value: PHP.Constants.T_IS_EQUAL, - re: /^==/ + value: PHP.Constants.T_NUM_STRING, + re: /^(?:0x[0-9A-F]+|0b[01]+|[0-9]+)/i }, { - value: PHP.Constants.T_IS_NOT_IDENTICAL, - re: /^\!==/ + value: PHP.Constants.T_VARIABLE, + re: new RegExp('^\\$' + labelRegexPart) }, { - value: PHP.Constants.T_IS_NOT_EQUAL, - re: /^(\!=|\<\>)/ + value: PHP.Constants.T_STRING, + re: new RegExp('^' + labelRegexPart) }, { - value: PHP.Constants.T_FOR, - re: /^for(?=[ (])/i - }, - + value: -1, + re: /^[;:,.\[()|^&+-/*=%!~$<>?@{}"`]/ + } + ], + 'LOOKING_FOR_PROPERTY': [ { - value: PHP.Constants.T_DNUMBER, - re: /^[0-9]*\.[0-9]+([eE][-]?[0-9]*)?/ - + value: PHP.Constants.T_OBJECT_OPERATOR, + re: /^->/ }, { - value: PHP.Constants.T_LNUMBER, - re: /^(0x[0-9A-F]+|[0-9]+)/i + value: PHP.Constants.T_STRING, + re: new RegExp('^' + labelRegexPart), + func: function() { + popState(); + } }, { - value: PHP.Constants.T_OPEN_TAG_WITH_ECHO, - re: /^(\<\?=|\<\%=)/i - }, + value: PHP.Constants.T_WHITESPACE, + re: /^[ \n\r\t]+/ + } + ], + 'LOOKING_FOR_VARNAME': [ { - value: PHP.Constants.T_OPEN_TAG, - re: openTagStart - }, + value: PHP.Constants.T_STRING_VARNAME, + re: new RegExp('^' + labelRegexPart + '(?=[\\[}])'), + func: function() { + swapState('IN_SCRIPTING'); + } + } + ], + 'NOWDOC': [ { - value: PHP.Constants.T_VARIABLE, - re: /^\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/ + value: PHP.Constants.T_END_HEREDOC, + matchFunc: function(src) { + var re = new RegExp('^' + heredoc + '(?=;?[\\r\\n])'); + if (src.match(re)) { + return [src.substr(0, heredoc.length)]; + } else { + return null; + } + }, + func: function() { + swapState('IN_SCRIPTING'); + } }, { - value: PHP.Constants.T_WHITESPACE, - re: /^\s+/ - }, + value: PHP.Constants.T_ENCAPSED_AND_WHITESPACE, + matchFunc: function(src) { + var re = new RegExp('[\\r\\n]' + heredoc + '(?=;?[\\r\\n])'); + var result = re.exec(src); + var end = result ? result.index + 1 : src.length; + return [src.substring(0, end)]; + } + } + ], + 'HEREDOC': sharedStringTokens.concat([ { - value: PHP.Constants.T_CONSTANT_ENCAPSED_STRING, - re: /^("(?:[^"\\]|\\[\s\S])*"|'(?:[^'\\]|\\[\s\S])*')/, - func: function( result, token ) { - - var curlyOpen = 0, - len, - bracketOpen = 0; - - if (result.substring( 0,1 ) === "'") { - return result; + value: PHP.Constants.T_END_HEREDOC, + matchFunc: function(src) { + if (!heredocEndAllowed) { + return null; } - - var match = result.match( /(?:[^\\]|\\.)*[^\\]\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/g ); - if ( match !== null ) { - - while( result.length > 0 ) { - len = result.length; - match = result.match( /^[\[\]\;\:\?\(\)\!\.\,\>\<\=\+\-\/\*\|\&\@\^\%\"\'\{\}]/ ); - - if ( match !== null ) { - - results.push( match[ 0 ] ); - result = result.substring( 1 ); - - if ( curlyOpen > 0 && match[ 0 ] === "}") { - curlyOpen--; - } - - if ( match[ 0 ] === "[" ) { - bracketOpen++; - } - - if ( match[ 0 ] === "]" ) { - bracketOpen--; - } - - } - - match = result.match(/^\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/); - - - - if ( match !== null ) { - - results.push([ - parseInt(PHP.Constants.T_VARIABLE, 10), - match[ 0 ], - line - ]); - - result = result.substring( match[ 0 ].length ); - - match = result.match(/^(\-\>)\s*([a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*)\s*(\()/); - - if ( match !== null ) { - - results.push([ - parseInt(PHP.Constants.T_OBJECT_OPERATOR, 10), - match[ 1 ], - line - ]); - results.push([ - parseInt(PHP.Constants.T_STRING, 10), - match[ 2 ], - line - ]); - if (match[3]) { - results.push(match[3]); - } - result = result.substring( match[ 0 ].length ); - } - - - if ( result.match( /^\[/g ) !== null ) { - continue; - } - } - - var re; - if ( curlyOpen > 0) { - re = /^([^\\\$"{}\]\(\)\->]|\\.)+/g; - } else { - re = /^([^\\\$"{]|\\.|{[^\$]|\$(?=[^a-zA-Z_\x7f-\uffff]))+/g;; - } - - var type, match2; - while(( match = result.match( re )) !== null ) { - if (result.length === 1) { - throw new Error(match); - } - - type = 0; - - if( curlyOpen > 0 ){ - if( match2 = match[0].match(/^[\[\]\;\:\?\(\)\!\.\,\>\<\=\+\-\/\*\|\&\{\}\@\^\%\$\~]/) ){ - results.push(match2[0]); - }else{ - type = PHP.Constants.T_STRING; - } - }else{ - type = PHP.Constants.T_ENCAPSED_AND_WHITESPACE; - } - - if( type ){ - results.push([ - parseInt(type, 10), - match[ 0 ].replace(/\n/g,"\\n").replace(/\r/g,""), - line - ]); - } - - line += match[ 0 ].split('\n').length - 1; - - result = result.substring( match[ 0 ].length ); - } - - if( curlyOpen > 0 && result.match(/^\->/) !== null ) { - results.push([ - parseInt(PHP.Constants.T_OBJECT_OPERATOR, 10), - '->', - line - ]); - result = result.substring( 2 ); - } - - if( result.match(/^{\$/) !== null ) { - results.push([ - parseInt(PHP.Constants.T_CURLY_OPEN, 10), - "{", - line - ]); - result = result.substring( 1 ); - curlyOpen++; - } - - if (len === result.length) { - if ((match = result.match( /^(([^\\]|\\.)*?[^\\]\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*)/g )) !== null) { - return; - } - } - - } - - return undefined; - + var re = new RegExp('^' + heredoc + '(?=;?[\\r\\n])'); + if (src.match(re)) { + return [src.substr(0, heredoc.length)]; } else { - result = result.replace(/\r/g,""); + return null; } - return result; + }, + func: function() { + swapState('IN_SCRIPTING'); } }, { - value: PHP.Constants.T_NS_SEPARATOR, - re: /^\\(?=[a-zA-Z_])/ - }, - { - value: PHP.Constants.T_STRING, - re: /^[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/ - }, - { - value: -1, - re: /^[\[\]\;\:\?\(\)\!\.\,\>\<\=\+\-\/\*\|\&\{\}\@\^\%\"\'\$\~]/ - }]; - - - - - - var results = [], - line = 1, - insidePHP = false, - cancel = true; - - if ( src === null ) { - return results; - } - - if ( typeof src !== "string" ) { - src = src.toString(); - } - - - - while (src.length > 0 && cancel === true) { - - if ( insidePHP === true ) { - - if ( heredoc !== undefined ) { - - var regexp = new RegExp('([\\S\\s]*?)(\\r\\n|\\n|\\r)(' + heredoc + ')(;|\\r\\n|\\n)',"i"); - - - - var result = src.match( regexp ); - if ( result !== null ) { - - results.push([ - parseInt(PHP.Constants.T_ENCAPSED_AND_WHITESPACE, 10), - result[ 1 ].replace(/^\n/g,"").replace(/\\\$/g,"$") + "\n", - line - ]); - line += result[ 1 ].split('\n').length; - results.push([ - parseInt(PHP.Constants.T_END_HEREDOC, 10), - result[ 3 ], - line - ]); - - src = src.substring( result[1].length + result[2].length + result[3].length ); - heredoc = undefined; - } - - if (result === null) { - throw Error("sup"); - } - - - } else { - cancel = tokens.some(function( token ){ - if ( token.afterWhitespace === true ) { - var last = results[ results.length - 1 ]; - if ( !Array.isArray( last ) || (last[ 0 ] !== PHP.Constants.T_WHITESPACE && last[ 0 ] !== PHP.Constants.T_OPEN_TAG && last[ 0 ] !== PHP.Constants.T_COMMENT)) { - return false; - } - } - var result = src.match( token.re ); - - if ( result !== null ) { - if ( token.value !== -1) { - var resultString = result[ 0 ]; - - - - if (token.func !== undefined ) { - resultString = token.func( resultString, token ); - } - if (resultString !== undefined ) { - - results.push([ - parseInt(token.value, 10), - resultString, - line - ]); - line += resultString.split('\n').length - 1; - } - - } else { - results.push( result[ 0 ] ); - } - - src = src.substring(result[ 0 ].length); - - return true; - } - return false; - - - }); + value: PHP.Constants.T_ENCAPSED_AND_WHITESPACE, + matchFunc: function(src) { + var end = src.length; + var re = new RegExp('^' + stringRegexPart('')); + var result = re.exec(src); + if (result) { + end = result[0].length; } - - } else { - - var result = openTag.exec( src ); - - - if ( result !== null ) { - if ( result.index > 0 ) { - var resultString = src.substring(0, result.index); - results.push ([ - parseInt(PHP.Constants.T_INLINE_HTML, 10), - resultString, - line - ]); - - line += resultString.split('\n').length - 1; - - src = src.substring( result.index ); - } - - insidePHP = true; + re = new RegExp('([\\r\\n])' + heredoc + '(?=;?[\\r\\n])'); + result = re.exec(src.substring(0, end)); + if (result) { + end = result.index + 1; + heredocEndAllowed = true; } else { - - results.push ([ - parseInt(PHP.Constants.T_INLINE_HTML, 10), - src.replace(/^\n/, ""), - line - ]); - return results; + heredocEndAllowed = false; } - + if (end == 0) { + return null; + } + return [src.substring(0, end)]; } + } + ]) + }; + var results = [], + line = 1, + cancel = true; + if (src === null) { + return results; + } - } + if (typeof src !== "string") { + src = src.toString(); + } + while (src.length > 0 && cancel === true) { + var state = stateStack[stackPos]; + var tokens = data[state]; + cancel = tokens.some(function(token){ + var result = token.matchFunc !== undefined + ? token.matchFunc(src) + : src.match(token.re); + if (result !== null) { + if (result[0].length == 0) { + throw new Error("empty match"); + } + if (token.func !== undefined) { + token.func(result); + } - return results; + if (token.value === -1) { + results.push(result[0]); + } else { + var resultString = result[0]; + results.push([ + parseInt(token.value, 10), + resultString, + line + ]); + line += resultString.split('\n').length - 1; + } + src = src.substring(result[0].length); + return true; + } + return false; + }); + } - }; + return results; +}; PHP.Parser = function ( preprocessedTokens, eval ) { @@ -2428,11 +2497,6 @@ PHP.Parser = function ( preprocessedTokens, eval ) { for (var attr in this.endAttributes) { attributeStack[ this.stackPos - yylen[ yyn ] ][ attr ] = this.endAttributes[ attr ]; } - try { - this['yyn' + yyn](attributeStack[ this.stackPos - yylen[ yyn ] ]); - } catch (e) { - throw e; - } this.stackPos -= yylen[ yyn ]; yyn = yylhs[ yyn ]; if ((yyp = yygbase[ yyn ] + stateStack[ this.stackPos ]) >= 0 @@ -2493,13 +2557,6 @@ PHP.ParseError = function( msg, line ) { this.line = line; }; -PHP.Parser.prototype.MODIFIER_PUBLIC = 1; -PHP.Parser.prototype.MODIFIER_PROTECTED = 2; -PHP.Parser.prototype.MODIFIER_PRIVATE = 4; -PHP.Parser.prototype.MODIFIER_STATIC = 8; -PHP.Parser.prototype.MODIFIER_ABSTRACT = 16; -PHP.Parser.prototype.MODIFIER_FINAL = 32; - PHP.Parser.prototype.getNextToken = function( ) { this.startAttributes = {}; @@ -2556,7 +2613,7 @@ PHP.Parser.prototype.getNextToken = function( ) { }; PHP.Parser.prototype.tokenName = function( token ) { - var constants = ["T_INCLUDE","T_INCLUDE_ONCE","T_EVAL","T_REQUIRE","T_REQUIRE_ONCE","T_LOGICAL_OR","T_LOGICAL_XOR","T_LOGICAL_AND","T_PRINT","T_PLUS_EQUAL","T_MINUS_EQUAL","T_MUL_EQUAL","T_DIV_EQUAL","T_CONCAT_EQUAL","T_MOD_EQUAL","T_AND_EQUAL","T_OR_EQUAL","T_XOR_EQUAL","T_SL_EQUAL","T_SR_EQUAL","T_BOOLEAN_OR","T_BOOLEAN_AND","T_IS_EQUAL","T_IS_NOT_EQUAL","T_IS_IDENTICAL","T_IS_NOT_IDENTICAL","T_IS_SMALLER_OR_EQUAL","T_IS_GREATER_OR_EQUAL","T_SL","T_SR","T_INSTANCEOF","T_INC","T_DEC","T_INT_CAST","T_DOUBLE_CAST","T_STRING_CAST","T_ARRAY_CAST","T_OBJECT_CAST","T_BOOL_CAST","T_UNSET_CAST","T_NEW","T_CLONE","T_EXIT","T_IF","T_ELSEIF","T_ELSE","T_ENDIF","T_LNUMBER","T_DNUMBER","T_STRING","T_STRING_VARNAME","T_VARIABLE","T_NUM_STRING","T_INLINE_HTML","T_CHARACTER","T_BAD_CHARACTER","T_ENCAPSED_AND_WHITESPACE","T_CONSTANT_ENCAPSED_STRING","T_ECHO","T_DO","T_WHILE","T_ENDWHILE","T_FOR","T_ENDFOR","T_FOREACH","T_ENDFOREACH","T_DECLARE","T_ENDDECLARE","T_AS","T_SWITCH","T_ENDSWITCH","T_CASE","T_DEFAULT","T_BREAK","T_CONTINUE","T_GOTO","T_FUNCTION","T_CONST","T_RETURN","T_TRY","T_CATCH","T_THROW","T_USE","T_INSTEADOF","T_GLOBAL","T_STATIC","T_ABSTRACT","T_FINAL","T_PRIVATE","T_PROTECTED","T_PUBLIC","T_VAR","T_UNSET","T_ISSET","T_EMPTY","T_HALT_COMPILER","T_CLASS","T_TRAIT","T_INTERFACE","T_EXTENDS","T_IMPLEMENTS","T_OBJECT_OPERATOR","T_DOUBLE_ARROW","T_LIST","T_ARRAY","T_CALLABLE","T_CLASS_C","T_TRAIT_C","T_METHOD_C","T_FUNC_C","T_LINE","T_FILE","T_COMMENT","T_DOC_COMMENT","T_OPEN_TAG","T_OPEN_TAG_WITH_ECHO","T_CLOSE_TAG","T_WHITESPACE","T_START_HEREDOC","T_END_HEREDOC","T_DOLLAR_OPEN_CURLY_BRACES","T_CURLY_OPEN","T_PAAMAYIM_NEKUDOTAYIM","T_DOUBLE_COLON","T_NAMESPACE","T_NS_C","T_DIR","T_NS_SEPARATOR"]; + var constants = ["T_INCLUDE","T_INCLUDE_ONCE","T_EVAL","T_REQUIRE","T_REQUIRE_ONCE","T_LOGICAL_OR","T_LOGICAL_XOR","T_LOGICAL_AND","T_PRINT","T_YIELD","T_DOUBLE_ARROW","T_YIELD_FROM","T_PLUS_EQUAL","T_MINUS_EQUAL","T_MUL_EQUAL","T_DIV_EQUAL","T_CONCAT_EQUAL","T_MOD_EQUAL","T_AND_EQUAL","T_OR_EQUAL","T_XOR_EQUAL","T_SL_EQUAL","T_SR_EQUAL","T_POW_EQUAL","T_COALESCE","T_BOOLEAN_OR","T_BOOLEAN_AND","T_IS_EQUAL","T_IS_NOT_EQUAL","T_IS_IDENTICAL","T_IS_NOT_IDENTICAL","T_SPACESHIP","T_IS_SMALLER_OR_EQUAL","T_IS_GREATER_OR_EQUAL","T_SL","T_SR","T_INSTANCEOF","T_INC","T_DEC","T_INT_CAST","T_DOUBLE_CAST","T_STRING_CAST","T_ARRAY_CAST","T_OBJECT_CAST","T_BOOL_CAST","T_UNSET_CAST","T_POW","T_NEW","T_CLONE","T_EXIT","T_IF","T_ELSEIF","T_ELSE","T_ENDIF","T_LNUMBER","T_DNUMBER","T_STRING","T_STRING_VARNAME","T_VARIABLE","T_NUM_STRING","T_INLINE_HTML","T_CHARACTER","T_BAD_CHARACTER","T_ENCAPSED_AND_WHITESPACE","T_CONSTANT_ENCAPSED_STRING","T_ECHO","T_DO","T_WHILE","T_ENDWHILE","T_FOR","T_ENDFOR","T_FOREACH","T_ENDFOREACH","T_DECLARE","T_ENDDECLARE","T_AS","T_SWITCH","T_ENDSWITCH","T_CASE","T_DEFAULT","T_BREAK","T_CONTINUE","T_GOTO","T_FUNCTION","T_CONST","T_RETURN","T_TRY","T_CATCH","T_FINALLY","T_THROW","T_USE","T_INSTEADOF","T_GLOBAL","T_STATIC","T_ABSTRACT","T_FINAL","T_PRIVATE","T_PROTECTED","T_PUBLIC","T_VAR","T_UNSET","T_ISSET","T_EMPTY","T_HALT_COMPILER","T_CLASS","T_TRAIT","T_INTERFACE","T_EXTENDS","T_IMPLEMENTS","T_OBJECT_OPERATOR","T_DOUBLE_ARROW","T_LIST","T_ARRAY","T_CALLABLE","T_CLASS_C","T_TRAIT_C","T_METHOD_C","T_FUNC_C","T_LINE","T_FILE","T_COMMENT","T_DOC_COMMENT","T_OPEN_TAG","T_OPEN_TAG_WITH_ECHO","T_CLOSE_TAG","T_WHITESPACE","T_START_HEREDOC","T_END_HEREDOC","T_DOLLAR_OPEN_CURLY_BRACES","T_CURLY_OPEN","T_PAAMAYIM_NEKUDOTAYIM","T_NAMESPACE","T_NS_C","T_DIR","T_NS_SEPARATOR","T_ELLIPSIS"]; var current = "UNKNOWN"; constants.some(function( constant ) { if (PHP.Constants[ constant ] === token) { @@ -2574,11 +2631,8 @@ PHP.Parser.prototype.createTokenMap = function() { var tokenMap = {}, name, i; - var T_DOUBLE_COLON = PHP.Constants.T_PAAMAYIM_NEKUDOTAYIM; for ( i = 256; i < 1000; ++i ) { - if ( T_DOUBLE_COLON === i ) { - tokenMap[ i ] = this.T_PAAMAYIM_NEKUDOTAYIM; - } else if( PHP.Constants.T_OPEN_TAG_WITH_ECHO === i ) { + if( PHP.Constants.T_OPEN_TAG_WITH_ECHO === i ) { tokenMap[ i ] = PHP.Constants.T_ECHO; } else if( PHP.Constants.T_CLOSE_TAG === i ) { tokenMap[ i ] = 59; @@ -2589,79 +2643,15 @@ PHP.Parser.prototype.createTokenMap = function() { return tokenMap; }; -var yynStandard = function () { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.MakeArray = function( arr ) { - return Array.isArray( arr ) ? arr : [ arr ]; -} - - -PHP.Parser.prototype.parseString = function( str ) { - var bLength = 0; - if ('b' === str[0]) { - bLength = 1; - } - - if ('\'' === str[ bLength ]) { - str = str.replace( - ['\\\\', '\\\''], - [ '\\', '\'']); - } else { - - str = this.parseEscapeSequences( str, '"'); - - } - - return str; - -}; - -PHP.Parser.prototype.parseEscapeSequences = function( str, quote ) { - - - - if (undefined !== quote) { - str = str.replace(new RegExp('\\' + quote, "g"), quote); - } - - var replacements = { - '\\': '\\', - '$': '$', - 'n': "\n", - 'r': "\r", - 't': "\t", - 'f': "\f", - 'v': "\v", - 'e': "\x1B" - }; - - return str.replace( - /~\\\\([\\\\$nrtfve]|[xX][0-9a-fA-F]{1,2}|[0-7]{1,3})~/g, - function ( matches ){ - var str = matches[1]; - - if ( replacements[ str ] !== undefined ) { - return replacements[ str ]; - } else if ('x' === str[ 0 ] || 'X' === str[ 0 ]) { - return chr(hexdec(str)); - } else { - return chr(octdec(str)); - } - } - ); -}; - PHP.Parser.prototype.TOKEN_NONE = -1; -PHP.Parser.prototype.TOKEN_INVALID = 149; +PHP.Parser.prototype.TOKEN_INVALID = 157; -PHP.Parser.prototype.TOKEN_MAP_SIZE = 384; +PHP.Parser.prototype.TOKEN_MAP_SIZE = 392; -PHP.Parser.prototype.YYLAST = 913; -PHP.Parser.prototype.YY2TBLSTATE = 328; -PHP.Parser.prototype.YYGLAST = 415; -PHP.Parser.prototype.YYNLSTATES = 544; +PHP.Parser.prototype.YYLAST = 889; +PHP.Parser.prototype.YY2TBLSTATE = 337; +PHP.Parser.prototype.YYGLAST = 410; +PHP.Parser.prototype.YYNLSTATES = 564; PHP.Parser.prototype.YYUNEXPECTED = 32767; PHP.Parser.prototype.YYDEFAULT = -32766; PHP.Parser.prototype.YYERRTOK = 256; @@ -2674,124 +2664,132 @@ PHP.Parser.prototype.T_LOGICAL_OR = 262; PHP.Parser.prototype.T_LOGICAL_XOR = 263; PHP.Parser.prototype.T_LOGICAL_AND = 264; PHP.Parser.prototype.T_PRINT = 265; -PHP.Parser.prototype.T_PLUS_EQUAL = 266; -PHP.Parser.prototype.T_MINUS_EQUAL = 267; -PHP.Parser.prototype.T_MUL_EQUAL = 268; -PHP.Parser.prototype.T_DIV_EQUAL = 269; -PHP.Parser.prototype.T_CONCAT_EQUAL = 270; -PHP.Parser.prototype.T_MOD_EQUAL = 271; -PHP.Parser.prototype.T_AND_EQUAL = 272; -PHP.Parser.prototype.T_OR_EQUAL = 273; -PHP.Parser.prototype.T_XOR_EQUAL = 274; -PHP.Parser.prototype.T_SL_EQUAL = 275; -PHP.Parser.prototype.T_SR_EQUAL = 276; -PHP.Parser.prototype.T_BOOLEAN_OR = 277; -PHP.Parser.prototype.T_BOOLEAN_AND = 278; -PHP.Parser.prototype.T_IS_EQUAL = 279; -PHP.Parser.prototype.T_IS_NOT_EQUAL = 280; -PHP.Parser.prototype.T_IS_IDENTICAL = 281; -PHP.Parser.prototype.T_IS_NOT_IDENTICAL = 282; -PHP.Parser.prototype.T_IS_SMALLER_OR_EQUAL = 283; -PHP.Parser.prototype.T_IS_GREATER_OR_EQUAL = 284; -PHP.Parser.prototype.T_SL = 285; -PHP.Parser.prototype.T_SR = 286; -PHP.Parser.prototype.T_INSTANCEOF = 287; -PHP.Parser.prototype.T_INC = 288; -PHP.Parser.prototype.T_DEC = 289; -PHP.Parser.prototype.T_INT_CAST = 290; -PHP.Parser.prototype.T_DOUBLE_CAST = 291; -PHP.Parser.prototype.T_STRING_CAST = 292; -PHP.Parser.prototype.T_ARRAY_CAST = 293; -PHP.Parser.prototype.T_OBJECT_CAST = 294; -PHP.Parser.prototype.T_BOOL_CAST = 295; -PHP.Parser.prototype.T_UNSET_CAST = 296; -PHP.Parser.prototype.T_NEW = 297; -PHP.Parser.prototype.T_CLONE = 298; -PHP.Parser.prototype.T_EXIT = 299; -PHP.Parser.prototype.T_IF = 300; -PHP.Parser.prototype.T_ELSEIF = 301; -PHP.Parser.prototype.T_ELSE = 302; -PHP.Parser.prototype.T_ENDIF = 303; -PHP.Parser.prototype.T_LNUMBER = 304; -PHP.Parser.prototype.T_DNUMBER = 305; -PHP.Parser.prototype.T_STRING = 306; -PHP.Parser.prototype.T_STRING_VARNAME = 307; -PHP.Parser.prototype.T_VARIABLE = 308; -PHP.Parser.prototype.T_NUM_STRING = 309; -PHP.Parser.prototype.T_INLINE_HTML = 310; -PHP.Parser.prototype.T_CHARACTER = 311; -PHP.Parser.prototype.T_BAD_CHARACTER = 312; -PHP.Parser.prototype.T_ENCAPSED_AND_WHITESPACE = 313; -PHP.Parser.prototype.T_CONSTANT_ENCAPSED_STRING = 314; -PHP.Parser.prototype.T_ECHO = 315; -PHP.Parser.prototype.T_DO = 316; -PHP.Parser.prototype.T_WHILE = 317; -PHP.Parser.prototype.T_ENDWHILE = 318; -PHP.Parser.prototype.T_FOR = 319; -PHP.Parser.prototype.T_ENDFOR = 320; -PHP.Parser.prototype.T_FOREACH = 321; -PHP.Parser.prototype.T_ENDFOREACH = 322; -PHP.Parser.prototype.T_DECLARE = 323; -PHP.Parser.prototype.T_ENDDECLARE = 324; -PHP.Parser.prototype.T_AS = 325; -PHP.Parser.prototype.T_SWITCH = 326; -PHP.Parser.prototype.T_ENDSWITCH = 327; -PHP.Parser.prototype.T_CASE = 328; -PHP.Parser.prototype.T_DEFAULT = 329; -PHP.Parser.prototype.T_BREAK = 330; -PHP.Parser.prototype.T_CONTINUE = 331; -PHP.Parser.prototype.T_GOTO = 332; -PHP.Parser.prototype.T_FUNCTION = 333; -PHP.Parser.prototype.T_CONST = 334; -PHP.Parser.prototype.T_RETURN = 335; -PHP.Parser.prototype.T_TRY = 336; -PHP.Parser.prototype.T_CATCH = 337; -PHP.Parser.prototype.T_THROW = 338; -PHP.Parser.prototype.T_USE = 339; -PHP.Parser.prototype.T_INSTEADOF = 340; -PHP.Parser.prototype.T_GLOBAL = 341; -PHP.Parser.prototype.T_STATIC = 342; -PHP.Parser.prototype.T_ABSTRACT = 343; -PHP.Parser.prototype.T_FINAL = 344; -PHP.Parser.prototype.T_PRIVATE = 345; -PHP.Parser.prototype.T_PROTECTED = 346; -PHP.Parser.prototype.T_PUBLIC = 347; -PHP.Parser.prototype.T_VAR = 348; -PHP.Parser.prototype.T_UNSET = 349; -PHP.Parser.prototype.T_ISSET = 350; -PHP.Parser.prototype.T_EMPTY = 351; -PHP.Parser.prototype.T_HALT_COMPILER = 352; -PHP.Parser.prototype.T_CLASS = 353; -PHP.Parser.prototype.T_TRAIT = 354; -PHP.Parser.prototype.T_INTERFACE = 355; -PHP.Parser.prototype.T_EXTENDS = 356; -PHP.Parser.prototype.T_IMPLEMENTS = 357; -PHP.Parser.prototype.T_OBJECT_OPERATOR = 358; -PHP.Parser.prototype.T_DOUBLE_ARROW = 359; -PHP.Parser.prototype.T_LIST = 360; -PHP.Parser.prototype.T_ARRAY = 361; -PHP.Parser.prototype.T_CALLABLE = 362; -PHP.Parser.prototype.T_CLASS_C = 363; -PHP.Parser.prototype.T_TRAIT_C = 364; -PHP.Parser.prototype.T_METHOD_C = 365; -PHP.Parser.prototype.T_FUNC_C = 366; -PHP.Parser.prototype.T_LINE = 367; -PHP.Parser.prototype.T_FILE = 368; -PHP.Parser.prototype.T_COMMENT = 369; -PHP.Parser.prototype.T_DOC_COMMENT = 370; -PHP.Parser.prototype.T_OPEN_TAG = 371; -PHP.Parser.prototype.T_OPEN_TAG_WITH_ECHO = 372; -PHP.Parser.prototype.T_CLOSE_TAG = 373; -PHP.Parser.prototype.T_WHITESPACE = 374; -PHP.Parser.prototype.T_START_HEREDOC = 375; -PHP.Parser.prototype.T_END_HEREDOC = 376; -PHP.Parser.prototype.T_DOLLAR_OPEN_CURLY_BRACES = 377; -PHP.Parser.prototype.T_CURLY_OPEN = 378; -PHP.Parser.prototype.T_PAAMAYIM_NEKUDOTAYIM = 379; -PHP.Parser.prototype.T_NAMESPACE = 380; -PHP.Parser.prototype.T_NS_C = 381; -PHP.Parser.prototype.T_DIR = 382; -PHP.Parser.prototype.T_NS_SEPARATOR = 383; +PHP.Parser.prototype.T_YIELD = 266; +PHP.Parser.prototype.T_DOUBLE_ARROW = 267; +PHP.Parser.prototype.T_YIELD_FROM = 268; +PHP.Parser.prototype.T_PLUS_EQUAL = 269; +PHP.Parser.prototype.T_MINUS_EQUAL = 270; +PHP.Parser.prototype.T_MUL_EQUAL = 271; +PHP.Parser.prototype.T_DIV_EQUAL = 272; +PHP.Parser.prototype.T_CONCAT_EQUAL = 273; +PHP.Parser.prototype.T_MOD_EQUAL = 274; +PHP.Parser.prototype.T_AND_EQUAL = 275; +PHP.Parser.prototype.T_OR_EQUAL = 276; +PHP.Parser.prototype.T_XOR_EQUAL = 277; +PHP.Parser.prototype.T_SL_EQUAL = 278; +PHP.Parser.prototype.T_SR_EQUAL = 279; +PHP.Parser.prototype.T_POW_EQUAL = 280; +PHP.Parser.prototype.T_COALESCE = 281; +PHP.Parser.prototype.T_BOOLEAN_OR = 282; +PHP.Parser.prototype.T_BOOLEAN_AND = 283; +PHP.Parser.prototype.T_IS_EQUAL = 284; +PHP.Parser.prototype.T_IS_NOT_EQUAL = 285; +PHP.Parser.prototype.T_IS_IDENTICAL = 286; +PHP.Parser.prototype.T_IS_NOT_IDENTICAL = 287; +PHP.Parser.prototype.T_SPACESHIP = 288; +PHP.Parser.prototype.T_IS_SMALLER_OR_EQUAL = 289; +PHP.Parser.prototype.T_IS_GREATER_OR_EQUAL = 290; +PHP.Parser.prototype.T_SL = 291; +PHP.Parser.prototype.T_SR = 292; +PHP.Parser.prototype.T_INSTANCEOF = 293; +PHP.Parser.prototype.T_INC = 294; +PHP.Parser.prototype.T_DEC = 295; +PHP.Parser.prototype.T_INT_CAST = 296; +PHP.Parser.prototype.T_DOUBLE_CAST = 297; +PHP.Parser.prototype.T_STRING_CAST = 298; +PHP.Parser.prototype.T_ARRAY_CAST = 299; +PHP.Parser.prototype.T_OBJECT_CAST = 300; +PHP.Parser.prototype.T_BOOL_CAST = 301; +PHP.Parser.prototype.T_UNSET_CAST = 302; +PHP.Parser.prototype.T_POW = 303; +PHP.Parser.prototype.T_NEW = 304; +PHP.Parser.prototype.T_CLONE = 305; +PHP.Parser.prototype.T_EXIT = 306; +PHP.Parser.prototype.T_IF = 307; +PHP.Parser.prototype.T_ELSEIF = 308; +PHP.Parser.prototype.T_ELSE = 309; +PHP.Parser.prototype.T_ENDIF = 310; +PHP.Parser.prototype.T_LNUMBER = 311; +PHP.Parser.prototype.T_DNUMBER = 312; +PHP.Parser.prototype.T_STRING = 313; +PHP.Parser.prototype.T_STRING_VARNAME = 314; +PHP.Parser.prototype.T_VARIABLE = 315; +PHP.Parser.prototype.T_NUM_STRING = 316; +PHP.Parser.prototype.T_INLINE_HTML = 317; +PHP.Parser.prototype.T_CHARACTER = 318; +PHP.Parser.prototype.T_BAD_CHARACTER = 319; +PHP.Parser.prototype.T_ENCAPSED_AND_WHITESPACE = 320; +PHP.Parser.prototype.T_CONSTANT_ENCAPSED_STRING = 321; +PHP.Parser.prototype.T_ECHO = 322; +PHP.Parser.prototype.T_DO = 323; +PHP.Parser.prototype.T_WHILE = 324; +PHP.Parser.prototype.T_ENDWHILE = 325; +PHP.Parser.prototype.T_FOR = 326; +PHP.Parser.prototype.T_ENDFOR = 327; +PHP.Parser.prototype.T_FOREACH = 328; +PHP.Parser.prototype.T_ENDFOREACH = 329; +PHP.Parser.prototype.T_DECLARE = 330; +PHP.Parser.prototype.T_ENDDECLARE = 331; +PHP.Parser.prototype.T_AS = 332; +PHP.Parser.prototype.T_SWITCH = 333; +PHP.Parser.prototype.T_ENDSWITCH = 334; +PHP.Parser.prototype.T_CASE = 335; +PHP.Parser.prototype.T_DEFAULT = 336; +PHP.Parser.prototype.T_BREAK = 337; +PHP.Parser.prototype.T_CONTINUE = 338; +PHP.Parser.prototype.T_GOTO = 339; +PHP.Parser.prototype.T_FUNCTION = 340; +PHP.Parser.prototype.T_CONST = 341; +PHP.Parser.prototype.T_RETURN = 342; +PHP.Parser.prototype.T_TRY = 343; +PHP.Parser.prototype.T_CATCH = 344; +PHP.Parser.prototype.T_FINALLY = 345; +PHP.Parser.prototype.T_THROW = 346; +PHP.Parser.prototype.T_USE = 347; +PHP.Parser.prototype.T_INSTEADOF = 348; +PHP.Parser.prototype.T_GLOBAL = 349; +PHP.Parser.prototype.T_STATIC = 350; +PHP.Parser.prototype.T_ABSTRACT = 351; +PHP.Parser.prototype.T_FINAL = 352; +PHP.Parser.prototype.T_PRIVATE = 353; +PHP.Parser.prototype.T_PROTECTED = 354; +PHP.Parser.prototype.T_PUBLIC = 355; +PHP.Parser.prototype.T_VAR = 356; +PHP.Parser.prototype.T_UNSET = 357; +PHP.Parser.prototype.T_ISSET = 358; +PHP.Parser.prototype.T_EMPTY = 359; +PHP.Parser.prototype.T_HALT_COMPILER = 360; +PHP.Parser.prototype.T_CLASS = 361; +PHP.Parser.prototype.T_TRAIT = 362; +PHP.Parser.prototype.T_INTERFACE = 363; +PHP.Parser.prototype.T_EXTENDS = 364; +PHP.Parser.prototype.T_IMPLEMENTS = 365; +PHP.Parser.prototype.T_OBJECT_OPERATOR = 366; +PHP.Parser.prototype.T_LIST = 367; +PHP.Parser.prototype.T_ARRAY = 368; +PHP.Parser.prototype.T_CALLABLE = 369; +PHP.Parser.prototype.T_CLASS_C = 370; +PHP.Parser.prototype.T_TRAIT_C = 371; +PHP.Parser.prototype.T_METHOD_C = 372; +PHP.Parser.prototype.T_FUNC_C = 373; +PHP.Parser.prototype.T_LINE = 374; +PHP.Parser.prototype.T_FILE = 375; +PHP.Parser.prototype.T_COMMENT = 376; +PHP.Parser.prototype.T_DOC_COMMENT = 377; +PHP.Parser.prototype.T_OPEN_TAG = 378; +PHP.Parser.prototype.T_OPEN_TAG_WITH_ECHO = 379; +PHP.Parser.prototype.T_CLOSE_TAG = 380; +PHP.Parser.prototype.T_WHITESPACE = 381; +PHP.Parser.prototype.T_START_HEREDOC = 382; +PHP.Parser.prototype.T_END_HEREDOC = 383; +PHP.Parser.prototype.T_DOLLAR_OPEN_CURLY_BRACES = 384; +PHP.Parser.prototype.T_CURLY_OPEN = 385; +PHP.Parser.prototype.T_PAAMAYIM_NEKUDOTAYIM = 386; +PHP.Parser.prototype.T_NAMESPACE = 387; +PHP.Parser.prototype.T_NS_C = 388; +PHP.Parser.prototype.T_DIR = 389; +PHP.Parser.prototype.T_NS_SEPARATOR = 390; +PHP.Parser.prototype.T_ELLIPSIS = 391; PHP.Parser.prototype.terminals = [ "$EOF", "error", @@ -2805,6 +2803,9 @@ PHP.Parser.prototype.terminals = [ "T_LOGICAL_XOR", "T_LOGICAL_AND", "T_PRINT", + "T_YIELD", + "T_DOUBLE_ARROW", + "T_YIELD_FROM", "'='", "T_PLUS_EQUAL", "T_MINUS_EQUAL", @@ -2817,8 +2818,10 @@ PHP.Parser.prototype.terminals = [ "T_XOR_EQUAL", "T_SL_EQUAL", "T_SR_EQUAL", + "T_POW_EQUAL", "'?'", "':'", + "T_COALESCE", "T_BOOLEAN_OR", "T_BOOLEAN_AND", "'|'", @@ -2828,6 +2831,7 @@ PHP.Parser.prototype.terminals = [ "T_IS_NOT_EQUAL", "T_IS_IDENTICAL", "T_IS_NOT_IDENTICAL", + "T_SPACESHIP", "'<'", "T_IS_SMALLER_OR_EQUAL", "'>'", @@ -2853,6 +2857,7 @@ PHP.Parser.prototype.terminals = [ "T_BOOL_CAST", "T_UNSET_CAST", "'@'", + "T_POW", "'['", "T_NEW", "T_CLONE", @@ -2893,6 +2898,7 @@ PHP.Parser.prototype.terminals = [ "T_RETURN", "T_TRY", "T_CATCH", + "T_FINALLY", "T_THROW", "T_USE", "T_INSTEADOF", @@ -2914,7 +2920,6 @@ PHP.Parser.prototype.terminals = [ "T_EXTENDS", "T_IMPLEMENTS", "T_OBJECT_OPERATOR", - "T_DOUBLE_ARROW", "T_LIST", "T_ARRAY", "T_CALLABLE", @@ -2933,348 +2938,346 @@ PHP.Parser.prototype.terminals = [ "T_NS_C", "T_DIR", "T_NS_SEPARATOR", + "T_ELLIPSIS", "';'", "'{'", "'}'", "'('", "')'", - "'$'", - "']'", "'`'", - "'\"'" + "']'", + "'\"'", + "'$'" , "???" ]; PHP.Parser.prototype.translate = [ - 0, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 47, 148, 149, 145, 46, 30, 149, - 143, 144, 44, 41, 7, 42, 43, 45, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 25, 140, - 35, 12, 37, 24, 59, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 60, 149, 146, 29, 149, 147, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 141, 28, 142, 49, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, - 149, 149, 149, 149, 149, 149, 1, 2, 3, 4, - 5, 6, 8, 9, 10, 11, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 26, 27, 31, - 32, 33, 34, 36, 38, 39, 40, 48, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 149, 149, 75, 76, 77, 78, 79, 80, 81, + 0, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 53, 155, 157, 156, 52, 35, 157, + 151, 152, 50, 47, 7, 48, 49, 51, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 29, 148, + 41, 15, 43, 28, 65, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 67, 157, 154, 34, 157, 153, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 149, 33, 150, 55, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, + 157, 157, 157, 157, 157, 157, 1, 2, 3, 4, + 5, 6, 8, 9, 10, 11, 12, 13, 14, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 30, 31, 32, 36, 37, 38, 39, 40, 42, + 44, 45, 46, 54, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 66, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 157, 157, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 149, - 149, 149, 149, 149, 149, 131, 132, 133, 134, 135, - 136, 137, 138, 139 + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 157, 157, 157, 157, + 157, 157, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147 ]; PHP.Parser.prototype.yyaction = [ - 61, 62, 363, 63, 64,-32766,-32766,-32766, 509, 65, - 708, 709, 710, 707, 706, 705,-32766,-32766,-32766,-32766, - -32766,-32766, 132,-32766,-32766,-32766,-32766,-32766,-32767,-32767, - -32767,-32767,-32766, 335,-32766,-32766,-32766,-32766,-32766, 66, - 67, 351, 663, 664, 40, 68, 548, 69, 232, 233, - 70, 71, 72, 73, 74, 75, 76, 77, 30, 246, - 78, 336, 364, -112, 0, 469, 833, 834, 365, 641, - 890, 436, 590, 41, 835, 53, 27, 366, 294, 367, - 687, 368, 921, 369, 923, 922, 370,-32766,-32766,-32766, - 42, 43, 371, 339, 126, 44, 372, 337, 79, 297, - 349, 292, 293,-32766, 918,-32766,-32766, 373, 374, 375, - 376, 377, 391, 199, 361, 338, 573, 613, 378, 379, - 380, 381, 845, 839, 840, 841, 842, 836, 837, 253, - -32766, 87, 88, 89, 391, 843, 838, 338, 597, 519, - 128, 80, 129, 273, 332, 257, 261, 47, 673, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 799, 247, 884, 108, 109, 110, 226, 247, 21,-32766, - 310,-32766,-32766,-32766, 642, 548,-32766,-32766,-32766,-32766, - 56, 353,-32766,-32766,-32766, 55,-32766,-32766,-32766,-32766, - -32766, 58,-32766,-32766,-32766,-32766,-32766,-32766,-32766,-32766, - -32766, 557,-32766,-32766, 518,-32766, 548, 890,-32766, 390, - -32766, 228, 252,-32766,-32766,-32766,-32766,-32766, 275,-32766, - 234,-32766, 587, 588,-32766,-32766,-32766,-32766,-32766,-32766, - -32766, 46, 236,-32766,-32766, 281,-32766, 682, 348,-32766, - 390,-32766, 346, 333, 521,-32766,-32766,-32766, 271, 911, - 262, 237, 446, 911,-32766, 894, 59, 700, 358, 135, - 548, 123, 538, 35,-32766, 333, 122,-32766,-32766,-32766, - 271,-32766, 124,-32766, 692,-32766,-32766,-32766,-32766, 700, - 273, 22,-32766,-32766,-32766,-32766, 239,-32766,-32766, 612, - -32766, 548, 134,-32766, 390,-32766, 462, 354,-32766,-32766, - -32766,-32766,-32766, 227,-32766, 238,-32766, 845, 542,-32766, - 856, 611, 200,-32766,-32766,-32766, 259, 280,-32766,-32766, - 201,-32766, 855, 129,-32766, 390, 130, 202, 333, 206, - -32766,-32766,-32766, 271,-32766,-32766,-32766, 125, 601,-32766, - 136, 299, 700, 489, 28, 548, 105, 106, 107,-32766, - 498, 499,-32766,-32766,-32766, 207,-32766, 133,-32766, 525, - -32766,-32766,-32766,-32766, 663, 664, 527,-32766,-32766,-32766, - -32766, 528,-32766,-32766, 610,-32766, 548, 427,-32766, 390, - -32766, 532, 539,-32766,-32766,-32766,-32766,-32766, 240,-32766, - 247,-32766, 697, 543,-32766, 554, 523, 608,-32766,-32766, - -32766, 686, 535,-32766,-32766, 54,-32766, 57, 60,-32766, - 390, 246, -155, 278, 345,-32766,-32766,-32766, 506, 347, - -152, 471, 402, 403,-32766, 405, 404, 272, 493, 416, - 548, 318, 417, 505,-32766, 517, 548,-32766,-32766,-32766, - 549,-32766, 562,-32766, 916,-32766,-32766,-32766,-32766, 564, - 826, 848,-32766,-32766,-32766,-32766, 694,-32766,-32766, 485, - -32766, 548, 487,-32766, 390,-32766, 504, 802,-32766,-32766, - -32766,-32766,-32766, 279,-32766, 911,-32766, 502, 492,-32766, - 413, 483, 269,-32766,-32766,-32766, 243, 337,-32766,-32766, - 418,-32766, 454, 229,-32766, 390, 274, 373, 374, 344, - -32766,-32766,-32766, 360, 614,-32766, 573, 613, 378, 379, - -274, 548, 615, -332, 844,-32766, 258, 51,-32766,-32766, - -32766, 270,-32766, 346,-32766, 52,-32766, 260, 0,-32766, - -333,-32766,-32766,-32766,-32766,-32766,-32766, 205,-32766,-32766, - 49,-32766, 548, 424,-32766, 390,-32766, -266, 264,-32766, - -32766,-32766,-32766,-32766, 409,-32766, 343,-32766, 265, 312, - -32766, 470, 513, -275,-32766,-32766,-32766, 920, 337,-32766, - -32766, 530,-32766, 531, 600,-32766, 390, 592, 373, 374, - 578, 581,-32766,-32766, 644, 629,-32766, 573, 613, 378, - 379, 635, 548, 636, 576, 627,-32766, 625, 693,-32766, - -32766,-32766, 691,-32766, 591,-32766, 582,-32766, 203, 204, - -32766, 584, 583,-32766,-32766,-32766,-32766, 586, 599,-32766, - -32766, 589,-32766, 690, 558,-32766, 390, 197, 683, 919, - 86, 520, 522,-32766, 524, 833, 834, 529, 533,-32766, - 534, 537, 541, 835, 48, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 127, 31, 633, 337, - 330, 634, 585,-32766, 32, 291, 337, 330, 478, 373, - 374, 917, 291, 891, 889, 875, 373, 374, 553, 613, - 378, 379, 737, 739, 887, 553, 613, 378, 379, 824, - 451, 675, 839, 840, 841, 842, 836, 837, 320, 895, - 277, 885, 23, 33, 843, 838, 556, 277, 337, 330, - -32766, 34,-32766, 555, 291, 36, 37, 38, 373, 374, - 39, 45, 50, 81, 82, 83, 84, 553, 613, 378, - 379,-32767,-32767,-32767,-32767, 103, 104, 105, 106, 107, - 337, 85, 131, 137, 337, 138, 198, 224, 225, 277, - 373, 374, -332, 230, 373, 374, 24, 337, 231, 573, - 613, 378, 379, 573, 613, 378, 379, 373, 374, 235, - 248, 249, 250, 337, 251, 0, 573, 613, 378, 379, - 276, 329, 331, 373, 374,-32766, 337, 574, 490, 792, - 337, 609, 573, 613, 378, 379, 373, 374, 25, 300, - 373, 374, 319, 337, 795, 573, 613, 378, 379, 573, - 613, 378, 379, 373, 374, 516, 355, 359, 445, 482, - 796, 507, 573, 613, 378, 379, 508, 548, 337, 890, - 775, 791, 337, 604, 803, 808, 806, 698, 373, 374, - 888, 807, 373, 374,-32766,-32766,-32766, 573, 613, 378, - 379, 573, 613, 378, 379, 873, 832, 804, 872, 851, - -32766, 809,-32766,-32766,-32766,-32766, 805, 20, 26, 29, - 298, 480, 515, 770, 778, 827, 457, 0, 900, 455, - 774, 0, 0, 0, 874, 870, 886, 823, 915, 852, - 869, 488, 0, 391, 793, 0, 338, 0, 0, 0, - 340, 0, 273 + 569, 570, 571, 572, 573, 215, 574, 575, 576, 612, + 613, 0, 27, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110,-32766,-32766,-32766, 95, 96, + 97, 24, 240, 226, -267,-32766,-32766,-32766,-32766,-32766, + -32766, 530, 344, 114, 98,-32766, 286,-32766,-32766,-32766, + -32766,-32766, 577, 870, 872,-32766,-32766,-32766,-32766,-32766, + -32766,-32766,-32766, 224,-32766, 714, 578, 579, 580, 581, + 582, 583, 584,-32766, 264, 644, 840, 841, 842, 839, + 838, 837, 585, 586, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 615, 616, 617, 618, 619, 607, 608, + 609, 610, 611, 596, 597, 598, 599, 600, 601, 602, + 638, 639, 640, 641, 642, 643, 603, 604, 605, 606, + 636, 627, 625, 626, 622, 623, 116, 614, 620, 621, + 628, 629, 631, 630, 632, 633, 42, 43, 381, 44, + 45, 624, 635, 634, -214, 46, 47, 289, 48,-32767, + -32767,-32767,-32767, 90, 91, 92, 93, 94, 267, 241, + 22, 840, 841, 842, 839, 838, 837, 832,-32766,-32766, + -32766, 306, 1000, 1000, 1037, 120, 966, 436, -423, 244, + 797, 49, 50, 660, 661, 272, 362, 51,-32766, 52, + 219, 220, 53, 54, 55, 56, 57, 58, 59, 60, + 1016, 22, 238, 61, 351, 945,-32766,-32766,-32766, 967, + 968, 646, 705, 1000, 28, -456, 125, 966,-32766,-32766, + -32766, 715, 398, 399, 216, 1000,-32766, 339,-32766,-32766, + -32766,-32766, 25, 222, 980, 552, 355, 378,-32766, -423, + -32766,-32766,-32766, 121, 65, 1045, 408, 1047, 1046, 274, + 274, 131, 244, -423, 394, 395, 358, 519, 945, 537, + -423, 111, -426, 398, 399, 130, 972, 973, 974, 975, + 969, 970, 243, 128, -422, -421, 1013, 409, 976, 971, + 353, 791, 792, 7, -162, 63, 124, 255, 701, 256, + 274, 382, -122, -122, -122, -4, 715, 383, 646, 1042, + -421, 704, 274, -219, 33, 17, 384, -122, 385, -122, + 386, -122, 387, -122, 369, 388, -122, -122, -122, 34, + 35, 389, 352, 520, 36, 390, 353, 702, 62, 112, + 818, 287, 288, 391, 392, -422, -421, -161, 350, 393, + 40, 38, 690, 735, 396, 397, 361, 22, 122, -422, + -421,-32766,-32766,-32766, 791, 792, -422, -421, -425, 1000, + -456, -421, -238, 966, 409, 41, 382, 353, 717, 535, + -122,-32766, 383,-32766,-32766, -421, 704, 21, 813, 33, + 17, 384, -421, 385, -466, 386, 224, 387, -467, 273, + 388, 367, 945, -458, 34, 35, 389, 352, 345, 36, + 390, 248, 247, 62, 254, 715, 287, 288, 391, 392, + 399,-32766,-32766,-32766, 393, 295, 1000, 652, 735, 396, + 397, 117, 115, 113, 814, 119, 72, 73, 74, -162, + 764, 65, 240, 541, 370, 518, 274, 118, 270, 92, + 93, 94, 242, 717, 535, -4, 26, 1000, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 547, 240, 713, 715, 382, 276,-32766,-32766, 126, + 945, 383, -161, 938, 98, 704, 225, 659, 33, 17, + 384, 346, 385, 274, 386, 728, 387, 221, 120, 388, + 505, 506, 540, 34, 35, 389, 715, -238, 36, 390, + 1017, 223, 62, 494, 18, 287, 288, 127, 297, 376, + 6, 98, 798, 393, 274, 660, 661, 490, 491, -466, + 39, -466, 514, -467, 539, -467, 16, 458, -458, 315, + 791, 792, 829, 553, 382, 817, 563, 653, 538, 765, + 383, 449, 751, 535, 704, 448, 435, 33, 17, 384, + 430, 385, 646, 386, 359, 387, 357, 647, 388, 673, + 429, 1040, 34, 35, 389, 715, 382, 36, 390, 941, + 492, 62, 383, 503, 287, 288, 704, 434, 440, 33, + 17, 384, 393, 385,-32766, 386, 445, 387, 495, 509, + 388, 10, 529, 542, 34, 35, 389, 715, 515, 36, + 390, 499, 500, 62, 214, -80, 287, 288, 452, 269, + 736, 717, 535, 488, 393, 356, 266, 979, 265, 730, + 982, 722, 358, 338, 493, 548, 0, 294, 737, 0, + 3, 0, 309, 0, 0, 382, 0, 0, 271, 0, + 0, 383, 0, 717, 535, 704, 227, 0, 33, 17, + 384, 9, 385, 0, 386, 0, 387, -382, 0, 388, + 0, 0, 325, 34, 35, 389, 715, 382, 36, 390, + 321, 341, 62, 383, 340, 287, 288, 704, 22, 320, + 33, 17, 384, 393, 385, 442, 386, 337, 387, 562, + 1000, 388, 32, 31, 966, 34, 35, 389, 823, 657, + 36, 390, 656, 821, 62, 703, 711, 287, 288, 561, + 822, 825, 717, 535, 695, 393, 747, 749, 693, 759, + 758, 752, 767, 945, 824, 706, 700, 712, 699, 698, + 658, 0, 263, 262, 559, 558, 382, 556, 554, 551, + 398, 399, 383, 550, 717, 535, 704, 546, 545, 33, + 17, 384, 543, 385, 536, 386, 71, 387, 933, 932, + 388, 30, 65, 731, 34, 35, 389, 274, 724, 36, + 390, 830, 734, 62, 663, 662, 287, 288,-32766,-32766, + -32766, 733, 732, 934, 393, 665, 664, 756, 555, 691, + 1041, 1001, 994, 1006, 1011, 1014, 757, 1043,-32766, 654, + -32766,-32766,-32766,-32766,-32766,-32766,-32767,-32767,-32767,-32767, + -32767, 655, 1044, 717, 535, -446, 926, 348, 343, 268, + 237, 236, 235, 234, 218, 217, 132, 129, -426, -425, + -424, 123, 20, 23, 70, 69, 29, 37, 64, 68, + 66, 67, -448, 0, 15, 19, 250, 910, 296, -217, + 467, 484, 909, 472, 528, 913, 11, 964, 955, -215, + 525, 379, 375, 373, 371, 14, 13, 12, -214, 0, + -393, 0, 1005, 1039, 992, 993, 963, 0, 981 ]; PHP.Parser.prototype.yycheck = [ - 2, 3, 4, 5, 6, 8, 9, 10, 70, 11, - 104, 105, 106, 107, 108, 109, 8, 9, 10, 8, - 9, 24, 60, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 24, 7, 26, 27, 28, 29, 30, 41, - 42, 7, 123, 124, 7, 47, 70, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 144, 0, 75, 68, 69, 70, 25, - 72, 70, 74, 7, 76, 77, 78, 79, 7, 81, - 142, 83, 70, 85, 72, 73, 88, 8, 9, 10, - 92, 93, 94, 95, 7, 97, 98, 95, 100, 7, - 7, 103, 104, 24, 142, 26, 27, 105, 106, 111, - 112, 113, 136, 7, 7, 139, 114, 115, 116, 117, - 122, 123, 132, 125, 126, 127, 128, 129, 130, 131, - 8, 8, 9, 10, 136, 137, 138, 139, 140, 141, - 25, 143, 141, 145, 142, 147, 148, 24, 72, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 144, 48, 72, 44, 45, 46, 30, 48, 144, 64, - 72, 8, 9, 10, 140, 70, 8, 9, 10, 74, - 60, 25, 77, 78, 79, 60, 81, 24, 83, 26, - 85, 60, 24, 88, 26, 27, 28, 92, 93, 94, - 64, 140, 97, 98, 70, 100, 70, 72, 103, 104, - 74, 145, 7, 77, 78, 79, 111, 81, 7, 83, - 30, 85, 140, 140, 88, 8, 9, 10, 92, 93, - 94, 133, 134, 97, 98, 145, 100, 140, 7, 103, - 104, 24, 139, 96, 141, 140, 141, 111, 101, 75, - 75, 30, 70, 75, 64, 70, 60, 110, 121, 12, - 70, 141, 25, 143, 74, 96, 141, 77, 78, 79, - 101, 81, 141, 83, 140, 85, 140, 141, 88, 110, - 145, 144, 92, 93, 94, 64, 7, 97, 98, 142, - 100, 70, 141, 103, 104, 74, 145, 141, 77, 78, - 79, 111, 81, 7, 83, 30, 85, 132, 25, 88, - 132, 142, 12, 92, 93, 94, 120, 60, 97, 98, - 12, 100, 148, 141, 103, 104, 141, 12, 96, 12, - 140, 141, 111, 101, 8, 9, 10, 141, 25, 64, - 90, 91, 110, 65, 66, 70, 41, 42, 43, 74, - 65, 66, 77, 78, 79, 12, 81, 25, 83, 25, - 85, 140, 141, 88, 123, 124, 25, 92, 93, 94, - 64, 25, 97, 98, 142, 100, 70, 120, 103, 104, - 74, 25, 25, 77, 78, 79, 111, 81, 30, 83, - 48, 85, 140, 141, 88, 140, 141, 30, 92, 93, - 94, 140, 141, 97, 98, 60, 100, 60, 60, 103, - 104, 61, 72, 75, 70, 140, 141, 111, 67, 70, - 87, 99, 70, 70, 64, 70, 72, 102, 89, 70, - 70, 71, 70, 70, 74, 70, 70, 77, 78, 79, - 70, 81, 70, 83, 70, 85, 140, 141, 88, 70, - 144, 70, 92, 93, 94, 64, 70, 97, 98, 72, - 100, 70, 72, 103, 104, 74, 72, 72, 77, 78, - 79, 111, 81, 75, 83, 75, 85, 89, 86, 88, - 79, 101, 118, 92, 93, 94, 87, 95, 97, 98, - 87, 100, 87, 87, 103, 104, 118, 105, 106, 95, - 140, 141, 111, 95, 115, 64, 114, 115, 116, 117, - 135, 70, 115, 120, 132, 74, 120, 140, 77, 78, - 79, 119, 81, 139, 83, 140, 85, 120, -1, 88, - 120, 140, 141, 92, 93, 94, 64, 121, 97, 98, - 121, 100, 70, 122, 103, 104, 74, 135, 135, 77, - 78, 79, 111, 81, 139, 83, 139, 85, 135, 135, - 88, 135, 135, 135, 92, 93, 94, 142, 95, 97, - 98, 140, 100, 140, 140, 103, 104, 140, 105, 106, - 140, 140, 141, 111, 140, 140, 64, 114, 115, 116, - 117, 140, 70, 140, 140, 140, 74, 140, 140, 77, - 78, 79, 140, 81, 140, 83, 140, 85, 41, 42, - 88, 140, 140, 141, 92, 93, 94, 140, 140, 97, - 98, 140, 100, 140, 140, 103, 104, 60, 140, 142, - 141, 141, 141, 111, 141, 68, 69, 141, 141, 72, - 141, 141, 141, 76, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 141, 143, 142, 95, - 96, 142, 140, 141, 143, 101, 95, 96, 142, 105, - 106, 142, 101, 142, 142, 142, 105, 106, 114, 115, - 116, 117, 50, 51, 142, 114, 115, 116, 117, 142, - 123, 142, 125, 126, 127, 128, 129, 130, 131, 142, - 136, 142, 144, 143, 137, 138, 142, 136, 95, 96, - 143, 143, 145, 142, 101, 143, 143, 143, 105, 106, - 143, 143, 143, 143, 143, 143, 143, 114, 115, 116, - 117, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 95, 143, 143, 143, 95, 143, 143, 143, 143, 136, - 105, 106, 120, 143, 105, 106, 144, 95, 143, 114, - 115, 116, 117, 114, 115, 116, 117, 105, 106, 143, - 143, 143, 143, 95, 143, -1, 114, 115, 116, 117, - 143, 143, 143, 105, 106, 143, 95, 142, 80, 146, - 95, 142, 114, 115, 116, 117, 105, 106, 144, 144, - 105, 106, 144, 95, 142, 114, 115, 116, 117, 114, - 115, 116, 117, 105, 106, 82, 144, 144, 144, 144, - 142, 84, 114, 115, 116, 117, 144, 70, 95, 72, - 144, 144, 95, 142, 144, 146, 144, 142, 105, 106, - 146, 144, 105, 106, 8, 9, 10, 114, 115, 116, - 117, 114, 115, 116, 117, 144, 144, 144, 144, 144, - 24, 104, 26, 27, 28, 29, 144, 144, 144, 144, - 144, 144, 144, 144, 144, 144, 144, -1, 144, 144, - 144, -1, -1, -1, 146, 146, 146, 146, 146, 146, - 146, 146, -1, 136, 147, -1, 139, -1, -1, -1, - 143, -1, 145 + 2, 3, 4, 5, 6, 13, 8, 9, 10, 11, + 12, 0, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 8, 9, 10, 50, 51, + 52, 7, 54, 7, 79, 8, 9, 10, 8, 9, + 10, 77, 7, 13, 66, 28, 7, 30, 31, 32, + 33, 34, 54, 56, 57, 28, 8, 30, 31, 32, + 33, 34, 35, 35, 109, 1, 68, 69, 70, 71, + 72, 73, 74, 118, 7, 77, 112, 113, 114, 115, + 116, 117, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 7, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 2, 3, 4, 5, + 6, 143, 144, 145, 152, 11, 12, 7, 14, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 109, 7, + 67, 112, 113, 114, 115, 116, 117, 118, 8, 9, + 10, 79, 79, 79, 82, 147, 83, 82, 67, 28, + 152, 47, 48, 102, 103, 7, 7, 53, 28, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 1, 67, 68, 69, 70, 112, 8, 9, 10, 75, + 76, 77, 148, 79, 13, 7, 67, 83, 8, 9, + 10, 1, 129, 130, 13, 79, 28, 146, 30, 31, + 32, 33, 140, 141, 139, 29, 102, 7, 28, 128, + 30, 31, 32, 149, 151, 77, 112, 79, 80, 156, + 156, 15, 28, 142, 120, 121, 146, 77, 112, 149, + 149, 15, 151, 129, 130, 15, 132, 133, 134, 135, + 136, 137, 138, 15, 67, 67, 77, 143, 144, 145, + 146, 130, 131, 7, 7, 151, 15, 153, 148, 155, + 156, 71, 72, 73, 74, 0, 1, 77, 77, 150, + 67, 81, 156, 152, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 29, 95, 96, 97, 98, 99, + 100, 101, 102, 143, 104, 105, 146, 148, 108, 15, + 150, 111, 112, 113, 114, 128, 128, 7, 7, 119, + 67, 67, 122, 123, 124, 125, 7, 67, 149, 142, + 142, 8, 9, 10, 130, 131, 149, 149, 151, 79, + 152, 128, 7, 83, 143, 7, 71, 146, 148, 149, + 150, 28, 77, 30, 31, 142, 81, 7, 148, 84, + 85, 86, 149, 88, 7, 90, 35, 92, 7, 33, + 95, 7, 112, 7, 99, 100, 101, 102, 103, 104, + 105, 128, 128, 108, 109, 1, 111, 112, 113, 114, + 130, 8, 9, 10, 119, 142, 79, 122, 123, 124, + 125, 15, 149, 149, 148, 29, 8, 9, 10, 152, + 29, 151, 54, 29, 149, 79, 156, 15, 143, 47, + 48, 49, 29, 148, 149, 150, 28, 79, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 29, 54, 29, 1, 71, 67, 8, 9, 29, + 112, 77, 152, 152, 66, 81, 35, 148, 84, 85, + 86, 123, 88, 156, 90, 35, 92, 35, 147, 95, + 72, 73, 29, 99, 100, 101, 1, 152, 104, 105, + 152, 35, 108, 72, 73, 111, 112, 97, 98, 102, + 103, 66, 152, 119, 156, 102, 103, 106, 107, 152, + 67, 154, 74, 152, 29, 154, 152, 128, 152, 78, + 130, 131, 148, 149, 71, 148, 149, 148, 149, 148, + 77, 77, 148, 149, 81, 77, 77, 84, 85, 86, + 77, 88, 77, 90, 77, 92, 77, 77, 95, 77, + 77, 77, 99, 100, 101, 1, 71, 104, 105, 79, + 79, 108, 77, 79, 111, 112, 81, 79, 82, 84, + 85, 86, 119, 88, 82, 90, 86, 92, 87, 96, + 95, 94, 89, 29, 99, 100, 101, 1, 91, 104, + 105, 93, 96, 108, 94, 94, 111, 112, 94, 110, + 123, 148, 149, 109, 119, 102, 127, 139, 126, 147, + 139, 150, 146, 149, 154, 29, -1, 142, 123, -1, + 142, -1, 146, -1, -1, 71, -1, -1, 126, -1, + -1, 77, -1, 148, 149, 81, 35, -1, 84, 85, + 86, 142, 88, -1, 90, -1, 92, 142, -1, 95, + -1, -1, 146, 99, 100, 101, 1, 71, 104, 105, + 146, 146, 108, 77, 146, 111, 112, 81, 67, 146, + 84, 85, 86, 119, 88, 146, 90, 149, 92, 148, + 79, 95, 148, 148, 83, 99, 100, 101, 148, 148, + 104, 105, 148, 148, 108, 148, 148, 111, 112, 148, + 148, 148, 148, 149, 148, 119, 148, 148, 148, 148, + 148, 148, 148, 112, 148, 148, 148, 148, 148, 148, + 148, -1, 149, 149, 149, 149, 71, 149, 149, 149, + 129, 130, 77, 149, 148, 149, 81, 149, 149, 84, + 85, 86, 149, 88, 149, 90, 149, 92, 150, 150, + 95, 151, 151, 150, 99, 100, 101, 156, 150, 104, + 105, 150, 150, 108, 150, 150, 111, 112, 8, 9, + 10, 150, 150, 150, 119, 150, 150, 150, 150, 150, + 150, 150, 150, 150, 150, 150, 150, 150, 28, 150, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 150, 150, 148, 149, 151, 153, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 151, -1, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 152, 152, -1, + 153, -1, 154, 154, 154, 154, 154, -1, 155 ]; PHP.Parser.prototype.yybase = [ - 0, 574, 581, 623, 655, 2, 718, 402, 747, 659, - 672, 688, 743, 701, 705, 483, 483, 483, 483, 483, - 351, 356, 366, 366, 367, 366, 344, -2, -2, -2, - 200, 200, 231, 231, 231, 231, 231, 231, 231, 231, - 200, 231, 451, 482, 532, 316, 370, 115, 146, 285, - 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, - 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, - 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, - 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, - 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, - 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, - 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, - 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, - 401, 401, 401, 401, 401, 401, 401, 401, 401, 44, - 474, 429, 476, 481, 487, 488, 739, 740, 741, 734, - 733, 416, 736, 539, 541, 342, 542, 543, 552, 557, - 559, 536, 567, 737, 755, 569, 735, 738, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 122, 11, 336, - 336, 336, 336, 336, 336, 336, 336, 336, 336, 336, - 336, 336, 336, 336, 227, 227, 173, 577, 577, 577, - 577, 577, 577, 577, 577, 577, 577, 577, 79, 178, - 846, 8, -3, -3, -3, -3, 642, 706, 706, 706, - 706, 157, 179, 242, 431, 431, 360, 431, 525, 368, - 767, 767, 767, 767, 767, 767, 767, 767, 767, 767, - 767, 767, 350, 375, 315, 315, 652, 652, -81, -81, - -81, -81, 251, 185, 188, 184, -62, 348, 195, 195, - 195, 408, 392, 410, 1, 192, 129, 129, 129, -24, - -24, -24, -24, 499, -24, -24, -24, 113, 108, 108, - 12, 161, 349, 526, 271, 398, 529, 438, 130, 206, - 265, 427, 76, 414, 427, 288, 295, 76, 166, 44, - 262, 422, 141, 491, 372, 494, 413, 71, 92, 93, - 267, 135, 100, 34, 415, 745, 746, 742, -38, 420, - -10, 135, 147, 744, 498, 107, 26, 493, 144, 377, - 363, 369, 332, 363, 400, 377, 588, 377, 376, 377, - 360, 37, 582, 376, 377, 374, 376, 388, 363, 364, - 412, 369, 377, 441, 443, 390, 106, 332, 377, 390, - 377, 400, 64, 590, 591, 323, 592, 589, 593, 649, - 608, 362, 500, 399, 407, 620, 625, 636, 365, 354, - 614, 524, 425, 359, 355, 423, 570, 578, 357, 406, - 414, 394, 352, 403, 531, 433, 403, 653, 434, 385, - 417, 411, 444, 310, 318, 501, 425, 668, 757, 380, - 637, 684, 403, 609, 387, 87, 325, 638, 382, 403, - 639, 403, 696, 503, 615, 403, 697, 384, 435, 425, - 352, 352, 352, 700, 66, 699, 583, 702, 707, 704, - 748, 721, 749, 584, 750, 358, 583, 722, 751, 682, - 215, 613, 422, 436, 389, 447, 221, 257, 752, 403, - 403, 506, 499, 403, 395, 685, 397, 426, 753, 392, - 391, 647, 683, 403, 418, 754, 221, 723, 587, 724, - 450, 568, 507, 648, 509, 327, 725, 353, 497, 610, - 454, 622, 455, 461, 404, 510, 373, 732, 612, 247, - 361, 664, 463, 405, 692, 641, 464, 465, 511, 343, - 437, 335, 409, 396, 665, 293, 467, 468, 472, 0, + 0, 220, 295, 94, 180, 560, -2, -2, -2, -2, + -36, 473, 574, 606, 574, 505, 404, 675, 675, 675, + 28, 351, 462, 462, 462, 461, 396, 476, 451, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 401, 64, 201, 568, 704, 713, 708, + 702, 714, 520, 706, 705, 211, 650, 651, 450, 652, + 653, 654, 655, 709, 480, 703, 712, 418, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, + 418, 418, 418, 48, 30, 469, 403, 403, 403, 403, + 403, 403, 403, 403, 403, 403, 403, 403, 403, 403, + 403, 403, 403, 403, 403, 160, 160, 160, 343, 210, + 208, 198, 17, 233, 27, 780, 780, 780, 780, 780, + 108, 108, 108, 108, 621, 621, 93, 280, 280, 280, + 280, 280, 280, 280, 280, 280, 280, 280, 632, 641, + 642, 643, 392, 392, 151, 151, 151, 151, 368, -45, + 146, 224, 224, 95, 410, 491, 733, 199, 199, 111, + 207, -22, -22, -22, 81, 506, 92, 92, 233, 233, + 273, 233, 423, 423, 423, 221, 221, 221, 221, 221, + 110, 221, 221, 221, 617, 512, 168, 516, 647, 397, + 503, 656, 274, 381, 377, 538, 535, 337, 523, 337, + 421, 441, 428, 525, 337, 337, 285, 401, 394, 378, + 567, 474, 339, 564, 140, 179, 409, 399, 384, 594, + 561, 711, 330, 710, 358, 149, 378, 378, 378, 370, + 593, 548, 355, -8, 646, 484, 277, 417, 386, 645, + 635, 230, 634, 276, 331, 356, 565, 485, 485, 485, + 485, 485, 485, 460, 485, 483, 691, 691, 478, 501, + 460, 696, 460, 485, 691, 460, 460, 502, 485, 522, + 522, 483, 508, 499, 691, 691, 499, 478, 460, 571, + 551, 514, 482, 413, 413, 514, 460, 413, 501, 413, + 11, 697, 699, 444, 700, 695, 698, 676, 694, 493, + 615, 497, 515, 684, 683, 693, 479, 489, 620, 692, + 549, 592, 487, 246, 314, 498, 463, 689, 523, 486, + 455, 455, 455, 463, 687, 455, 455, 455, 455, 455, + 455, 455, 455, 732, 24, 495, 510, 591, 590, 589, + 406, 588, 496, 524, 422, 599, 488, 549, 549, 649, + 727, 673, 490, 682, 716, 690, 555, 119, 271, 681, + 648, 543, 492, 534, 680, 598, 246, 715, 494, 672, + 549, 671, 455, 674, 701, 730, 731, 688, 728, 722, + 152, 526, 587, 178, 729, 659, 596, 595, 554, 725, + 707, 721, 720, 178, 576, 511, 717, 518, 677, 504, + 678, 613, 258, 657, 686, 584, 724, 723, 726, 583, + 582, 609, 608, 250, 236, 685, 442, 458, 517, 581, + 500, 628, 604, 679, 580, 579, 623, 619, 718, 521, + 486, 519, 509, 507, 513, 600, 618, 719, 206, 578, + 586, 573, 481, 572, 631, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 134, 134, -2, -2, -2, + 0, 0, 0, 0, -2, 134, 134, 134, 134, 134, + 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, + 134, 134, 134, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, 0, 0, 0, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, - -2, -2, -2, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, - 123, 767, 767, 767, 767, 767, 767, 767, 767, 767, - 767, 767, 123, 123, 123, 123, 123, 123, 123, 123, - 0, 129, 129, 129, 129, -94, -94, -94, 767, 767, - 767, 767, 767, 767, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, -94, -94, 129, 129, - 767, 767, -24, -24, -24, -24, -24, 108, 108, 108, - -24, 108, 145, 145, 145, 108, 108, 108, 100, 100, - 0, 0, 0, 0, 0, 0, 0, 145, 0, 0, - 0, 376, 0, 0, 0, 145, 260, 260, 221, 260, - 260, 135, 0, 0, 425, 376, 0, 364, 376, 0, - 0, 0, 0, 0, 0, 531, 0, 87, 637, 241, - 425, 0, 0, 0, 0, 0, 0, 0, 425, 289, - 289, 306, 0, 358, 0, 0, 0, 306, 241, 0, - 0, 221 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 418, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, + 418, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 418, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, + 418, 418, 418, 418, 418, 418, 418, 418, 418, 418, + 418, 418, 418, 418, -3, 418, 418, -3, 418, 418, + 418, 418, 418, 418, -22, -22, -22, -22, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 49, 49, 49, 49, -22, -22, 221, 221, + 221, 221, 221, 49, 221, 221, 221, 92, 221, 92, + 92, 337, 337, 0, 0, 0, 0, 0, 485, 92, + 0, 0, 0, 0, 0, 0, 485, 485, 485, 0, + 0, 0, 0, 0, 485, 0, 0, 0, 337, 92, + 0, 420, 420, 178, 420, 420, 0, 0, 0, 485, + 485, 0, 508, 0, 0, 0, 0, 691, 0, 0, + 0, 0, 0, 455, 119, 682, 0, 39, 0, 0, + 0, 0, 0, 490, 39, 26, 0, 26, 0, 0, + 455, 455, 455, 0, 490, 490, 0, 0, 67, 490, + 0, 0, 0, 67, 35, 0, 35, 0, 0, 0, + 178 ]; PHP.Parser.prototype.yydefault = [ - 3,32767,32767, 1,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767, 104, 96, 110, 95, 106, + 3,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767, 468, 468, 468,32767,32767,32767,32767, 285, + 460, 285, 285,32767, 419, 419, 419, 419, 419, 419, + 419, 460,32767,32767,32767,32767,32767, 364,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 358, 358, 122, 122, 122, 122, 122, 122, 122, 122, - 316,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 173, 173, 173,32767, 348, 348, 348, 348, 348, 348, - 348,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, @@ -3282,2998 +3285,278 @@ PHP.Parser.prototype.yydefault = [ 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767, 363,32767,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767, 465,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767,32767,32767,32767,32767,32767,32767, 232, 233, - 235, 236, 172, 125, 349, 362, 171, 199, 201, 250, - 200, 177, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 176, 229, 228, 197, 313, 313, 316, - 32767,32767,32767,32767,32767,32767,32767,32767, 198, 202, - 204, 203, 219, 220, 217, 218, 175, 221, 222, 223, - 224, 157, 157, 157, 357, 357,32767, 357,32767,32767, + 32767,32767,32767,32767,32767,32767,32767, 347, 348, 350, + 351, 284, 420, 237, 464, 283, 116, 246, 239, 191, + 282, 223, 119, 312, 365, 314, 363, 367, 313, 290, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 288, 289, 366, 344, 343, 342, 310, 311, + 287, 315, 317, 287, 316, 333, 334, 331, 332, 335, + 336, 337, 338, 339,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767, 269, 269, + 269, 269, 324, 325, 229, 229, 229, 229,32767, 270, + 32767, 229,32767,32767,32767,32767,32767,32767,32767, 413, + 341, 319, 320, 318,32767, 392,32767, 394, 307, 309, + 387, 291,32767,32767,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767, 158,32767, 211, 212, 276, 276, 117, 117, - 117, 117, 117,32767,32767,32767,32767, 284,32767,32767, - 32767,32767,32767, 286,32767,32767, 206, 207, 205,32767, - 32767,32767,32767,32767,32767,32767,32767,32767, 285,32767, - 32767,32767,32767,32767,32767,32767,32767, 334, 321, 272, - 32767,32767,32767, 265,32767, 107, 109,32767,32767,32767, - 32767, 302, 339,32767,32767,32767, 17,32767,32767,32767, - 370, 334,32767,32767, 19,32767,32767,32767,32767, 227, - 32767, 338, 332,32767,32767,32767,32767,32767,32767, 63, - 32767,32767,32767,32767,32767, 63, 281, 63,32767, 63, - 32767, 315, 287,32767, 63, 74,32767, 72,32767,32767, - 76,32767, 63, 93, 93, 254, 315, 54, 63, 254, - 63,32767,32767,32767,32767, 4,32767,32767,32767,32767, + 32767,32767, 389, 421, 421,32767,32767,32767, 381,32767, + 159, 210, 212, 397,32767,32767,32767,32767,32767, 329, + 32767,32767,32767,32767,32767,32767, 474,32767,32767,32767, + 32767,32767, 421,32767,32767,32767, 321, 322, 323,32767, + 32767,32767, 421, 421,32767,32767, 421,32767, 421,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767,32767, 267,32767, 323,32767, 337, 336, 324,32767, - 265,32767, 215, 194, 266,32767, 196,32767,32767, 270, - 273,32767,32767,32767, 134,32767, 268, 180,32767,32767, - 32767,32767, 365,32767,32767, 174,32767,32767,32767, 130, - 32767, 61, 332,32767,32767, 355,32767,32767, 332, 269, - 208, 209, 210,32767, 121,32767, 310,32767,32767,32767, - 32767,32767,32767, 327,32767, 333,32767,32767,32767,32767, - 111,32767, 302,32767,32767,32767, 75,32767,32767, 178, - 126,32767,32767, 364,32767,32767,32767, 320,32767,32767, - 32767,32767,32767, 62,32767,32767, 77,32767,32767,32767, - 32767, 332,32767,32767,32767, 115,32767, 169,32767,32767, + 32767,32767,32767, 163,32767,32767, 395, 395,32767,32767, + 163, 390, 163,32767,32767, 163, 163, 176,32767, 174, + 174,32767,32767, 178,32767, 435, 178,32767, 163, 196, + 196, 373, 165, 231, 231, 373, 163, 231,32767, 231, + 32767,32767,32767, 82,32767,32767,32767,32767,32767,32767, 32767,32767,32767,32767,32767,32767,32767,32767,32767,32767, - 32767, 332,32767,32767,32767,32767,32767,32767,32767, 4, - 32767, 151,32767,32767,32767,32767,32767,32767,32767, 25, - 25, 3, 137, 3, 137, 25, 101, 25, 25, 137, - 93, 93, 25, 25, 25, 144, 25, 25, 25, 25, - 25, 25, 25, 25 + 383,32767,32767,32767, 401,32767, 414, 433, 381,32767, + 327, 328, 330,32767, 423, 352, 353, 354, 355, 356, + 357, 358, 360,32767, 461, 386,32767,32767,32767,32767, + 32767,32767, 84, 108, 245,32767, 473, 84, 384,32767, + 473,32767,32767,32767,32767,32767,32767, 286,32767,32767, + 32767, 84,32767, 84,32767,32767, 457,32767,32767, 421, + 385,32767, 326, 398, 439,32767,32767, 422,32767,32767, + 218, 84,32767, 177,32767,32767,32767,32767,32767,32767, + 401,32767,32767, 179,32767,32767, 421,32767,32767,32767, + 32767,32767, 281,32767,32767,32767,32767,32767, 421,32767, + 32767,32767,32767, 222,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767,32767,32767,32767,32767, 82, + 60,32767, 263,32767,32767,32767,32767,32767,32767,32767, + 32767,32767,32767,32767,32767, 121, 121, 3, 3, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 121, 121, 248, 154, 248, 204, 248, 248, + 207, 196, 196, 255 ]; PHP.Parser.prototype.yygoto = [ - 141, 141, 173, 173, 173, 173, 173, 173, 173, 173, - 141, 173, 142, 143, 144, 148, 153, 155, 181, 175, - 172, 172, 172, 172, 174, 174, 174, 174, 174, 174, - 174, 168, 169, 170, 171, 179, 757, 758, 392, 760, - 781, 782, 783, 784, 785, 786, 787, 789, 725, 145, - 146, 147, 149, 150, 151, 152, 154, 177, 178, 180, - 196, 208, 209, 210, 211, 212, 213, 214, 215, 217, - 218, 219, 220, 244, 245, 266, 267, 268, 430, 431, - 432, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 156, 157, 158, 159, 176, 160, 194, 161, - 162, 163, 164, 195, 165, 193, 139, 166, 167, 452, - 452, 452, 452, 452, 452, 452, 452, 452, 452, 452, - 453, 453, 453, 453, 453, 453, 453, 453, 453, 453, - 453, 551, 551, 551, 464, 491, 394, 394, 394, 394, - 394, 394, 394, 394, 394, 394, 394, 394, 394, 394, - 394, 394, 394, 394, 407, 552, 552, 552, 810, 810, - 662, 662, 662, 662, 662, 594, 283, 595, 510, 399, - 399, 567, 679, 632, 849, 850, 863, 660, 714, 426, - 222, 622, 622, 622, 622, 223, 617, 623, 494, 395, - 395, 395, 395, 395, 395, 395, 395, 395, 395, 395, - 395, 395, 395, 395, 395, 395, 395, 465, 472, 514, - 904, 398, 398, 425, 425, 459, 425, 419, 322, 421, - 421, 393, 396, 412, 422, 428, 460, 463, 473, 481, - 501, 5, 476, 284, 327, 1, 15, 2, 6, 7, - 550, 550, 550, 8, 9, 10, 668, 16, 11, 17, - 12, 18, 13, 19, 14, 704, 328, 881, 881, 643, - 628, 626, 626, 624, 626, 526, 401, 652, 647, 847, - 847, 847, 847, 847, 847, 847, 847, 847, 847, 847, - 437, 438, 441, 447, 477, 479, 497, 290, 910, 910, - 400, 400, 486, 880, 880, 263, 913, 910, 303, 255, - 723, 306, 822, 821, 306, 896, 896, 896, 861, 304, - 323, 410, 913, 913, 897, 316, 420, 769, 658, 559, - 879, 671, 536, 324, 466, 565, 311, 311, 311, 801, - 241, 676, 496, 439, 440, 442, 444, 448, 475, 631, - 858, 311, 285, 286, 603, 495, 712, 0, 406, 321, - 0, 0, 0, 314, 0, 0, 429, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 163, 163, 135, 135, 135, 146, 148, 179, 164, 161, + 145, 161, 161, 161, 162, 162, 162, 162, 162, 162, + 162, 145, 157, 158, 159, 160, 176, 174, 177, 410, + 411, 299, 412, 415, 416, 417, 418, 419, 420, 421, + 422, 857, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 147, 173, 175, 178, 195, 198, 199, 201, 202, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 232, 233, 251, 252, 253, 316, 317, 318, 462, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 149, 194, 150, 165, 166, 167, 196, + 168, 151, 152, 153, 169, 154, 197, 133, 170, 155, + 171, 172, 156, 521, 200, 257, 246, 464, 432, 687, + 649, 278, 481, 482, 527, 200, 437, 437, 437, 766, + 5, 746, 650, 557, 437, 426, 775, 770, 428, 431, + 444, 465, 466, 468, 483, 279, 651, 336, 450, 453, + 437, 560, 485, 487, 508, 511, 763, 516, 517, 777, + 524, 762, 526, 532, 773, 534, 480, 480, 965, 965, + 965, 965, 965, 965, 965, 965, 965, 965, 965, 965, + 413, 413, 413, 413, 413, 413, 413, 413, 413, 413, + 413, 413, 413, 413, 942, 502, 478, 496, 512, 456, + 298, 437, 437, 451, 471, 437, 437, 674, 437, 229, + 456, 230, 231, 463, 828, 533, 681, 438, 513, 826, + 461, 475, 460, 414, 414, 414, 414, 414, 414, 414, + 414, 414, 414, 414, 414, 414, 414, 301, 674, 674, + 443, 454, 1033, 1033, 1034, 1034, 425, 531, 425, 708, + 750, 800, 457, 372, 1033, 943, 1034, 1026, 300, 1018, + 497, 8, 313, 904, 796, 944, 996, 785, 789, 1007, + 285, 670, 1036, 329, 307, 310, 804, 668, 544, 332, + 935, 940, 366, 807, 678, 477, 377, 754, 844, 0, + 667, 667, 675, 675, 675, 677, 0, 666, 323, 498, + 328, 312, 312, 258, 259, 283, 459, 261, 322, 284, + 326, 486, 280, 281, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 790, 790, 790, 790, 946, 0, 946, + 790, 790, 1004, 790, 1004, 0, 0, 0, 0, 836, + 0, 1015, 1015, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 744, 744, 744, 720, 744, 0, + 739, 745, 721, 780, 780, 1023, 0, 0, 1002, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 411 + 0, 806, 0, 806, 0, 0, 0, 0, 1008, 1009 ]; PHP.Parser.prototype.yygcheck = [ - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, - 86, 6, 6, 6, 21, 21, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 71, 7, 7, 7, 35, 35, - 35, 35, 35, 35, 35, 29, 44, 29, 35, 86, - 86, 12, 12, 12, 12, 12, 12, 12, 12, 75, - 40, 35, 35, 35, 35, 40, 35, 35, 35, 82, - 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, - 82, 82, 82, 82, 82, 82, 82, 36, 36, 36, - 104, 82, 82, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 13, 42, 42, 42, 2, 13, 2, 13, 13, - 5, 5, 5, 13, 13, 13, 54, 13, 13, 13, - 13, 13, 13, 13, 13, 67, 67, 83, 83, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 5, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 52, 52, 52, 52, 52, 52, 52, 4, 105, 105, - 89, 89, 94, 84, 84, 92, 105, 105, 26, 92, - 71, 4, 91, 91, 4, 84, 84, 84, 97, 30, - 70, 30, 105, 105, 102, 27, 30, 72, 50, 10, - 84, 55, 46, 9, 30, 11, 90, 90, 90, 80, - 30, 56, 30, 85, 85, 85, 85, 85, 85, 43, - 96, 90, 44, 44, 34, 77, 69, -1, 4, 90, - -1, -1, -1, 4, -1, -1, 4, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 52, 45, 112, 112, 80, 8, 10, + 10, 64, 55, 55, 55, 45, 8, 8, 8, 10, + 92, 10, 11, 10, 8, 10, 10, 10, 38, 38, + 38, 38, 38, 38, 62, 62, 12, 62, 28, 8, + 8, 28, 28, 28, 28, 28, 28, 28, 28, 28, + 28, 28, 28, 28, 28, 28, 70, 70, 70, 70, + 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 76, 56, 35, 35, 56, 69, + 56, 8, 8, 8, 8, 8, 8, 19, 8, 60, + 69, 60, 60, 7, 7, 7, 25, 8, 7, 7, + 2, 2, 8, 115, 115, 115, 115, 115, 115, 115, + 115, 115, 115, 115, 115, 115, 115, 53, 19, 19, + 53, 53, 123, 123, 124, 124, 109, 5, 109, 44, + 29, 78, 114, 53, 123, 76, 124, 122, 41, 120, + 43, 53, 42, 96, 74, 76, 76, 72, 75, 117, + 14, 21, 123, 18, 9, 13, 79, 20, 66, 17, + 102, 104, 58, 81, 22, 59, 100, 63, 94, -1, + 19, 19, 19, 19, 19, 19, -1, 19, 45, 45, + 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, + 45, 45, 64, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 52, 52, 52, 52, 52, -1, 52, + 52, 52, 80, 52, 80, -1, -1, -1, -1, 92, + -1, 80, 80, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 52, 52, 52, 52, 52, -1, + 52, 52, 52, 69, 69, 69, -1, -1, 80, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 71 + -1, 80, -1, 80, -1, -1, -1, -1, 80, 80 ]; PHP.Parser.prototype.yygbase = [ - 0, 0, -286, 0, 10, 239, 130, 154, 0, -10, - 25, -23, -29, -289, 0, -30, 0, 0, 0, 0, - 0, 83, 0, 0, 0, 0, 245, 84, -11, 142, - -28, 0, 0, 0, -13, -88, -42, 0, 0, 0, - -344, 0, -38, -12, -188, 0, 23, 0, 0, 0, - 66, 0, 247, 0, 205, 24, -18, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 13, 0, -15, - 85, 74, 70, 0, 0, 148, 0, -14, 0, 0, - -6, 0, -35, 11, 47, 278, -77, 0, 0, 44, - 68, 43, 38, 72, 94, 0, -16, 109, 0, 0, - 0, 0, 87, 0, 170, 34, 0 + 0, 0, -317, 0, 0, 237, 0, 210, -136, 4, + 118, 130, 144, -10, 16, 0, 0, -59, 10, -47, + -9, 7, -77, -20, 0, 209, 0, 0, -388, 234, + 0, 0, 0, 0, 0, 165, 0, 0, 103, 0, + 0, 225, 44, 45, 235, 84, 0, 0, 0, 0, + 0, 0, 109, -115, 0, -113, -179, 0, -78, -81, + -347, 0, -122, -80, -249, 0, -19, 0, 0, 169, + -48, 0, 26, 0, 22, 24, -99, 0, 230, -13, + 114, -79, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 120, 0, -90, 0, 23, 0, 0, 0, + -89, 0, -67, 0, -69, 0, 0, 0, 0, 8, + 0, 0, -140, -34, 229, 9, 0, 21, 0, 0, + 218, 0, 233, -3, -1, 0 ]; PHP.Parser.prototype.yygdefault = [ - -32768, 362, 3, 546, 382, 570, 571, 572, 307, 305, - 560, 566, 467, 4, 568, 140, 295, 575, 296, 500, - 577, 414, 579, 580, 308, 309, 415, 315, 216, 593, - 503, 313, 596, 357, 602, 301, 449, 383, 350, 461, - 221, 423, 456, 630, 282, 638, 540, 646, 649, 450, - 657, 352, 433, 434, 667, 672, 677, 680, 334, 325, - 474, 684, 685, 256, 689, 511, 512, 703, 242, 711, - 317, 724, 342, 788, 790, 397, 408, 484, 797, 326, - 800, 384, 385, 386, 387, 435, 818, 815, 289, 866, - 287, 443, 254, 853, 468, 356, 903, 862, 288, 388, - 389, 302, 898, 341, 905, 912, 458 + -32768, 380, 565, 2, 566, 637, 645, 504, 400, 433, + 748, 688, 689, 303, 342, 401, 302, 330, 324, 676, + 669, 671, 679, 134, 333, 682, 1, 684, 439, 716, + 291, 692, 292, 507, 694, 446, 696, 697, 427, 304, + 305, 447, 311, 479, 707, 203, 308, 709, 290, 710, + 719, 335, 293, 510, 489, 469, 501, 402, 363, 476, + 228, 455, 473, 753, 277, 761, 549, 769, 772, 403, + 404, 470, 784, 368, 794, 788, 960, 319, 799, 805, + 991, 808, 811, 349, 331, 327, 815, 816, 4, 820, + 522, 523, 835, 239, 843, 856, 347, 923, 925, 441, + 374, 936, 360, 334, 939, 995, 354, 405, 364, 952, + 260, 282, 245, 406, 423, 249, 407, 365, 998, 314, + 1019, 424, 1027, 1035, 275, 474 ]; PHP.Parser.prototype.yylhs = [ - 0, 1, 2, 2, 4, 4, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 8, 8, 10, 10, 10, - 10, 9, 9, 11, 13, 13, 14, 14, 14, 14, + 0, 1, 3, 3, 2, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 5, 33, 33, - 34, 27, 27, 30, 30, 6, 7, 7, 7, 37, - 37, 37, 38, 38, 41, 41, 39, 39, 42, 42, - 22, 22, 29, 29, 32, 32, 31, 31, 43, 23, - 23, 23, 23, 44, 44, 45, 45, 46, 46, 20, - 20, 16, 16, 47, 18, 18, 48, 17, 17, 19, - 19, 36, 36, 49, 49, 50, 50, 51, 51, 51, - 51, 52, 52, 53, 53, 54, 54, 24, 24, 55, - 55, 55, 25, 25, 56, 56, 40, 40, 57, 57, - 57, 57, 62, 62, 63, 63, 64, 64, 64, 64, - 65, 66, 66, 61, 61, 58, 58, 60, 60, 68, - 68, 67, 67, 67, 67, 67, 67, 59, 59, 69, - 69, 26, 26, 21, 21, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 71, 77, 77, 79, 79, 80, 81, - 81, 81, 81, 81, 81, 86, 86, 35, 35, 35, - 72, 72, 87, 87, 82, 82, 88, 88, 88, 88, - 88, 73, 73, 73, 76, 76, 76, 78, 78, 93, - 93, 93, 93, 93, 93, 93, 93, 93, 93, 93, - 93, 93, 93, 12, 12, 12, 12, 12, 12, 74, - 74, 74, 74, 94, 94, 96, 96, 95, 95, 97, - 97, 28, 28, 28, 28, 99, 99, 98, 98, 98, - 98, 98, 100, 100, 84, 84, 89, 89, 83, 83, - 101, 101, 101, 101, 90, 90, 90, 90, 85, 85, - 91, 91, 91, 70, 70, 102, 102, 102, 75, 75, - 103, 103, 104, 104, 104, 104, 92, 92, 92, 92, - 105, 105, 105, 105, 105, 105, 105, 106, 106, 106 + 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, + 7, 7, 8, 8, 9, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 14, 14, 15, 15, + 15, 15, 17, 17, 13, 13, 18, 18, 19, 19, + 20, 20, 21, 21, 16, 16, 22, 24, 24, 25, + 26, 26, 28, 27, 27, 27, 27, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, + 29, 29, 10, 10, 48, 48, 51, 51, 50, 49, + 49, 42, 42, 53, 53, 54, 54, 11, 12, 12, + 12, 57, 57, 57, 58, 58, 61, 61, 59, 59, + 62, 62, 36, 36, 44, 44, 47, 47, 47, 46, + 46, 63, 37, 37, 37, 37, 64, 64, 65, 65, + 66, 66, 34, 34, 30, 30, 67, 32, 32, 68, + 31, 31, 33, 33, 43, 43, 43, 43, 55, 55, + 71, 71, 72, 72, 74, 74, 75, 75, 75, 73, + 73, 56, 56, 76, 76, 77, 77, 78, 78, 78, + 39, 39, 79, 40, 40, 81, 81, 60, 60, 82, + 82, 82, 82, 87, 87, 88, 88, 89, 89, 89, + 89, 89, 90, 91, 91, 86, 86, 83, 83, 85, + 85, 93, 93, 92, 92, 92, 92, 92, 92, 84, + 84, 94, 94, 41, 41, 35, 35, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 101, 95, 95, 100, 100, 103, 103, 104, 105, 105, + 105, 109, 109, 52, 52, 52, 96, 96, 107, 107, + 97, 97, 99, 99, 99, 102, 102, 113, 113, 70, + 115, 115, 115, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, 98, 38, + 38, 111, 111, 111, 106, 106, 106, 116, 116, 116, + 116, 116, 116, 45, 45, 45, 80, 80, 80, 118, + 110, 110, 110, 110, 110, 110, 108, 108, 108, 117, + 117, 117, 117, 69, 119, 119, 120, 120, 120, 120, + 120, 114, 121, 121, 122, 122, 122, 122, 122, 112, + 112, 112, 112, 124, 123, 123, 123, 123, 123, 123, + 123, 125, 125, 125 ]; PHP.Parser.prototype.yylen = [ - 1, 1, 2, 0, 1, 3, 1, 1, 1, 1, - 3, 5, 4, 3, 3, 3, 1, 1, 3, 2, - 4, 3, 1, 3, 2, 0, 1, 1, 1, 1, - 3, 7, 10, 5, 7, 9, 5, 2, 3, 2, - 3, 2, 3, 3, 3, 3, 1, 2, 5, 7, - 8, 10, 5, 1, 5, 3, 3, 2, 1, 2, - 8, 1, 3, 0, 1, 9, 7, 6, 5, 1, - 2, 2, 0, 2, 0, 2, 0, 2, 1, 3, - 1, 4, 1, 4, 1, 4, 1, 3, 3, 3, - 4, 4, 5, 0, 2, 4, 3, 1, 1, 1, - 4, 0, 2, 5, 0, 2, 6, 0, 2, 0, - 3, 1, 0, 1, 3, 3, 5, 0, 1, 1, - 1, 1, 0, 1, 3, 1, 2, 3, 1, 1, - 2, 4, 3, 1, 1, 3, 2, 0, 3, 3, - 8, 3, 1, 3, 0, 2, 4, 5, 4, 4, - 3, 1, 1, 1, 3, 1, 1, 0, 1, 1, - 2, 1, 1, 1, 1, 1, 1, 1, 3, 1, - 3, 3, 1, 0, 1, 1, 6, 3, 4, 4, - 1, 2, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, - 4, 4, 2, 2, 4, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 1, 4, 3, 3, - 2, 9, 10, 3, 0, 4, 1, 3, 2, 4, - 6, 8, 4, 4, 4, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 0, 3, 3, 4, - 4, 0, 2, 3, 0, 1, 1, 0, 3, 1, + 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 2, 1, 1, 3, 2, 2, 4, 3, 1, - 3, 3, 3, 0, 2, 0, 1, 3, 1, 3, - 1, 1, 1, 1, 1, 6, 4, 3, 6, 4, - 4, 4, 1, 3, 1, 2, 1, 1, 4, 1, - 3, 6, 4, 4, 4, 4, 1, 4, 0, 1, - 1, 3, 1, 3, 1, 1, 4, 0, 0, 2, - 3, 1, 3, 1, 4, 2, 2, 2, 1, 2, - 1, 4, 3, 3, 3, 6, 3, 1, 1, 1 + 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, + 5, 4, 3, 4, 2, 3, 1, 1, 7, 8, + 6, 7, 3, 1, 3, 1, 3, 1, 1, 3, + 1, 2, 1, 2, 3, 1, 3, 3, 1, 3, + 2, 0, 1, 1, 1, 1, 1, 3, 7, 10, + 5, 7, 9, 5, 3, 3, 3, 3, 3, 3, + 1, 2, 5, 7, 9, 5, 6, 3, 3, 2, + 2, 1, 1, 1, 0, 2, 1, 3, 8, 0, + 4, 1, 3, 0, 1, 0, 1, 10, 7, 6, + 5, 1, 2, 2, 0, 2, 0, 2, 0, 2, + 1, 3, 1, 4, 1, 4, 1, 1, 4, 1, + 3, 3, 3, 4, 4, 5, 0, 2, 4, 3, + 1, 1, 1, 4, 0, 2, 5, 0, 2, 6, + 0, 2, 0, 3, 1, 2, 1, 1, 1, 0, + 1, 3, 4, 6, 1, 2, 1, 1, 1, 0, + 1, 0, 2, 2, 3, 1, 3, 1, 2, 2, + 3, 1, 1, 3, 1, 1, 3, 2, 0, 3, + 4, 9, 3, 1, 3, 0, 2, 4, 5, 4, + 4, 4, 3, 1, 1, 1, 3, 1, 1, 0, + 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, + 3, 1, 3, 3, 1, 0, 1, 1, 3, 3, + 3, 4, 1, 2, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, + 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 5, 4, 3, 4, 4, 2, 2, 4, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 1, 3, 2, 1, 2, 4, 2, 10, 11, + 7, 3, 2, 0, 4, 1, 3, 2, 2, 2, + 4, 1, 1, 1, 2, 3, 1, 1, 1, 1, + 0, 3, 0, 1, 1, 0, 1, 1, 3, 3, + 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 2, 3, 3, 0, + 1, 1, 3, 1, 1, 3, 1, 1, 4, 4, + 4, 1, 4, 1, 1, 3, 1, 4, 2, 3, + 1, 4, 4, 3, 3, 3, 1, 3, 1, 1, + 3, 1, 1, 4, 3, 1, 1, 1, 3, 3, + 0, 1, 3, 1, 3, 1, 4, 2, 0, 2, + 2, 1, 2, 1, 1, 4, 3, 3, 3, 6, + 3, 1, 1, 1 ]; - - - - -PHP.Parser.prototype.yyn0 = function () { - this.yyval = this.yyastk[ this.stackPos ]; -}; - -PHP.Parser.prototype.yyn1 = function ( attributes ) { - this.yyval = this.Stmt_Namespace_postprocess(this.yyastk[ this.stackPos-(1-1) ]); -}; - -PHP.Parser.prototype.yyn2 = function ( attributes ) { - if (Array.isArray(this.yyastk[ this.stackPos-(2-2) ])) { this.yyval = this.yyastk[ this.stackPos-(2-1) ].concat( this.yyastk[ this.stackPos-(2-2) ]); } else { this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; }; -}; - -PHP.Parser.prototype.yyn3 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn4 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn5 = function ( attributes ) { - this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; -}; - -PHP.Parser.prototype.yyn6 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn7 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn8 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn9 = function ( attributes ) { - this.yyval = this.Node_Stmt_HaltCompiler(attributes); -}; - -PHP.Parser.prototype.yyn10 = function ( attributes ) { - this.yyval = this.Node_Stmt_Namespace(this.Node_Name(this.yyastk[ this.stackPos-(3-2) ], attributes), null, attributes); -}; - -PHP.Parser.prototype.yyn11 = function ( attributes ) { - this.yyval = this.Node_Stmt_Namespace(this.Node_Name(this.yyastk[ this.stackPos-(5-2) ], attributes), this.yyastk[ this.stackPos-(5-4) ], attributes); -}; - -PHP.Parser.prototype.yyn12 = function ( attributes ) { - this.yyval = this.Node_Stmt_Namespace(null, this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn13 = function ( attributes ) { - this.yyval = this.Node_Stmt_Use(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn14 = function ( attributes ) { - this.yyval = this.Node_Stmt_Const(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn15 = function ( attributes ) { - this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; -}; - -PHP.Parser.prototype.yyn16 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn17 = function ( attributes ) { - this.yyval = this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[ this.stackPos-(1-1) ], attributes), null, attributes); -}; - -PHP.Parser.prototype.yyn18 = function ( attributes ) { - this.yyval = this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[ this.stackPos-(3-1) ], attributes), this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn19 = function ( attributes ) { - this.yyval = this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[ this.stackPos-(2-2) ], attributes), null, attributes); -}; - -PHP.Parser.prototype.yyn20 = function ( attributes ) { - this.yyval = this.Node_Stmt_UseUse(this.Node_Name(this.yyastk[ this.stackPos-(4-2) ], attributes), this.yyastk[ this.stackPos-(4-4) ], attributes); -}; - -PHP.Parser.prototype.yyn21 = function ( attributes ) { - this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; -}; - -PHP.Parser.prototype.yyn22 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn23 = function ( attributes ) { - this.yyval = this.Node_Const(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn24 = function ( attributes ) { - if (Array.isArray(this.yyastk[ this.stackPos-(2-2) ])) { this.yyval = this.yyastk[ this.stackPos-(2-1) ].concat( this.yyastk[ this.stackPos-(2-2) ]); } else { this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; }; -}; - -PHP.Parser.prototype.yyn25 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn26 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn27 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn28 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn29 = function ( attributes ) { - throw new Error('__halt_compiler() can only be used from the outermost scope'); -}; - -PHP.Parser.prototype.yyn30 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(3-2) ]; -}; - -PHP.Parser.prototype.yyn31 = function ( attributes ) { - this.yyval = this.Node_Stmt_If(this.yyastk[ this.stackPos-(7-3) ], {'stmts': Array.isArray(this.yyastk[ this.stackPos-(7-5) ]) ? this.yyastk[ this.stackPos-(7-5) ] : [this.yyastk[ this.stackPos-(7-5) ]], 'elseifs': this.yyastk[ this.stackPos-(7-6) ], 'Else': this.yyastk[ this.stackPos-(7-7) ]}, attributes); -}; - -PHP.Parser.prototype.yyn32 = function ( attributes ) { - this.yyval = this.Node_Stmt_If(this.yyastk[ this.stackPos-(10-3) ], {'stmts': this.yyastk[ this.stackPos-(10-6) ], 'elseifs': this.yyastk[ this.stackPos-(10-7) ], 'else': this.yyastk[ this.stackPos-(10-8) ]}, attributes); -}; - -PHP.Parser.prototype.yyn33 = function ( attributes ) { - this.yyval = this.Node_Stmt_While(this.yyastk[ this.stackPos-(5-3) ], this.yyastk[ this.stackPos-(5-5) ], attributes); -}; - -PHP.Parser.prototype.yyn34 = function ( attributes ) { - this.yyval = this.Node_Stmt_Do(this.yyastk[ this.stackPos-(7-5) ], Array.isArray(this.yyastk[ this.stackPos-(7-2) ]) ? this.yyastk[ this.stackPos-(7-2) ] : [this.yyastk[ this.stackPos-(7-2) ]], attributes); -}; - -PHP.Parser.prototype.yyn35 = function ( attributes ) { - this.yyval = this.Node_Stmt_For({'init': this.yyastk[ this.stackPos-(9-3) ], 'cond': this.yyastk[ this.stackPos-(9-5) ], 'loop': this.yyastk[ this.stackPos-(9-7) ], 'stmts': this.yyastk[ this.stackPos-(9-9) ]}, attributes); -}; - -PHP.Parser.prototype.yyn36 = function ( attributes ) { - this.yyval = this.Node_Stmt_Switch(this.yyastk[ this.stackPos-(5-3) ], this.yyastk[ this.stackPos-(5-5) ], attributes); -}; - -PHP.Parser.prototype.yyn37 = function ( attributes ) { - this.yyval = this.Node_Stmt_Break(null, attributes); -}; - -PHP.Parser.prototype.yyn38 = function ( attributes ) { - this.yyval = this.Node_Stmt_Break(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn39 = function ( attributes ) { - this.yyval = this.Node_Stmt_Continue(null, attributes); -}; - -PHP.Parser.prototype.yyn40 = function ( attributes ) { - this.yyval = this.Node_Stmt_Continue(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn41 = function ( attributes ) { - this.yyval = this.Node_Stmt_Return(null, attributes); -}; - -PHP.Parser.prototype.yyn42 = function ( attributes ) { - this.yyval = this.Node_Stmt_Return(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn43 = function ( attributes ) { - this.yyval = this.Node_Stmt_Global(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn44 = function ( attributes ) { - this.yyval = this.Node_Stmt_Static(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn45 = function ( attributes ) { - this.yyval = this.Node_Stmt_Echo(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn46 = function ( attributes ) { - this.yyval = this.Node_Stmt_InlineHTML(this.yyastk[ this.stackPos-(1-1) ], attributes); -}; - -PHP.Parser.prototype.yyn47 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(2-1) ]; -}; - -PHP.Parser.prototype.yyn48 = function ( attributes ) { - this.yyval = this.Node_Stmt_Unset(this.yyastk[ this.stackPos-(5-3) ], attributes); -}; - -PHP.Parser.prototype.yyn49 = function ( attributes ) { - this.yyval = this.Node_Stmt_Foreach(this.yyastk[ this.stackPos-(7-3) ], this.yyastk[ this.stackPos-(7-5) ], {'keyVar': null, 'byRef': false, 'stmts': this.yyastk[ this.stackPos-(7-7) ]}, attributes); -}; - -PHP.Parser.prototype.yyn50 = function ( attributes ) { - this.yyval = this.Node_Stmt_Foreach(this.yyastk[ this.stackPos-(8-3) ], this.yyastk[ this.stackPos-(8-6) ], {'keyVar': null, 'byRef': true, 'stmts': this.yyastk[ this.stackPos-(8-8) ]}, attributes); -}; - -PHP.Parser.prototype.yyn51 = function ( attributes ) { - this.yyval = this.Node_Stmt_Foreach(this.yyastk[ this.stackPos-(10-3) ], this.yyastk[ this.stackPos-(10-8) ], {'keyVar': this.yyastk[ this.stackPos-(10-5) ], 'byRef': this.yyastk[ this.stackPos-(10-7) ], 'stmts': this.yyastk[ this.stackPos-(10-10) ]}, attributes); -}; - -PHP.Parser.prototype.yyn52 = function ( attributes ) { - this.yyval = this.Node_Stmt_Declare(this.yyastk[ this.stackPos-(5-3) ], this.yyastk[ this.stackPos-(5-5) ], attributes); -}; - -PHP.Parser.prototype.yyn53 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn54 = function ( attributes ) { - this.yyval = this.Node_Stmt_TryCatch(this.yyastk[ this.stackPos-(5-3) ], this.yyastk[ this.stackPos-(5-5) ], attributes); -}; - -PHP.Parser.prototype.yyn55 = function ( attributes ) { - this.yyval = this.Node_Stmt_Throw(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn56 = function ( attributes ) { - this.yyval = this.Node_Stmt_Goto(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn57 = function ( attributes ) { - this.yyval = this.Node_Stmt_Label(this.yyastk[ this.stackPos-(2-1) ], attributes); -}; - -PHP.Parser.prototype.yyn58 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn59 = function ( attributes ) { - this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; -}; - -PHP.Parser.prototype.yyn60 = function ( attributes ) { - this.yyval = this.Node_Stmt_Catch(this.yyastk[ this.stackPos-(8-3) ], this.yyastk[ this.stackPos-(8-4) ].substring( 1 ), this.yyastk[ this.stackPos-(8-7) ], attributes); -}; - -PHP.Parser.prototype.yyn61 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn62 = function ( attributes ) { - this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; -}; - -PHP.Parser.prototype.yyn63 = function ( attributes ) { - this.yyval = false; -}; - -PHP.Parser.prototype.yyn64 = function ( attributes ) { - this.yyval = true; -}; - -PHP.Parser.prototype.yyn65 = function ( attributes ) { - this.yyval = this.Node_Stmt_Function(this.yyastk[ this.stackPos-(9-3) ], {'byRef': this.yyastk[ this.stackPos-(9-2) ], 'params': this.yyastk[ this.stackPos-(9-5) ], 'stmts': this.yyastk[ this.stackPos-(9-8) ]}, attributes); -}; - -PHP.Parser.prototype.yyn66 = function ( attributes ) { - this.yyval = this.Node_Stmt_Class(this.yyastk[ this.stackPos-(7-2) ], {'type': this.yyastk[ this.stackPos-(7-1) ], 'Extends': this.yyastk[ this.stackPos-(7-3) ], 'Implements': this.yyastk[ this.stackPos-(7-4) ], 'stmts': this.yyastk[ this.stackPos-(7-6) ]}, attributes); -}; - -PHP.Parser.prototype.yyn67 = function ( attributes ) { - this.yyval = this.Node_Stmt_Interface(this.yyastk[ this.stackPos-(6-2) ], {'Extends': this.yyastk[ this.stackPos-(6-3) ], 'stmts': this.yyastk[ this.stackPos-(6-5) ]}, attributes); -}; - -PHP.Parser.prototype.yyn68 = function ( attributes ) { - this.yyval = this.Node_Stmt_Trait(this.yyastk[ this.stackPos-(5-2) ], this.yyastk[ this.stackPos-(5-4) ], attributes); -}; - -PHP.Parser.prototype.yyn69 = function ( attributes ) { - this.yyval = 0; -}; - -PHP.Parser.prototype.yyn70 = function ( attributes ) { - this.yyval = this.MODIFIER_ABSTRACT; -}; - -PHP.Parser.prototype.yyn71 = function ( attributes ) { - this.yyval = this.MODIFIER_FINAL; -}; - -PHP.Parser.prototype.yyn72 = function ( attributes ) { - this.yyval = null; -}; - -PHP.Parser.prototype.yyn73 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(2-2) ]; -}; - -PHP.Parser.prototype.yyn74 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn75 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(2-2) ]; -}; - -PHP.Parser.prototype.yyn76 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn77 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(2-2) ]; -}; - -PHP.Parser.prototype.yyn78 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn79 = function ( attributes ) { - this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; -}; - -PHP.Parser.prototype.yyn80 = function ( attributes ) { - this.yyval = Array.isArray(this.yyastk[ this.stackPos-(1-1) ]) ? this.yyastk[ this.stackPos-(1-1) ] : [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn81 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(4-2) ]; -}; - -PHP.Parser.prototype.yyn82 = function ( attributes ) { - this.yyval = Array.isArray(this.yyastk[ this.stackPos-(1-1) ]) ? this.yyastk[ this.stackPos-(1-1) ] : [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn83 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(4-2) ]; -}; - -PHP.Parser.prototype.yyn84 = function ( attributes ) { - this.yyval = Array.isArray(this.yyastk[ this.stackPos-(1-1) ]) ? this.yyastk[ this.stackPos-(1-1) ] : [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn85 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(4-2) ]; -}; - -PHP.Parser.prototype.yyn86 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn87 = function ( attributes ) { - this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; -}; - -PHP.Parser.prototype.yyn88 = function ( attributes ) { - this.yyval = this.Node_Stmt_DeclareDeclare(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn89 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(3-2) ]; -}; - -PHP.Parser.prototype.yyn90 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(4-3) ]; -}; - -PHP.Parser.prototype.yyn91 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(4-2) ]; -}; - -PHP.Parser.prototype.yyn92 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(5-3) ]; -}; - -PHP.Parser.prototype.yyn93 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn94 = function ( attributes ) { - this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; -}; - -PHP.Parser.prototype.yyn95 = function ( attributes ) { - this.yyval = this.Node_Stmt_Case(this.yyastk[ this.stackPos-(4-2) ], this.yyastk[ this.stackPos-(4-4) ], attributes); -}; - -PHP.Parser.prototype.yyn96 = function ( attributes ) { - this.yyval = this.Node_Stmt_Case(null, this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn97 = function () { - this.yyval = this.yyastk[ this.stackPos ]; -}; - -PHP.Parser.prototype.yyn98 = function () { - this.yyval = this.yyastk[ this.stackPos ]; -}; - -PHP.Parser.prototype.yyn99 = function ( attributes ) { - this.yyval = Array.isArray(this.yyastk[ this.stackPos-(1-1) ]) ? this.yyastk[ this.stackPos-(1-1) ] : [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn100 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(4-2) ]; -}; - -PHP.Parser.prototype.yyn101 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn102 = function ( attributes ) { - this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; -}; - -PHP.Parser.prototype.yyn103 = function ( attributes ) { - this.yyval = this.Node_Stmt_ElseIf(this.yyastk[ this.stackPos-(5-3) ], Array.isArray(this.yyastk[ this.stackPos-(5-5) ]) ? this.yyastk[ this.stackPos-(5-5) ] : [this.yyastk[ this.stackPos-(5-5) ]], attributes); -}; - -PHP.Parser.prototype.yyn104 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn105 = function ( attributes ) { - this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; -}; - -PHP.Parser.prototype.yyn106 = function ( attributes ) { - this.yyval = this.Node_Stmt_ElseIf(this.yyastk[ this.stackPos-(6-3) ], this.yyastk[ this.stackPos-(6-6) ], attributes); -}; - -PHP.Parser.prototype.yyn107 = function ( attributes ) { - this.yyval = null; -}; - -PHP.Parser.prototype.yyn108 = function ( attributes ) { - this.yyval = this.Node_Stmt_Else(Array.isArray(this.yyastk[ this.stackPos-(2-2) ]) ? this.yyastk[ this.stackPos-(2-2) ] : [this.yyastk[ this.stackPos-(2-2) ]], attributes); -}; - -PHP.Parser.prototype.yyn109 = function ( attributes ) { - this.yyval = null; -}; - -PHP.Parser.prototype.yyn110 = function ( attributes ) { - this.yyval = this.Node_Stmt_Else(this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn111 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn112 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn113 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn114 = function ( attributes ) { - this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; -}; - -PHP.Parser.prototype.yyn115 = function ( attributes ) { - this.yyval = this.Node_Param(this.yyastk[ this.stackPos-(3-3) ].substring( 1 ), null, this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn116 = function ( attributes ) { - this.yyval = this.Node_Param(this.yyastk[ this.stackPos-(5-3) ].substring( 1 ), this.yyastk[ this.stackPos-(5-5) ], this.yyastk[ this.stackPos-(5-1) ], this.yyastk[ this.stackPos-(5-2) ], attributes); -}; - -PHP.Parser.prototype.yyn117 = function ( attributes ) { - this.yyval = null; -}; - -PHP.Parser.prototype.yyn118 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn119 = function ( attributes ) { - this.yyval = 'array'; -}; - -PHP.Parser.prototype.yyn120 = function ( attributes ) { - this.yyval = 'callable'; -}; - -PHP.Parser.prototype.yyn121 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn122 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn123 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn124 = function ( attributes ) { - this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; -}; - -PHP.Parser.prototype.yyn125 = function ( attributes ) { - this.yyval = this.Node_Arg(this.yyastk[ this.stackPos-(1-1) ], false, attributes); -}; - -PHP.Parser.prototype.yyn126 = function ( attributes ) { - this.yyval = this.Node_Arg(this.yyastk[ this.stackPos-(2-2) ], true, attributes); -}; - -PHP.Parser.prototype.yyn127 = function ( attributes ) { - this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; -}; - -PHP.Parser.prototype.yyn128 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn129 = function ( attributes ) { - this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(1-1) ].substring( 1 ), attributes); -}; - -PHP.Parser.prototype.yyn130 = function ( attributes ) { - this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn131 = function ( attributes ) { - this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn132 = function ( attributes ) { - this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; -}; - -PHP.Parser.prototype.yyn133 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn134 = function ( attributes ) { - this.yyval = this.Node_Stmt_StaticVar(this.yyastk[ this.stackPos-(1-1) ].substring( 1 ), null, attributes); -}; - -PHP.Parser.prototype.yyn135 = function ( attributes ) { - this.yyval = this.Node_Stmt_StaticVar(this.yyastk[ this.stackPos-(3-1) ].substring( 1 ), this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn136 = function ( attributes ) { - this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; -}; - -PHP.Parser.prototype.yyn137 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn138 = function ( attributes ) { - this.yyval = this.Node_Stmt_Property(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn139 = function ( attributes ) { - this.yyval = this.Node_Stmt_ClassConst(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn140 = function ( attributes ) { - this.yyval = this.Node_Stmt_ClassMethod(this.yyastk[ this.stackPos-(8-4) ], {'type': this.yyastk[ this.stackPos-(8-1) ], 'byRef': this.yyastk[ this.stackPos-(8-3) ], 'params': this.yyastk[ this.stackPos-(8-6) ], 'stmts': this.yyastk[ this.stackPos-(8-8) ]}, attributes); -}; - -PHP.Parser.prototype.yyn141 = function ( attributes ) { - this.yyval = this.Node_Stmt_TraitUse(this.yyastk[ this.stackPos-(3-2) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn142 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn143 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(3-2) ]; -}; - -PHP.Parser.prototype.yyn144 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn145 = function ( attributes ) { - this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; -}; - -PHP.Parser.prototype.yyn146 = function ( attributes ) { - this.yyval = this.Node_Stmt_TraitUseAdaptation_Precedence(this.yyastk[ this.stackPos-(4-1) ][0], this.yyastk[ this.stackPos-(4-1) ][1], this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn147 = function ( attributes ) { - this.yyval = this.Node_Stmt_TraitUseAdaptation_Alias(this.yyastk[ this.stackPos-(5-1) ][0], this.yyastk[ this.stackPos-(5-1) ][1], this.yyastk[ this.stackPos-(5-3) ], this.yyastk[ this.stackPos-(5-4) ], attributes); -}; - -PHP.Parser.prototype.yyn148 = function ( attributes ) { - this.yyval = this.Node_Stmt_TraitUseAdaptation_Alias(this.yyastk[ this.stackPos-(4-1) ][0], this.yyastk[ this.stackPos-(4-1) ][1], this.yyastk[ this.stackPos-(4-3) ], null, attributes); -}; - -PHP.Parser.prototype.yyn149 = function ( attributes ) { - this.yyval = this.Node_Stmt_TraitUseAdaptation_Alias(this.yyastk[ this.stackPos-(4-1) ][0], this.yyastk[ this.stackPos-(4-1) ][1], null, this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn150 = function ( attributes ) { - this.yyval = array(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ]); -}; - -PHP.Parser.prototype.yyn151 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn152 = function ( attributes ) { - this.yyval = array(null, this.yyastk[ this.stackPos-(1-1) ]); -}; - -PHP.Parser.prototype.yyn153 = function ( attributes ) { - this.yyval = null; -}; - -PHP.Parser.prototype.yyn154 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(3-2) ]; -}; - -PHP.Parser.prototype.yyn155 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn156 = function ( attributes ) { - this.yyval = this.MODIFIER_PUBLIC; -}; - -PHP.Parser.prototype.yyn157 = function ( attributes ) { - this.yyval = this.MODIFIER_PUBLIC; -}; - -PHP.Parser.prototype.yyn158 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn159 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn160 = function ( attributes ) { - this.Stmt_Class_verifyModifier(this.yyastk[ this.stackPos-(2-1) ], this.yyastk[ this.stackPos-(2-2) ]); this.yyval = this.yyastk[ this.stackPos-(2-1) ] | this.yyastk[ this.stackPos-(2-2) ]; -}; - -PHP.Parser.prototype.yyn161 = function ( attributes ) { - this.yyval = this.MODIFIER_PUBLIC; -}; - -PHP.Parser.prototype.yyn162 = function ( attributes ) { - this.yyval = this.MODIFIER_PROTECTED; -}; - -PHP.Parser.prototype.yyn163 = function ( attributes ) { - this.yyval = this.MODIFIER_PRIVATE; -}; - -PHP.Parser.prototype.yyn164 = function ( attributes ) { - this.yyval = this.MODIFIER_STATIC; -}; - -PHP.Parser.prototype.yyn165 = function ( attributes ) { - this.yyval = this.MODIFIER_ABSTRACT; -}; - -PHP.Parser.prototype.yyn166 = function ( attributes ) { - this.yyval = this.MODIFIER_FINAL; -}; - -PHP.Parser.prototype.yyn167 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn168 = function ( attributes ) { - this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; -}; - -PHP.Parser.prototype.yyn169 = function ( attributes ) { - this.yyval = this.Node_Stmt_PropertyProperty(this.yyastk[ this.stackPos-(1-1) ].substring( 1 ), null, attributes); -}; - -PHP.Parser.prototype.yyn170 = function ( attributes ) { - this.yyval = this.Node_Stmt_PropertyProperty(this.yyastk[ this.stackPos-(3-1) ].substring( 1 ), this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn171 = function ( attributes ) { - this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; -}; - -PHP.Parser.prototype.yyn172 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn173 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn174 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn175 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn176 = function ( attributes ) { - this.yyval = this.Node_Expr_AssignList(this.yyastk[ this.stackPos-(6-3) ], this.yyastk[ this.stackPos-(6-6) ], attributes); -}; - -PHP.Parser.prototype.yyn177 = function ( attributes ) { - this.yyval = this.Node_Expr_Assign(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn178 = function ( attributes ) { - this.yyval = this.Node_Expr_AssignRef(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-4) ], attributes); -}; - -PHP.Parser.prototype.yyn179 = function ( attributes ) { - this.yyval = this.Node_Expr_AssignRef(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-4) ], attributes); -}; - -PHP.Parser.prototype.yyn180 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn181 = function ( attributes ) { - this.yyval = this.Node_Expr_Clone(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn182 = function ( attributes ) { - this.yyval = this.Node_Expr_AssignPlus(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn183 = function ( attributes ) { - this.yyval = this.Node_Expr_AssignMinus(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn184 = function ( attributes ) { - this.yyval = this.Node_Expr_AssignMul(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn185 = function ( attributes ) { - this.yyval = this.Node_Expr_AssignDiv(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn186 = function ( attributes ) { - this.yyval = this.Node_Expr_AssignConcat(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn187 = function ( attributes ) { - this.yyval = this.Node_Expr_AssignMod(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn188 = function ( attributes ) { - this.yyval = this.Node_Expr_AssignBitwiseAnd(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn189 = function ( attributes ) { - this.yyval = this.Node_Expr_AssignBitwiseOr(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn190 = function ( attributes ) { - this.yyval = this.Node_Expr_AssignBitwiseXor(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn191 = function ( attributes ) { - this.yyval = this.Node_Expr_AssignShiftLeft(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn192 = function ( attributes ) { - this.yyval = this.Node_Expr_AssignShiftRight(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn193 = function ( attributes ) { - this.yyval = this.Node_Expr_PostInc(this.yyastk[ this.stackPos-(2-1) ], attributes); -}; - -PHP.Parser.prototype.yyn194 = function ( attributes ) { - this.yyval = this.Node_Expr_PreInc(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn195 = function ( attributes ) { - this.yyval = this.Node_Expr_PostDec(this.yyastk[ this.stackPos-(2-1) ], attributes); -}; - -PHP.Parser.prototype.yyn196 = function ( attributes ) { - this.yyval = this.Node_Expr_PreDec(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn197 = function ( attributes ) { - this.yyval = this.Node_Expr_BooleanOr(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn198 = function ( attributes ) { - this.yyval = this.Node_Expr_BooleanAnd(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn199 = function ( attributes ) { - this.yyval = this.Node_Expr_LogicalOr(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn200 = function ( attributes ) { - this.yyval = this.Node_Expr_LogicalAnd(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn201 = function ( attributes ) { - this.yyval = this.Node_Expr_LogicalXor(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn202 = function ( attributes ) { - this.yyval = this.Node_Expr_BitwiseOr(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn203 = function ( attributes ) { - this.yyval = this.Node_Expr_BitwiseAnd(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn204 = function ( attributes ) { - this.yyval = this.Node_Expr_BitwiseXor(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn205 = function ( attributes ) { - this.yyval = this.Node_Expr_Concat(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn206 = function ( attributes ) { - this.yyval = this.Node_Expr_Plus(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn207 = function ( attributes ) { - this.yyval = this.Node_Expr_Minus(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn208 = function ( attributes ) { - this.yyval = this.Node_Expr_Mul(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn209 = function ( attributes ) { - this.yyval = this.Node_Expr_Div(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn210 = function ( attributes ) { - this.yyval = this.Node_Expr_Mod(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn211 = function ( attributes ) { - this.yyval = this.Node_Expr_ShiftLeft(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn212 = function ( attributes ) { - this.yyval = this.Node_Expr_ShiftRight(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn213 = function ( attributes ) { - this.yyval = this.Node_Expr_UnaryPlus(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn214 = function ( attributes ) { - this.yyval = this.Node_Expr_UnaryMinus(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn215 = function ( attributes ) { - this.yyval = this.Node_Expr_BooleanNot(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn216 = function ( attributes ) { - this.yyval = this.Node_Expr_BitwiseNot(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn217 = function ( attributes ) { - this.yyval = this.Node_Expr_Identical(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn218 = function ( attributes ) { - this.yyval = this.Node_Expr_NotIdentical(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn219 = function ( attributes ) { - this.yyval = this.Node_Expr_Equal(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn220 = function ( attributes ) { - this.yyval = this.Node_Expr_NotEqual(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn221 = function ( attributes ) { - this.yyval = this.Node_Expr_Smaller(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn222 = function ( attributes ) { - this.yyval = this.Node_Expr_SmallerOrEqual(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn223 = function ( attributes ) { - this.yyval = this.Node_Expr_Greater(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn224 = function ( attributes ) { - this.yyval = this.Node_Expr_GreaterOrEqual(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn225 = function ( attributes ) { - this.yyval = this.Node_Expr_Instanceof(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn226 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(3-2) ]; -}; - -PHP.Parser.prototype.yyn227 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(3-2) ]; -}; - -PHP.Parser.prototype.yyn228 = function ( attributes ) { - this.yyval = this.Node_Expr_Ternary(this.yyastk[ this.stackPos-(5-1) ], this.yyastk[ this.stackPos-(5-3) ], this.yyastk[ this.stackPos-(5-5) ], attributes); -}; - -PHP.Parser.prototype.yyn229 = function ( attributes ) { - this.yyval = this.Node_Expr_Ternary(this.yyastk[ this.stackPos-(4-1) ], null, this.yyastk[ this.stackPos-(4-4) ], attributes); -}; - -PHP.Parser.prototype.yyn230 = function ( attributes ) { - this.yyval = this.Node_Expr_Isset(this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn231 = function ( attributes ) { - this.yyval = this.Node_Expr_Empty(this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn232 = function ( attributes ) { - this.yyval = this.Node_Expr_Include(this.yyastk[ this.stackPos-(2-2) ], "Node_Expr_Include", attributes); -}; - -PHP.Parser.prototype.yyn233 = function ( attributes ) { - this.yyval = this.Node_Expr_Include(this.yyastk[ this.stackPos-(2-2) ], "Node_Expr_IncludeOnce", attributes); -}; - -PHP.Parser.prototype.yyn234 = function ( attributes ) { - this.yyval = this.Node_Expr_Eval(this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn235 = function ( attributes ) { - this.yyval = this.Node_Expr_Include(this.yyastk[ this.stackPos-(2-2) ], "Node_Expr_Require", attributes); -}; - -PHP.Parser.prototype.yyn236 = function ( attributes ) { - this.yyval = this.Node_Expr_Include(this.yyastk[ this.stackPos-(2-2) ], "Node_Expr_RequireOnce", attributes); -}; - -PHP.Parser.prototype.yyn237 = function ( attributes ) { - this.yyval = this.Node_Expr_Cast_Int(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn238 = function ( attributes ) { - this.yyval = this.Node_Expr_Cast_Double(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn239 = function ( attributes ) { - this.yyval = this.Node_Expr_Cast_String(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn240 = function ( attributes ) { - this.yyval = this.Node_Expr_Cast_Array(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn241 = function ( attributes ) { - this.yyval = this.Node_Expr_Cast_Object(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn242 = function ( attributes ) { - this.yyval = this.Node_Expr_Cast_Bool(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn243 = function ( attributes ) { - this.yyval = this.Node_Expr_Cast_Unset(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn244 = function ( attributes ) { - this.yyval = this.Node_Expr_Exit(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn245 = function ( attributes ) { - this.yyval = this.Node_Expr_ErrorSuppress(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn246 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn247 = function ( attributes ) { - this.yyval = this.Node_Expr_Array(this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn248 = function ( attributes ) { - this.yyval = this.Node_Expr_Array(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn249 = function ( attributes ) { - this.yyval = this.Node_Expr_ShellExec(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn250 = function ( attributes ) { - this.yyval = this.Node_Expr_Print(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn251 = function ( attributes ) { - this.yyval = this.Node_Expr_Closure({'static': false, 'byRef': this.yyastk[ this.stackPos-(9-2) ], 'params': this.yyastk[ this.stackPos-(9-4) ], 'uses': this.yyastk[ this.stackPos-(9-6) ], 'stmts': this.yyastk[ this.stackPos-(9-8) ]}, attributes); -}; - -PHP.Parser.prototype.yyn252 = function ( attributes ) { - this.yyval = this.Node_Expr_Closure({'static': true, 'byRef': this.yyastk[ this.stackPos-(10-3) ], 'params': this.yyastk[ this.stackPos-(10-5) ], 'uses': this.yyastk[ this.stackPos-(10-7) ], 'stmts': this.yyastk[ this.stackPos-(10-9) ]}, attributes); -}; - -PHP.Parser.prototype.yyn253 = function ( attributes ) { - this.yyval = this.Node_Expr_New(this.yyastk[ this.stackPos-(3-2) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn254 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn255 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(4-3) ]; -}; - -PHP.Parser.prototype.yyn256 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn257 = function ( attributes ) { - this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; -}; - -PHP.Parser.prototype.yyn258 = function ( attributes ) { - this.yyval = this.Node_Expr_ClosureUse(this.yyastk[ this.stackPos-(2-2) ].substring( 1 ), this.yyastk[ this.stackPos-(2-1) ], attributes); -}; - -PHP.Parser.prototype.yyn259 = function ( attributes ) { - this.yyval = this.Node_Expr_FuncCall(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn260 = function ( attributes ) { - this.yyval = this.Node_Expr_StaticCall(this.yyastk[ this.stackPos-(6-1) ], this.yyastk[ this.stackPos-(6-3) ], this.yyastk[ this.stackPos-(6-5) ], attributes); -}; - -PHP.Parser.prototype.yyn261 = function ( attributes ) { - this.yyval = this.Node_Expr_StaticCall(this.yyastk[ this.stackPos-(8-1) ], this.yyastk[ this.stackPos-(8-4) ], this.yyastk[ this.stackPos-(8-7) ], attributes); -}; - -PHP.Parser.prototype.yyn262 = function ( attributes ) { - - if (this.yyastk[ this.stackPos-(4-1) ].type === "Node_Expr_StaticPropertyFetch") { - this.yyval = this.Node_Expr_StaticCall(this.yyastk[ this.stackPos-(4-1) ].Class, this.Node_Expr_Variable(this.yyastk[ this.stackPos-(4-1) ].name, attributes), this.yyastk[ this.stackPos-(4-3) ], attributes); - } else if (this.yyastk[ this.stackPos-(4-1) ].type === "Node_Expr_ArrayDimFetch") { - var tmp = this.yyastk[ this.stackPos-(4-1) ]; - while (tmp.variable.type === "Node_Expr_ArrayDimFetch") { - tmp = tmp.variable; - } - - this.yyval = this.Node_Expr_StaticCall(tmp.variable.Class, this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); - tmp.variable = this.Node_Expr_Variable(tmp.variable.name, attributes); - } else { - throw new Exception; - } - -}; - -PHP.Parser.prototype.yyn263 = function ( attributes ) { - this.yyval = this.Node_Expr_FuncCall(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn264 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn265 = function ( attributes ) { - this.yyval = this.Node_Name('static', attributes); -}; - -PHP.Parser.prototype.yyn266 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn267 = function ( attributes ) { - this.yyval = this.Node_Name(this.yyastk[ this.stackPos-(1-1) ], attributes); -}; - -PHP.Parser.prototype.yyn268 = function ( attributes ) { - this.yyval = this.Node_Name_FullyQualified(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn269 = function ( attributes ) { - this.yyval = this.Node_Name_Relative(this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn270 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn271 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn272 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn273 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn274 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn275 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn276 = function () { - this.yyval = this.yyastk[ this.stackPos ]; -}; - -PHP.Parser.prototype.yyn277 = function ( attributes ) { - this.yyval = this.Node_Expr_PropertyFetch(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn278 = function ( attributes ) { - this.yyval = this.Node_Expr_PropertyFetch(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn279 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn280 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn281 = function ( attributes ) { - this.yyval = null; -}; - -PHP.Parser.prototype.yyn282 = function ( attributes ) { - this.yyval = null; -}; - -PHP.Parser.prototype.yyn283 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(3-2) ]; -}; - -PHP.Parser.prototype.yyn284 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn285 = function ( attributes ) { - this.yyval = [this.Scalar_String_parseEscapeSequences(this.yyastk[ this.stackPos-(1-1) ], '`')]; -}; - -PHP.Parser.prototype.yyn286 = function ( attributes ) { - ; this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn287 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn288 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(3-2) ]; -}; - -PHP.Parser.prototype.yyn289 = function ( attributes ) { - this.yyval = this.Node_Scalar_LNumber(this.Scalar_LNumber_parse(this.yyastk[ this.stackPos-(1-1) ]), attributes); -}; - -PHP.Parser.prototype.yyn290 = function ( attributes ) { - this.yyval = this.Node_Scalar_DNumber(this.Scalar_DNumber_parse(this.yyastk[ this.stackPos-(1-1) ]), attributes); -}; - -PHP.Parser.prototype.yyn291 = function ( attributes ) { - this.yyval = this.Scalar_String_create(this.yyastk[ this.stackPos-(1-1) ], attributes); -}; - -PHP.Parser.prototype.yyn292 = function ( attributes ) { - this.yyval = {type: "Node_Scalar_LineConst", attributes: attributes}; -}; - -PHP.Parser.prototype.yyn293 = function ( attributes ) { - this.yyval = {type: "Node_Scalar_FileConst", attributes: attributes}; -}; - -PHP.Parser.prototype.yyn294 = function ( attributes ) { - this.yyval = {type: "Node_Scalar_DirConst", attributes: attributes}; -}; - -PHP.Parser.prototype.yyn295 = function ( attributes ) { - this.yyval = {type: "Node_Scalar_ClassConst", attributes: attributes}; -}; - -PHP.Parser.prototype.yyn296 = function ( attributes ) { - this.yyval = {type: "Node_Scalar_TraitConst", attributes: attributes}; -}; - -PHP.Parser.prototype.yyn297 = function ( attributes ) { - this.yyval = {type: "Node_Scalar_MethodConst", attributes: attributes}; -}; - -PHP.Parser.prototype.yyn298 = function ( attributes ) { - this.yyval = {type: "Node_Scalar_FuncConst", attributes: attributes}; -}; - -PHP.Parser.prototype.yyn299 = function ( attributes ) { - this.yyval = {type: "Node_Scalar_NSConst", attributes: attributes}; -}; - -PHP.Parser.prototype.yyn300 = function ( attributes ) { - this.yyval = this.Node_Scalar_String(this.Scalar_String_parseDocString(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-2) ]), attributes); -}; - -PHP.Parser.prototype.yyn301 = function ( attributes ) { - this.yyval = this.Node_Scalar_String('', attributes); -}; - -PHP.Parser.prototype.yyn302 = function ( attributes ) { - this.yyval = this.Node_Expr_ConstFetch(this.yyastk[ this.stackPos-(1-1) ], attributes); -}; - -PHP.Parser.prototype.yyn303 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn304 = function ( attributes ) { - this.yyval = this.Node_Expr_ClassConstFetch(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn305 = function ( attributes ) { - this.yyval = this.Node_Expr_UnaryPlus(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn306 = function ( attributes ) { - this.yyval = this.Node_Expr_UnaryMinus(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn307 = function ( attributes ) { - this.yyval = this.Node_Expr_Array(this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn308 = function ( attributes ) { - this.yyval = this.Node_Expr_Array(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn309 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn310 = function ( attributes ) { - this.yyval = this.Node_Expr_ClassConstFetch(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn311 = function ( attributes ) { - ; this.yyval = this.Node_Scalar_Encapsed(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn312 = function ( attributes ) { - ; this.yyval = this.Node_Scalar_Encapsed(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn313 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn314 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(2-1) ]; -}; - -PHP.Parser.prototype.yyn315 = function () { - this.yyval = this.yyastk[ this.stackPos ]; -}; - -PHP.Parser.prototype.yyn316 = function () { - this.yyval = this.yyastk[ this.stackPos ]; -}; - -PHP.Parser.prototype.yyn317 = function ( attributes ) { - this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; -}; - -PHP.Parser.prototype.yyn318 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn319 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayItem(this.yyastk[ this.stackPos-(3-3) ], this.yyastk[ this.stackPos-(3-1) ], false, attributes); -}; - -PHP.Parser.prototype.yyn320 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayItem(this.yyastk[ this.stackPos-(1-1) ], null, false, attributes); -}; - -PHP.Parser.prototype.yyn321 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn322 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn323 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn324 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn325 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(6-2) ], this.yyastk[ this.stackPos-(6-5) ], attributes); -}; - -PHP.Parser.prototype.yyn326 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn327 = function ( attributes ) { - this.yyval = this.Node_Expr_PropertyFetch(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn328 = function ( attributes ) { - this.yyval = this.Node_Expr_MethodCall(this.yyastk[ this.stackPos-(6-1) ], this.yyastk[ this.stackPos-(6-3) ], this.yyastk[ this.stackPos-(6-5) ], attributes); -}; - -PHP.Parser.prototype.yyn329 = function ( attributes ) { - this.yyval = this.Node_Expr_FuncCall(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn330 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn331 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn332 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn333 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(3-2) ]; -}; - -PHP.Parser.prototype.yyn334 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn335 = function ( attributes ) { - this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(2-2) ], attributes); -}; - -PHP.Parser.prototype.yyn336 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn337 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn338 = function ( attributes ) { - this.yyval = this.Node_Expr_StaticPropertyFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-4) ], attributes); -}; - -PHP.Parser.prototype.yyn339 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn340 = function ( attributes ) { - this.yyval = this.Node_Expr_StaticPropertyFetch(this.yyastk[ this.stackPos-(3-1) ], this.yyastk[ this.stackPos-(3-3) ].substring( 1 ), attributes); -}; - -PHP.Parser.prototype.yyn341 = function ( attributes ) { - this.yyval = this.Node_Expr_StaticPropertyFetch(this.yyastk[ this.stackPos-(6-1) ], this.yyastk[ this.stackPos-(6-5) ], attributes); -}; - -PHP.Parser.prototype.yyn342 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn343 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn344 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn345 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayDimFetch(this.yyastk[ this.stackPos-(4-1) ], this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn346 = function ( attributes ) { - this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(1-1) ].substring( 1 ), attributes); -}; - -PHP.Parser.prototype.yyn347 = function ( attributes ) { - this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn348 = function ( attributes ) { - this.yyval = null; -}; - -PHP.Parser.prototype.yyn349 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn350 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn351 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(3-2) ]; -}; - -PHP.Parser.prototype.yyn352 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn353 = function ( attributes ) { - this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; -}; - -PHP.Parser.prototype.yyn354 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn355 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(1-1) ]; -}; - -PHP.Parser.prototype.yyn356 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(4-3) ]; -}; - -PHP.Parser.prototype.yyn357 = function ( attributes ) { - this.yyval = null; -}; - -PHP.Parser.prototype.yyn358 = function ( attributes ) { - this.yyval = []; -}; - -PHP.Parser.prototype.yyn359 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(2-1) ]; -}; - -PHP.Parser.prototype.yyn360 = function ( attributes ) { - this.yyastk[ this.stackPos-(3-1) ].push( this.yyastk[ this.stackPos-(3-3) ] ); this.yyval = this.yyastk[ this.stackPos-(3-1) ]; -}; - -PHP.Parser.prototype.yyn361 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn362 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayItem(this.yyastk[ this.stackPos-(3-3) ], this.yyastk[ this.stackPos-(3-1) ], false, attributes); -}; - -PHP.Parser.prototype.yyn363 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayItem(this.yyastk[ this.stackPos-(1-1) ], null, false, attributes); -}; - -PHP.Parser.prototype.yyn364 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayItem(this.yyastk[ this.stackPos-(4-4) ], this.yyastk[ this.stackPos-(4-1) ], true, attributes); -}; - -PHP.Parser.prototype.yyn365 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayItem(this.yyastk[ this.stackPos-(2-2) ], null, true, attributes); -}; - -PHP.Parser.prototype.yyn366 = function ( attributes ) { - this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; -}; - -PHP.Parser.prototype.yyn367 = function ( attributes ) { - this.yyastk[ this.stackPos-(2-1) ].push( this.yyastk[ this.stackPos-(2-2) ] ); this.yyval = this.yyastk[ this.stackPos-(2-1) ]; -}; - -PHP.Parser.prototype.yyn368 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(1-1) ]]; -}; - -PHP.Parser.prototype.yyn369 = function ( attributes ) { - this.yyval = [this.yyastk[ this.stackPos-(2-1) ], this.yyastk[ this.stackPos-(2-2) ]]; -}; - -PHP.Parser.prototype.yyn370 = function ( attributes ) { - this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(1-1) ].substring( 1 ), attributes); -}; - -PHP.Parser.prototype.yyn371 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayDimFetch(this.Node_Expr_Variable(this.yyastk[ this.stackPos-(4-1) ].substring( 1 ), attributes), this.yyastk[ this.stackPos-(4-3) ], attributes); -}; - -PHP.Parser.prototype.yyn372 = function ( attributes ) { - this.yyval = this.Node_Expr_PropertyFetch(this.Node_Expr_Variable(this.yyastk[ this.stackPos-(3-1) ].substring( 1 ), attributes), this.yyastk[ this.stackPos-(3-3) ], attributes); -}; - -PHP.Parser.prototype.yyn373 = function ( attributes ) { - this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn374 = function ( attributes ) { - this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(3-2) ], attributes); -}; - -PHP.Parser.prototype.yyn375 = function ( attributes ) { - this.yyval = this.Node_Expr_ArrayDimFetch(this.Node_Expr_Variable(this.yyastk[ this.stackPos-(6-2) ], attributes), this.yyastk[ this.stackPos-(6-4) ], attributes); -}; - -PHP.Parser.prototype.yyn376 = function ( attributes ) { - this.yyval = this.yyastk[ this.stackPos-(3-2) ]; -}; - -PHP.Parser.prototype.yyn377 = function ( attributes ) { - this.yyval = this.Node_Scalar_String(this.yyastk[ this.stackPos-(1-1) ], attributes); -}; - -PHP.Parser.prototype.yyn378 = function ( attributes ) { - this.yyval = this.Node_Scalar_String(this.yyastk[ this.stackPos-(1-1) ], attributes); -}; - -PHP.Parser.prototype.yyn379 = function ( attributes ) { - this.yyval = this.Node_Expr_Variable(this.yyastk[ this.stackPos-(1-1) ].substring( 1 ), attributes); -}; - - -PHP.Parser.prototype.Stmt_Namespace_postprocess = function( a ) { - return a; -}; - - -PHP.Parser.prototype.Node_Stmt_Echo = function() { - return { - type: "Node_Stmt_Echo", - exprs: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - - -PHP.Parser.prototype.Node_Stmt_If = function() { - return { - type: "Node_Stmt_If", - cond: arguments[ 0 ], - stmts: arguments[ 1 ].stmts, - elseifs: arguments[ 1 ].elseifs, - Else: arguments[ 1 ].Else || null, - attributes: arguments[ 2 ] - }; - -}; - - -PHP.Parser.prototype.Node_Stmt_For = function() { - - return { - type: "Node_Stmt_For", - init: arguments[ 0 ].init, - cond: arguments[ 0 ].cond, - loop: arguments[ 0 ].loop, - stmts: arguments[ 0 ].stmts, - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_Function = function() { - return { - type: "Node_Stmt_Function", - name: arguments[ 0 ], - byRef: arguments[ 1 ].byRef, - params: arguments[ 1 ].params, - stmts: arguments[ 1 ].stmts, - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Stmt_Class_verifyModifier = function() { - - -}; - -PHP.Parser.prototype.Node_Stmt_Namespace = function() { - return { - type: "Node_Stmt_Namespace", - name: arguments[ 0 ], - attributes: arguments[ 2 ] - }; -}; - -PHP.Parser.prototype.Node_Stmt_Use = function() { - return { - type: "Node_Stmt_Use", - name: arguments[ 0 ], - attributes: arguments[ 2 ] - }; -}; - -PHP.Parser.prototype.Node_Stmt_UseUse = function() { - return { - type: "Node_Stmt_UseUse", - name: arguments[ 0 ], - as: arguments[1], - attributes: arguments[ 2 ] - }; -}; - -PHP.Parser.prototype.Node_Stmt_TraitUseAdaptation_Precedence = function() { - return { - type: "Node_Stmt_TraitUseAdaptation_Precedence", - name: arguments[ 0 ], - attributes: arguments[ 2 ] - }; -}; - -PHP.Parser.prototype.Node_Stmt_TraitUseAdaptation_Alias = function() { - return { - type: "Node_Stmt_TraitUseAdaptation_Alias", - name: arguments[ 0 ], - attributes: arguments[ 2 ] - }; -}; - -PHP.Parser.prototype.Node_Stmt_Trait = function() { - return { - type: "Node_Stmt_Trait", - name: arguments[ 0 ], - attributes: arguments[ 2 ] - }; -}; - -PHP.Parser.prototype.Node_Stmt_TraitUse = function() { - return { - type: "Node_Stmt_TraitUse", - name: arguments[ 0 ], - attributes: arguments[ 2 ] - }; -}; - -PHP.Parser.prototype.Node_Stmt_Class = function() { - return { - type: "Node_Stmt_Class", - name: arguments[ 0 ], - Type: arguments[ 1 ].type, - Extends: arguments[ 1 ].Extends, - Implements: arguments[ 1 ].Implements, - stmts: arguments[ 1 ].stmts, - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_ClassMethod = function() { - return { - type: "Node_Stmt_ClassMethod", - name: arguments[ 0 ], - Type: arguments[ 1 ].type, - byRef: arguments[ 1 ].byRef, - params: arguments[ 1 ].params, - stmts: arguments[ 1 ].stmts, - attributes: arguments[ 2 ] - }; - -}; - - -PHP.Parser.prototype.Node_Stmt_ClassConst = function() { - return { - type: "Node_Stmt_ClassConst", - consts: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_Interface = function() { - return { - type: "Node_Stmt_Interface", - name: arguments[ 0 ], - Extends: arguments[ 1 ].Extends, - stmts: arguments[ 1 ].stmts, - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_Throw = function() { - return { - type: "Node_Stmt_Throw", - expr: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_Catch = function() { - return { - type: "Node_Stmt_Catch", - Type: arguments[ 0 ], - variable: arguments[ 1 ], - stmts: arguments[ 2 ], - attributes: arguments[ 3 ] - }; - -}; - - -PHP.Parser.prototype.Node_Stmt_TryCatch = function() { - return { - type: "Node_Stmt_TryCatch", - stmts: arguments[ 0 ], - catches: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - - -PHP.Parser.prototype.Node_Stmt_Foreach = function() { - return { - type: "Node_Stmt_Foreach", - expr: arguments[ 0 ], - valueVar: arguments[ 1 ], - keyVar: arguments[ 2 ].keyVar, - byRef: arguments[ 2 ].byRef, - stmts: arguments[ 2 ].stmts, - attributes: arguments[ 3 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_While = function() { - return { - type: "Node_Stmt_While", - cond: arguments[ 0 ], - stmts: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_Do = function() { - return { - type: "Node_Stmt_Do", - cond: arguments[ 0 ], - stmts: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_Break = function() { - return { - type: "Node_Stmt_Break", - num: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_Continue = function() { - return { - type: "Node_Stmt_Continue", - num: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_Return = function() { - return { - type: "Node_Stmt_Return", - expr: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_Case = function() { - return { - type: "Node_Stmt_Case", - cond: arguments[ 0 ], - stmts: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_Switch = function() { - return { - type: "Node_Stmt_Switch", - cond: arguments[ 0 ], - cases: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_Else = function() { - - return { - type: "Node_Stmt_Else", - stmts: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_ElseIf = function() { - return { - type: "Node_Stmt_ElseIf", - cond: arguments[ 0 ], - stmts: arguments[ 1 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_InlineHTML = function() { - return { - type: "Node_Stmt_InlineHTML", - value: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - - -PHP.Parser.prototype.Node_Stmt_StaticVar = function() { - return { - type: "Node_Stmt_StaticVar", - name: arguments[ 0 ], - def: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - - -PHP.Parser.prototype.Node_Stmt_Static = function() { - return { - type: "Node_Stmt_Static", - vars: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_Global = function() { - return { - type: "Node_Stmt_Global", - vars: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - - -PHP.Parser.prototype.Node_Stmt_PropertyProperty = function() { - return { - type: "Node_Stmt_PropertyProperty", - name: arguments[ 0 ], - def: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - - -PHP.Parser.prototype.Node_Stmt_Property = function() { - return { - type: "Node_Stmt_Property", - Type: arguments[ 0 ], - props: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Stmt_Unset = function() { - return { - type: "Node_Stmt_Unset", - variables: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - - -PHP.Parser.prototype.Node_Expr_Variable = function( a ) { - return { - type: "Node_Expr_Variable", - name: arguments[ 0 ], - attributes: arguments[ 1 ] - }; -}; - -PHP.Parser.prototype.Node_Expr_FuncCall = function() { - - return { - type: "Node_Expr_FuncCall", - func: arguments[ 0 ], - args: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_MethodCall = function() { - - return { - type: "Node_Expr_MethodCall", - variable: arguments[ 0 ], - name: arguments[ 1 ], - args: arguments[ 2 ], - attributes: arguments[ 3 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_StaticCall = function() { - - return { - type: "Node_Expr_StaticCall", - Class: arguments[ 0 ], - func: arguments[ 1 ], - args: arguments[ 2 ], - attributes: arguments[ 3 ] - }; - -}; - - -PHP.Parser.prototype.Node_Expr_Ternary = function() { - - return { - type: "Node_Expr_Ternary", - cond: arguments[ 0 ], - If: arguments[ 1 ], - Else: arguments[ 2 ], - attributes: arguments[ 3 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_AssignList = function() { - - return { - type: "Node_Expr_AssignList", - assignList: arguments[ 0 ], - expr: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - - -PHP.Parser.prototype.Node_Expr_Assign = function() { - - return { - type: "Node_Expr_Assign", - variable: arguments[ 0 ], - expr: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_AssignConcat = function() { - - return { - type: "Node_Expr_AssignConcat", - variable: arguments[ 0 ], - expr: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_AssignMinus = function() { - - return { - type: "Node_Expr_AssignMinus", - variable: arguments[ 0 ], - expr: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_AssignPlus = function() { - - return { - type: "Node_Expr_AssignPlus", - variable: arguments[ 0 ], - expr: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_AssignDiv = function() { - - return { - type: "Node_Expr_AssignDiv", - variable: arguments[ 0 ], - expr: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_AssignRef = function() { - - return { - type: "Node_Expr_AssignRef", - variable: arguments[ 0 ], - refVar: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_AssignMul = function() { - - return { - type: "Node_Expr_AssignMul", - variable: arguments[ 0 ], - expr: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_AssignMod = function() { - - return { - type: "Node_Expr_AssignMod", - variable: arguments[ 0 ], - expr: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_Plus = function() { - - return { - type: "Node_Expr_Plus", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_Minus = function() { - - return { - type: "Node_Expr_Minus", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - - -PHP.Parser.prototype.Node_Expr_Mul = function() { - - return { - type: "Node_Expr_Mul", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - - -PHP.Parser.prototype.Node_Expr_Div = function() { - - return { - type: "Node_Expr_Div", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - - -PHP.Parser.prototype.Node_Expr_Mod = function() { - - return { - type: "Node_Expr_Mod", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_Greater = function() { - - return { - type: "Node_Expr_Greater", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_Equal = function() { - - return { - type: "Node_Expr_Equal", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_NotEqual = function() { - - return { - type: "Node_Expr_NotEqual", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - - -PHP.Parser.prototype.Node_Expr_Identical = function() { - - return { - type: "Node_Expr_Identical", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - - -PHP.Parser.prototype.Node_Expr_NotIdentical = function() { - - return { - type: "Node_Expr_NotIdentical", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_GreaterOrEqual = function() { - - return { - type: "Node_Expr_GreaterOrEqual", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_SmallerOrEqual = function() { - - return { - type: "Node_Expr_SmallerOrEqual", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_Concat = function() { - - return { - type: "Node_Expr_Concat", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_Smaller = function() { - - return { - type: "Node_Expr_Smaller", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_PostInc = function() { - - return { - type: "Node_Expr_PostInc", - variable: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_PostDec = function() { - - return { - type: "Node_Expr_PostDec", - variable: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_PreInc = function() { - - return { - type: "Node_Expr_PreInc", - variable: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_PreDec = function() { - - return { - type: "Node_Expr_PreDec", - variable: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_Include = function() { - return { - expr: arguments[ 0 ], - type: arguments[ 1 ], - attributes: arguments[ 2 ] - }; -}; - -PHP.Parser.prototype.Node_Expr_ArrayDimFetch = function() { - - return { - type: "Node_Expr_ArrayDimFetch", - variable: arguments[ 0 ], - dim: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_StaticPropertyFetch = function() { - - return { - type: "Node_Expr_StaticPropertyFetch", - Class: arguments[ 0 ], - name: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_ClassConstFetch = function() { - - return { - type: "Node_Expr_ClassConstFetch", - Class: arguments[ 0 ], - name: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - - -PHP.Parser.prototype.Node_Expr_StaticPropertyFetch = function() { - - return { - type: "Node_Expr_StaticPropertyFetch", - Class: arguments[ 0 ], - name: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_ConstFetch = function() { - - return { - type: "Node_Expr_ConstFetch", - name: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_ArrayItem = function() { - - return { - type: "Node_Expr_ArrayItem", - value: arguments[ 0 ], - key: arguments[ 1 ], - byRef: arguments[ 2 ], - attributes: arguments[ 3 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_Array = function() { - - return { - type: "Node_Expr_Array", - items: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_PropertyFetch = function() { - - return { - type: "Node_Expr_PropertyFetch", - variable: arguments[ 0 ], - name: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_New = function() { - - return { - type: "Node_Expr_New", - Class: arguments[ 0 ], - args: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - - -PHP.Parser.prototype.Node_Expr_Print = function() { - return { - type: "Node_Expr_Print", - expr: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - - -PHP.Parser.prototype.Node_Expr_Exit = function() { - return { - type: "Node_Expr_Exit", - expr: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - - -PHP.Parser.prototype.Node_Expr_Cast_Bool = function() { - return { - type: "Node_Expr_Cast_Bool", - expr: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_Cast_Int = function() { - return { - type: "Node_Expr_Cast_Int", - expr: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_Cast_String = function() { - return { - type: "Node_Expr_Cast_String", - expr: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_Cast_Double = function() { - return { - type: "Node_Expr_Cast_Double", - expr: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_Cast_Array = function() { - return { - type: "Node_Expr_Cast_Array", - expr: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_Cast_Object = function() { - return { - type: "Node_Expr_Cast_Object", - expr: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - - -PHP.Parser.prototype.Node_Expr_ErrorSuppress = function() { - return { - type: "Node_Expr_ErrorSuppress", - expr: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - - -PHP.Parser.prototype.Node_Expr_Isset = function() { - return { - type: "Node_Expr_Isset", - variables: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - - - - -PHP.Parser.prototype.Node_Expr_UnaryMinus = function() { - return { - type: "Node_Expr_UnaryMinus", - expr: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - - -PHP.Parser.prototype.Node_Expr_UnaryPlus = function() { - return { - type: "Node_Expr_UnaryPlus", - expr: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_Empty = function() { - return { - type: "Node_Expr_Empty", - variable: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_BooleanOr = function() { - return { - type: "Node_Expr_BooleanOr", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_LogicalOr = function() { - return { - type: "Node_Expr_LogicalOr", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_LogicalAnd = function() { - return { - type: "Node_Expr_LogicalAnd", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - - -PHP.Parser.prototype.Node_Expr_LogicalXor = function() { - return { - type: "Node_Expr_LogicalXor", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_BitwiseAnd = function() { - return { - type: "Node_Expr_BitwiseAnd", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_BitwiseOr = function() { - return { - type: "Node_Expr_BitwiseOr", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_BitwiseXor = function() { - return { - type: "Node_Expr_BitwiseXor", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_BitwiseNot = function() { - return { - type: "Node_Expr_BitwiseNot", - expr: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_BooleanNot = function() { - return { - type: "Node_Expr_BooleanNot", - expr: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_BooleanAnd = function() { - return { - type: "Node_Expr_BooleanAnd", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_Instanceof = function() { - - return { - type: "Node_Expr_Instanceof", - left: arguments[ 0 ], - right: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Expr_Clone = function() { - - return { - type: "Node_Expr_Clone", - expr: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - - - -PHP.Parser.prototype.Scalar_LNumber_parse = function( a ) { - - return a; -}; - -PHP.Parser.prototype.Scalar_DNumber_parse = function( a ) { - - return a; -}; - -PHP.Parser.prototype.Scalar_String_parseDocString = function() { - - return '"' + arguments[ 1 ].replace(/([^"\\]*(?:\\.[^"\\]*)*)"/g, '$1\\"') + '"'; -}; - - -PHP.Parser.prototype.Node_Scalar_String = function( ) { - - return { - type: "Node_Scalar_String", - value: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Scalar_String_create = function( ) { - return { - type: "Node_Scalar_String", - value: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Scalar_LNumber = function() { - - return { - type: "Node_Scalar_LNumber", - value: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - - -PHP.Parser.prototype.Node_Scalar_DNumber = function() { - - return { - type: "Node_Scalar_DNumber", - value: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - - -PHP.Parser.prototype.Node_Scalar_Encapsed = function() { - - return { - type: "Node_Scalar_Encapsed", - parts: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Name = function() { - - return { - type: "Node_Name", - parts: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Name_FullyQualified = function() { - - return { - type: "Node_Name_FullyQualified", - parts: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Name_Relative = function() { - - return { - type: "Node_Name_Relative", - parts: arguments[ 0 ], - attributes: arguments[ 1 ] - }; - -}; - -PHP.Parser.prototype.Node_Param = function() { - - return { - type: "Node_Param", - name: arguments[ 0 ], - def: arguments[ 1 ], - Type: arguments[ 2 ], - byRef: arguments[ 3 ], - attributes: arguments[ 4 ] - }; - -}; - -PHP.Parser.prototype.Node_Arg = function() { - - return { - type: "Node_Name", - value: arguments[ 0 ], - byRef: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - -PHP.Parser.prototype.Node_Const = function() { - - return { - type: "Node_Const", - name: arguments[ 0 ], - value: arguments[ 1 ], - attributes: arguments[ 2 ] - }; - -}; - - exports.PHP = PHP; }); |