|
- // CodeMirror, copyright (c) by Marijn Haverbeke and others
- // Distributed under an MIT license: https://codemirror.net/LICENSE
-
- (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"),
- require("../pug/pug"),
- 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",
- "../pug/pug",
- "../handlebars/handlebars"], mod);
- } else { // Plain browser env
- mod(CodeMirror);
- }
- })(function (CodeMirror) {
- var tagLanguages = {
- script: [
- ["lang", /coffee(script)?/, "coffeescript"],
- ["type", /^(?:text|application)\/(?:x-)?coffee(?:script)?$/, "coffeescript"],
- ["lang", /^babel$/, "javascript"],
- ["type", /^text\/babel$/, "javascript"],
- ["type", /^text\/ecmascript-\d+$/, "javascript"]
- ],
- style: [
- ["lang", /^stylus$/i, "stylus"],
- ["lang", /^sass$/i, "sass"],
- ["lang", /^less$/i, "text/x-less"],
- ["lang", /^scss$/i, "text/x-scss"],
- ["type", /^(text\/)?(x-)?styl(us)?$/i, "stylus"],
- ["type", /^text\/sass/i, "sass"],
- ["type", /^(text\/)?(x-)?scss$/i, "text/x-scss"],
- ["type", /^(text\/)?(x-)?less$/i, "text/x-less"]
- ],
- template: [
- ["lang", /^vue-template$/i, "vue"],
- ["lang", /^pug$/i, "pug"],
- ["lang", /^handlebars$/i, "handlebars"],
- ["type", /^(text\/)?(x-)?pug$/i, "pug"],
- ["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});
- }, "htmlmixed", "xml", "javascript", "coffeescript", "css", "sass", "stylus", "pug", "handlebars");
-
- CodeMirror.defineMIME("script/x-vue", "vue");
- CodeMirror.defineMIME("text/x-vue", "vue");
- });
|