1
0
Эх сурвалжийг харах

Add diff editor test page

Alex Dima 8 жил өмнө
parent
commit
2b855d64b6
3 өөрчлөгдсөн 477 нэмэгдсэн , 0 устгасан
  1. 20 0
      test/diff.html
  2. 454 0
      test/diff.js
  3. 3 0
      test/index.js

+ 20 - 0
test/diff.html

@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html>
+<head>
+	<meta http-equiv="X-UA-Compatible" content="IE=edge" />
+	<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
+</head>
+<body>
+
+<div id="container" style="float:left;width:800px;height:450px;border: 1px solid grey"></div>
+<div style="clear:both"></div>
+
+<script src="../metadata.js"></script>
+<script src="dev-setup.js"></script>
+<script>
+	loadEditor(function() {
+		require(['./diff'], function() {});
+	});
+</script>
+</body>
+</html>

+ 454 - 0
test/diff.js

@@ -0,0 +1,454 @@
+/// <reference path="../node_modules/monaco-editor-core/monaco.d.ts" />
+define(['require'], function (require) {
+
+	var container = document.getElementById('container');
+
+	var original = monaco.editor.createModel(getOriginalStr(), 'javascript');
+	var modified = monaco.editor.createModel(getModifiedStr(), 'javascript');
+
+	var diffEditor = monaco.editor.createDiffEditor(container, {
+	});
+
+	diffEditor.setModel({
+		original: original,
+		modified: modified
+	});
+
+});
+
+function getOriginalStr() {
+	return [
+		'/*',
+		'  © Microsoft. All rights reserved.',
+		'',
+		'  This library is supported for use in Windows Tailored Apps only.',
+		'',
+		'  Build: 6.2.8100.0',
+		'  Version: 0.5',
+		'*/',
+		'',
+		'(function (global, undefined) {',
+		'	"use strict";',
+		'	undefinedVariable = {};',
+		'	undefinedVariable.prop = 5;',
+		'',
+		'	function initializeProperties(target, members) {',
+		'		var keys = Object.keys(members);',
+		'		var properties;',
+		'		var i, len;',
+		'		for (i = 0, len = keys.length; i < len; i++) {',
+		'			var key = keys[i];',
+		'			var enumerable = key.charCodeAt(0) !== /*_*/95;',
+		'			var member = members[key];',
+		'			if (member && typeof member === \'object\') {',
+		'				if (member.value !== undefined || typeof member.get === \'function\' || typeof member.set === \'function\') {',
+		'					if (member.enumerable === undefined) {',
+		'						member.enumerable = enumerable;',
+		'					}',
+		'					properties = properties || {};',
+		'					properties[key] = member;',
+		'					continue;',
+		'				}',
+		'			}',
+		'			// These next lines will be deleted',
+		'			if (!enumerable) {',
+		'				properties = properties || {};',
+		'				properties[key] = { value: member, enumerable: enumerable, configurable: true, writable: true }',
+		'				continue;',
+		'			}',
+		'			target[key] = member;',
+		'		}',
+		'		if (properties) {',
+		'			Object.defineProperties(target, properties);',
+		'		}',
+		'	}',
+		'',
+		'	(function (rootNamespace) {',
+		'',
+		'		// Create the rootNamespace in the global namespace',
+		'		if (!global[rootNamespace]) {',
+		'			global[rootNamespace] = Object.create(Object.prototype);',
+		'		}',
+		'',
+		'		// Cache the rootNamespace we just created in a local variable',
+		'		var _rootNamespace = global[rootNamespace];',
+		'		if (!_rootNamespace.Namespace) {',
+		'			_rootNamespace.Namespace = Object.create(Object.prototype);',
+		'		}',
+		'',
+		'		function defineWithParent(parentNamespace, name, members) {',
+		'			/// <summary locid="1">',
+		'			/// Defines a new namespace with the specified name, under the specified parent namespace.',
+		'			/// </summary>',
+		'			/// <param name="parentNamespace" type="Object" locid="2">',
+		'			/// The parent namespace which will contain the new namespace.',
+		'			/// </param>',
+		'			/// <param name="name" type="String" locid="3">',
+		'			/// Name of the new namespace.',
+		'			/// </param>',
+		'			/// <param name="members" type="Object" locid="4">',
+		'			/// Members in the new namespace.',
+		'			/// </param>',
+		'			/// <returns locid="5">',
+		'			/// The newly defined namespace.',
+		'			/// </returns>',
+		'			var currentNamespace = parentNamespace,',
+		'				namespaceFragments = name.split(".");',
+		'',
+		'			for (var i = 0, len = namespaceFragments.length; i < len; i++) {',
+		'				var namespaceName = namespaceFragments[i];',
+		'				if (!currentNamespace[namespaceName]) {',
+		'					Object.defineProperty(currentNamespace, namespaceName,',
+		'						{ value: {}, writable: false, enumerable: true, configurable: true }',
+		'					);',
+		'				}',
+		'				currentNamespace = currentNamespace[namespaceName];',
+		'			}',
+		'',
+		'			if (members) {',
+		'				initializeProperties(currentNamespace, members);',
+		'			}',
+		'',
+		'			return currentNamespace;',
+		'		}',
+		'',
+		'		function define(name, members) {',
+		'			/// <summary locid="6">',
+		'			/// Defines a new namespace with the specified name.',
+		'			/// </summary>',
+		'			/// <param name="name" type="String" locid="7">',
+		'			/// Name of the namespace.  This could be a dot-separated nested name.',
+		'			/// </param>',
+		'			/// <param name="members" type="Object" locid="4">',
+		'			/// Members in the new namespace.',
+		'			/// </param>',
+		'			/// <returns locid="5">',
+		'			/// The newly defined namespace.',
+		'			/// </returns>',
+		'			return defineWithParent(global, name, members);',
+		'		}',
+		'',
+		'		// Establish members of the "WinJS.Namespace" namespace',
+		'		Object.defineProperties(_rootNamespace.Namespace, {',
+		'',
+		'			defineWithParent: { value: defineWithParent, writable: true, enumerable: true },',
+		'',
+		'			define: { value: define, writable: true, enumerable: true }',
+		'',
+		'		});',
+		'',
+		'	})("WinJS");',
+		'',
+		'	(function (WinJS) {',
+		'',
+		'		function define(constructor, instanceMembers, staticMembers) {',
+		'			/// <summary locid="8">',
+		'			/// Defines a class using the given constructor and with the specified instance members.',
+		'			/// </summary>',
+		'			/// <param name="constructor" type="Function" locid="9">',
+		'			/// A constructor function that will be used to instantiate this class.',
+		'			/// </param>',
+		'			/// <param name="instanceMembers" type="Object" locid="10">',
+		'			/// The set of instance fields, properties and methods to be made available on the class.',
+		'			/// </param>',
+		'			/// <param name="staticMembers" type="Object" locid="11">',
+		'			/// The set of static fields, properties and methods to be made available on the class.',
+		'			/// </param>',
+		'			/// <returns type="Function" locid="12">',
+		'			/// The newly defined class.',
+		'			/// </returns>',
+		'			constructor = constructor || function () { };',
+		'			if (instanceMembers) {',
+		'				initializeProperties(constructor.prototype, instanceMembers);',
+		'			}',
+		'			if (staticMembers) {',
+		'				initializeProperties(constructor, staticMembers);',
+		'			}',
+		'			return constructor;',
+		'		}',
+		'',
+		'		function derive(baseClass, constructor, instanceMembers, staticMembers) {',
+		'			/// <summary locid="13">',
+		'			/// Uses prototypal inheritance to create a sub-class based on the supplied baseClass parameter.',
+		'			/// </summary>',
+		'			/// <param name="baseClass" type="Function" locid="14">',
+		'			/// The class to inherit from.',
+		'			/// </param>',
+		'			/// <param name="constructor" type="Function" locid="9">',
+		'			/// A constructor function that will be used to instantiate this class.',
+		'			/// </param>',
+		'			/// <param name="instanceMembers" type="Object" locid="10">',
+		'			/// The set of instance fields, properties and methods to be made available on the class.',
+		'			/// </param>',
+		'			/// <param name="staticMembers" type="Object" locid="11">',
+		'			/// The set of static fields, properties and methods to be made available on the class.',
+		'			/// </param>',
+		'			/// <returns type="Function" locid="12">',
+		'			/// The newly defined class.',
+		'			/// </returns>',
+		'			if (baseClass) {',
+		'				constructor = constructor || function () { };',
+		'				var basePrototype = baseClass.prototype;',
+		'				constructor.prototype = Object.create(basePrototype);',
+		'				Object.defineProperty(constructor.prototype, "_super", { value: basePrototype });',
+		'				Object.defineProperty(constructor.prototype, "constructor", { value: constructor });',
+		'				if (instanceMembers) {',
+		'					initializeProperties(constructor.prototype, instanceMembers);',
+		'				}',
+		'				if (staticMembers) {',
+		'					initializeProperties(constructor, staticMembers);',
+		'				}',
+		'				return constructor;',
+		'			} else {',
+		'				return define(constructor, instanceMembers, staticMembers);',
+		'			}',
+		'		}',
+		'',
+		'		function mix(constructor) {',
+		'			/// <summary locid="15">',
+		'			/// Defines a class using the given constructor and the union of the set of instance members',
+		'			/// specified by all the mixin objects.  The mixin parameter list can be of variable length.',
+		'			/// </summary>',
+		'			/// <param name="constructor" locid="9">',
+		'			/// A constructor function that will be used to instantiate this class.',
+		'			/// </param>',
+		'			/// <returns locid="12">',
+		'			/// The newly defined class.',
+		'			/// </returns>',
+		'			constructor = constructor || function () { };',
+		'			var i, len;',
+		'			for (i = 0, len = arguments.length; i < len; i++) {',
+		'				initializeProperties(constructor.prototype, arguments[i]);',
+		'			}',
+		'			return constructor;',
+		'		}',
+		'',
+		'		// Establish members of "WinJS.Class" namespace',
+		'		WinJS.Namespace.define("WinJS.Class", {',
+		'			define: define,',
+		'			derive: derive,',
+		'			mix: mix',
+		'		});',
+		'',
+		'	})(WinJS);',
+		'',
+		'})(this);'
+	].join('\n');
+}
+
+function getModifiedStr() {
+	return [
+		'/*',
+		'  © Microsoft. All rights reserved.',
+		'',
+		'  This library is supported for use in Windows Tailored Apps only.',
+		'',
+		'  Build: 6.2.8100.0',
+		'  Version: 0.5',
+		'*/',
+		'',
+		'// Here are some inserted lines',
+		'// with some extra comments',
+		'',
+		'(function (global, undefined) {',
+		'	"use strict";',
+		'	var definedVariable = {};',
+		'	definedVariable.prop = 5;',
+		'',
+		'	function initializeProperties(target, members) {',
+		'		var keys = Object.keys(members);',
+		'		var properties;',
+		'		var i, len;',
+		'		for (i = 0, len = keys.length; i < len; i++) {',
+		'			var key = keys[i];',
+		'			var enumerable = key.charCodeAt(0) !== /*_*/95;',
+		'			var member = members[key];',
+		'			if (member && typeof member === \'object\') {',
+		'				if (member.value !== undefined || typeof member.get === \'function\' || typeof member.set === \'function\') {',
+		'					if (member.enumerable === undefined) {',
+		'						member.enumerable = enumerable;',
+		'					}',
+		'					properties = properties || {};',
+		'					properties[key] = member;',
+		'					continue;',
+		'				}',
+		'			}',
+		'			target[key] = member;',
+		'		}',
+		'		if (properties) {',
+		'			Object.defineProperties(target, properties);',
+		'		}',
+		'	}',
+		'',
+		'	(function (rootNamespace) {',
+		'',
+		'		// Create the rootNamespace in the global namespace',
+		'		if (!global[rootNamespace]) {',
+		'			global[rootNamespace] = Object.create(Object.prototype);',
+		'		}',
+		'',
+		'		// Cache the rootNamespace we just created in a local variable',
+		'		var _rootNamespace = global[rootNamespace];',
+		'		if (!_rootNamespace.Namespace) {',
+		'			_rootNamespace.Namespace = Object.create(Object.prototype);',
+		'		}',
+		'',
+		'		function defineWithParent(parentNamespace, name, members) {',
+		'			/// <summary locid="1">',
+		'			/// Defines a new namespace with the specified name, under the specified parent namespace.',
+		'			/// </summary>',
+		'			/// <param name="parentNamespace" type="Object" locid="2">',
+		'			/// The parent namespace which will contain the new namespace.',
+		'			/// </param>',
+		'			/// <param name="name" type="String" locid="3">',
+		'			/// Name of the new namespace.',
+		'			/// </param>',
+		'			/// <param name="members" type="Object" locid="4">',
+		'			/// Members in the new namespace.',
+		'			/// </param>',
+		'			/// <returns locid="5">',
+		'			/// The newly defined namespace.',
+		'			/// </returns>',
+		'			var currentNamespace = parentNamespace,',
+		'				namespaceFragments = name.split(".");',
+		'',
+		'			for (var i = 0, len = namespaceFragments.length; i < len; i++) {',
+		'				var namespaceName = namespaceFragments[i];',
+		'				if (!currentNamespace[namespaceName]) {',
+		'					Object.defineProperty(currentNamespace, namespaceName,',
+		'						{ value: {}, writable: false, enumerable: true, configurable: true }',
+		'					);',
+		'				}',
+		'				currentNamespace = currentNamespace[namespaceName];',
+		'			}',
+		'',
+		'			if (members) {',
+		'				initializeProperties(currentNamespace, members);',
+		'			}',
+		'',
+		'			return currentNamespace;',
+		'		}',
+		'',
+		'		function define(name, members) {',
+		'			/// <summary locid="6">',
+		'			/// Defines a new namespace with the specified name.',
+		'			/// </summary>',
+		'			/// <param name="name" type="String" locid="7">',
+		'			/// Name of the namespace.  This could be a dot-separated nested name.',
+		'			/// </param>',
+		'			/// <param name="members" type="Object" locid="4">',
+		'			/// Members in the new namespace.',
+		'			/// </param>',
+		'			/// <returns locid="5">',
+		'			/// The newly defined namespace.',
+		'			/// </returns>',
+		'			return defineWithParent(global, name, members);',
+		'		}',
+		'',
+		'		// Establish members of the "WinJS.Namespace" namespace',
+		'		Object.defineProperties(_rootNamespace.Namespace, {',
+		'',
+		'			defineWithParent: { value: defineWithParent, writable: true, enumerable: true },',
+		'',
+		'			define: { value: define, writable: true, enumerable: true }',
+		'',
+		'		});',
+		'',
+		'	})("WinJS");',
+		'',
+		'	(function (WinJS) {',
+		'',
+		'		function define(constructor, instanceMembers, staticMembers) {',
+		'			/// <summary locid="8">',
+		'			/// Defines a class using the given constructor and with the specified instance members.',
+		'			/// </summary>',
+		'			/// <param name="constructor" type="Function" locid="9">',
+		'			/// A constructor function that will be used to instantiate this class.',
+		'			/// </param>',
+		'			/// <param name="instanceMembers" type="Object" locid="10">',
+		'			/// The set of instance fields, properties and methods to be made available on the class.',
+		'			/// </param>',
+		'			/// <param name="staticMembers" type="Object" locid="11">',
+		'			/// The set of static fields, properties and methods to be made available on the class.',
+		'			/// </param>',
+		'			/// <returns type="Function" locid="12">',
+		'			/// The newly defined class.',
+		'			/// </returns>',
+		'			constructor = constructor || function () { };',
+		'			if (instanceMembers) {',
+		'				initializeProperties(constructor.prototype, instanceMembers);',
+		'			}',
+		'			if (staticMembers) {',
+		'				initializeProperties(constructor, staticMembers);',
+		'			}',
+		'			return constructor;',
+		'		}',
+		'',
+		'		function derive(baseClass, constructor, instanceMembers, staticMembers) {',
+		'			/// <summary locid="13">',
+		'			/// Uses prototypal inheritance to create a sub-class based on the supplied baseClass parameter.',
+		'			/// </summary>',
+		'			/// <param name="baseClass" type="Function" locid="14">',
+		'			/// The class to inherit from.',
+		'			/// </param>',
+		'			/// <param name="constructor" type="Function" locid="9">',
+		'			/// A constructor function that will be used to instantiate this class.',
+		'			/// </param>',
+		'			/// <param name="instanceMembers" type="Object" locid="10">',
+		'			/// The set of instance fields, properties and methods to be made available on the class.',
+		'			/// </param>',
+		'			/// <param name="staticMembers" type="Object" locid="11">',
+		'			/// The set of static fields, properties and methods to be made available on the class.',
+		'			/// </param>',
+		'			/// <returns type="Function" locid="12">',
+		'			/// The newly defined class.',
+		'			/// </returns>',
+		'			if (baseClass) {',
+		'				constructor = constructor || function () { };',
+		'				var basePrototype = baseClass.prototype;',
+		'				constructor.prototype = Object.create(basePrototype);',
+		'				Object.defineProperty(constructor.prototype, "_super", { value: basePrototype });',
+		'				Object.defineProperty(constructor.prototype, "constructor", { value: constructor });',
+		'				if (instanceMembers) {',
+		'					initializeProperties(constructor.prototype, instanceMembers);',
+		'				}',
+		'				if (staticMembers) {',
+		'					initializeProperties(constructor, staticMembers);',
+		'				}',
+		'				return constructor;',
+		'			} else {',
+		'				return define(constructor, instanceMembers, staticMembers);',
+		'			}',
+		'		}',
+		'',
+		'		function mix(constructor) {',
+		'			/// <summary locid="15">',
+		'			/// Defines a class using the given constructor and the union of the set of instance members',
+		'			/// specified by all the mixin objects.  The mixin parameter list can be of variable length.',
+		'			/// </summary>',
+		'			/// <param name="constructor" locid="9">',
+		'			/// A constructor function that will be used to instantiate this class.',
+		'			/// </param>',
+		'			/// <returns locid="12">',
+		'			/// The newly defined class.',
+		'			/// </returns>',
+		'			constructor = constructor || function () { };',
+		'			var i, len;',
+		'			for (i = 0, len = arguments.length; i < len; i++) {',
+		'				initializeProperties(constructor.prototype, arguments[i]);',
+		'			}',
+		'			return constructor;',
+		'		}',
+		'',
+		'		// Establish members of "WinJS.Class" namespace',
+		'		WinJS.Namespace.define("WinJS.Class", {',
+		'			define: define,',
+		'			derive: derive,',
+		'			mix: mix',
+		'		});',
+		'',
+		'	})(WinJS);',
+		'',
+		'})(this);',
+	].join('\n');
+}

+ 3 - 0
test/index.js

@@ -14,6 +14,9 @@ var editor = monaco.editor.create(document.getElementById('container'), {
 	wrappingColumn: WRAPPING_COLUMN,
 	outlineMarkers: false,
 	renderWhitespace: true,
+	minimap: {
+		enabled: true
+	}
 	// scrollbar: {
 	// 	verticalHasArrows: true,
 	// 	horizontalHasArrows: true