vue.js
77 lines
| 2.8 KiB
| application/javascript
|
JavascriptLexer
r1 | // CodeMirror, copyright (c) by Marijn Haverbeke and others | |||
r4105 | // Distributed under an MIT license: https://codemirror.net/LICENSE | |||
r1 | ||||
(function (mod) { | ||||
"use strict"; | ||||
if (typeof exports === "object" && typeof module === "object") {// CommonJS | ||||
mod(require("../../lib/codemirror"), | ||||
require("../../addon/mode/overlay"), | ||||
require("../xml/xml"), | ||||
require("../javascript/javascript"), | ||||
require("../coffeescript/coffeescript"), | ||||
require("../css/css"), | ||||
require("../sass/sass"), | ||||
require("../stylus/stylus"), | ||||
r4105 | require("../pug/pug"), | |||
r1 | require("../handlebars/handlebars")); | |||
} else if (typeof define === "function" && define.amd) { // AMD | ||||
define(["../../lib/codemirror", | ||||
"../../addon/mode/overlay", | ||||
"../xml/xml", | ||||
"../javascript/javascript", | ||||
"../coffeescript/coffeescript", | ||||
"../css/css", | ||||
"../sass/sass", | ||||
"../stylus/stylus", | ||||
r4105 | "../pug/pug", | |||
r1 | "../handlebars/handlebars"], mod); | |||
} else { // Plain browser env | ||||
mod(CodeMirror); | ||||
} | ||||
})(function (CodeMirror) { | ||||
var tagLanguages = { | ||||
script: [ | ||||
["lang", /coffee(script)?/, "coffeescript"], | ||||
r4105 | ["type", /^(?:text|application)\/(?:x-)?coffee(?:script)?$/, "coffeescript"], | |||
["lang", /^babel$/, "javascript"], | ||||
["type", /^text\/babel$/, "javascript"], | ||||
["type", /^text\/ecmascript-\d+$/, "javascript"] | ||||
r1 | ], | |||
style: [ | ||||
["lang", /^stylus$/i, "stylus"], | ||||
["lang", /^sass$/i, "sass"], | ||||
r4105 | ["lang", /^less$/i, "text/x-less"], | |||
["lang", /^scss$/i, "text/x-scss"], | ||||
r1 | ["type", /^(text\/)?(x-)?styl(us)?$/i, "stylus"], | |||
r4105 | ["type", /^text\/sass/i, "sass"], | |||
["type", /^(text\/)?(x-)?scss$/i, "text/x-scss"], | ||||
["type", /^(text\/)?(x-)?less$/i, "text/x-less"] | ||||
r1 | ], | |||
template: [ | ||||
["lang", /^vue-template$/i, "vue"], | ||||
r4105 | ["lang", /^pug$/i, "pug"], | |||
r1 | ["lang", /^handlebars$/i, "handlebars"], | |||
r4105 | ["type", /^(text\/)?(x-)?pug$/i, "pug"], | |||
r1 | ["type", /^text\/x-handlebars-template$/i, "handlebars"], | |||
[null, null, "vue-template"] | ||||
] | ||||
}; | ||||
CodeMirror.defineMode("vue-template", function (config, parserConfig) { | ||||
var mustacheOverlay = { | ||||
token: function (stream) { | ||||
if (stream.match(/^\{\{.*?\}\}/)) return "meta mustache"; | ||||
while (stream.next() && !stream.match("{{", false)) {} | ||||
return null; | ||||
} | ||||
}; | ||||
return CodeMirror.overlayMode(CodeMirror.getMode(config, parserConfig.backdrop || "text/html"), mustacheOverlay); | ||||
}); | ||||
CodeMirror.defineMode("vue", function (config) { | ||||
return CodeMirror.getMode(config, {name: "htmlmixed", tags: tagLanguages}); | ||||
r4105 | }, "htmlmixed", "xml", "javascript", "coffeescript", "css", "sass", "stylus", "pug", "handlebars"); | |||
r1 | ||||
CodeMirror.defineMIME("script/x-vue", "vue"); | ||||
r4105 | CodeMirror.defineMIME("text/x-vue", "vue"); | |||
r1 | }); | |||