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 = {}));
 |