1
0
mirror of https://github.com/chinchang/web-maker.git synced 2025-07-13 10:06:23 +02:00

refactor mode detection to support more modes

This commit is contained in:
Kushagra Gour
2018-10-15 16:25:13 +05:30
parent f341488c17
commit ad210d0b25

View File

@ -3,11 +3,17 @@ import UserCodeMirror from './UserCodeMirror';
import { modes, HtmlModes, CssModes, JsModes } from '../codeModes'; import { modes, HtmlModes, CssModes, JsModes } from '../codeModes';
import { log, loadJS } from '../utils'; import { log, loadJS } from '../utils';
import { linearizeFiles, assignFilePaths, getFileFromPath } from '../fileUtils'; import {
linearizeFiles,
assignFilePaths,
getFileFromPath,
getExtensionFromFileName
} from '../fileUtils';
import { SplitPane } from './SplitPane'; import { SplitPane } from './SplitPane';
import { trackEvent } from '../analytics'; import { trackEvent } from '../analytics';
import CodeMirror from '../CodeMirror'; import CodeMirror from '../CodeMirror';
import 'codemirror/mode/meta';
import { deferred } from '../deferred'; import { deferred } from '../deferred';
import { SidePane } from './SidePane'; import { SidePane } from './SidePane';
import { Console } from './Console'; import { Console } from './Console';
@ -125,26 +131,19 @@ export default class ContentWrapFiles extends Component {
} }
createEditorDoc(file) { createEditorDoc(file) {
let mode; const detectedMode = CodeMirror.findModeByExtension(
if (file.name.match(/\.css$/)) { getExtensionFromFileName(file.name)
mode = modes[CssModes.CSS]; );
} else if (file.name.match(/\.js$/)) { let mode, mime;
mode = modes[JsModes.JS]; if (detectedMode) {
} else if (file.name.match(/\.html$/)) { mode = detectedMode.mode;
mode = modes[HtmlModes.HTML]; mime = detectedMode.mimes ? detectedMode.mimes[0] : detectedMode.mime;
} else if (file.name.match(/\.md$/) || file.name.match(/\.markdown$/)) {
mode = modes[HtmlModes.MARKDOWN]; CodeMirror.autoLoadMode(this.cm, mode);
} else if (file.name.match(/\.sass$/)) {
mode = modes[CssModes.SASS];
} else if (file.name.match(/\.scss$/)) {
mode = modes[CssModes.SCSS];
} }
CodeMirror.autoLoadMode(this.cm, mode.cmPath || mode.cmMode);
this.fileBuffers[file.path] = CodeMirror.Doc( this.fileBuffers[file.path] = CodeMirror.Doc(
file.content || '', file.content || '',
mode.cmMode detectedMode ? mime : 'text/plain'
); );
} }