116 lines
3.8 KiB
JavaScript
116 lines
3.8 KiB
JavaScript
"use strict";
|
|
// Copyright (c) Jupyter Development Team.
|
|
// Distributed under the terms of the Modified BSD License.
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
var codeeditor_1 = require("@jupyterlab/codeeditor");
|
|
var CodeMirror = require("codemirror");
|
|
require("codemirror/mode/meta");
|
|
require("codemirror/addon/runmode/runmode");
|
|
require("./codemirror-ipython");
|
|
require("./codemirror-ipythongfm");
|
|
// Bundle other common modes
|
|
require("codemirror/mode/javascript/javascript");
|
|
require("codemirror/mode/css/css");
|
|
require("codemirror/mode/prolog/prolog");
|
|
require("codemirror/mode/julia/julia");
|
|
require("codemirror/mode/r/r");
|
|
require("codemirror/mode/markdown/markdown");
|
|
require("codemirror/mode/clike/clike");
|
|
require("codemirror/mode/shell/shell");
|
|
require("codemirror/mode/sql/sql");
|
|
var coreutils_1 = require("@jupyterlab/coreutils");
|
|
/**
|
|
* The namespace for CodeMirror Mode functionality.
|
|
*/
|
|
var Mode;
|
|
(function (Mode) {
|
|
/**
|
|
* Get the raw list of available modes specs.
|
|
*/
|
|
function getModeInfo() {
|
|
return CodeMirror.modeInfo;
|
|
}
|
|
Mode.getModeInfo = getModeInfo;
|
|
/**
|
|
* Running a CodeMirror mode outside of an editor.
|
|
*/
|
|
function run(code, mode, el) {
|
|
CodeMirror.runMode(code, mode, el);
|
|
}
|
|
Mode.run = run;
|
|
/**
|
|
* Ensure a codemirror mode is available by name or Codemirror spec.
|
|
*
|
|
* @param mode - The mode to ensure. If it is a string, uses [findBest]
|
|
* to get the appropriate spec.
|
|
*
|
|
* @returns A promise that resolves when the mode is available.
|
|
*/
|
|
function ensure(mode) {
|
|
var spec = findBest(mode);
|
|
// Simplest, cheapest check by mode name.
|
|
if (CodeMirror.modes.hasOwnProperty(spec.mode)) {
|
|
return Promise.resolve(spec);
|
|
}
|
|
// Fetch the mode asynchronously.
|
|
return new Promise(function (resolve, reject) {
|
|
require(["codemirror/mode/" + spec.mode + "/" + spec.mode + ".js"], function () {
|
|
resolve(spec);
|
|
});
|
|
});
|
|
}
|
|
Mode.ensure = ensure;
|
|
/**
|
|
* Find a codemirror mode by name or CodeMirror spec.
|
|
*/
|
|
function findBest(mode) {
|
|
var modename = (typeof mode === 'string') ? mode :
|
|
mode.mode || mode.name;
|
|
var mimetype = (typeof mode !== 'string') ? mode.mime : modename;
|
|
var ext = (typeof mode !== 'string') ? mode.ext : [];
|
|
return (CodeMirror.findModeByName(modename || '') ||
|
|
CodeMirror.findModeByMIME(mimetype || '') ||
|
|
findByExtension(ext) ||
|
|
CodeMirror.findModeByMIME(codeeditor_1.IEditorMimeTypeService.defaultMimeType) ||
|
|
CodeMirror.findModeByMIME('text/plain'));
|
|
}
|
|
Mode.findBest = findBest;
|
|
/**
|
|
* Find a codemirror mode by MIME.
|
|
*/
|
|
function findByMIME(mime) {
|
|
return CodeMirror.findModeByMIME(mime);
|
|
}
|
|
Mode.findByMIME = findByMIME;
|
|
/**
|
|
* Find a codemirror mode by name.
|
|
*/
|
|
function findByName(name) {
|
|
return CodeMirror.findModeByName(name);
|
|
}
|
|
Mode.findByName = findByName;
|
|
/**
|
|
* Find a codemirror mode by filename.
|
|
*/
|
|
function findByFileName(name) {
|
|
var basename = coreutils_1.PathExt.basename(name);
|
|
return CodeMirror.findModeByFileName(basename);
|
|
}
|
|
Mode.findByFileName = findByFileName;
|
|
/**
|
|
* Find a codemirror mode by extension.
|
|
*/
|
|
function findByExtension(ext) {
|
|
if (typeof ext === 'string') {
|
|
return CodeMirror.findModeByExtension(name);
|
|
}
|
|
for (var i = 0; i < ext.length; i++) {
|
|
var mode = CodeMirror.findModeByExtension(ext[i]);
|
|
if (mode) {
|
|
return mode;
|
|
}
|
|
}
|
|
}
|
|
Mode.findByExtension = findByExtension;
|
|
})(Mode = exports.Mode || (exports.Mode = {}));
|