monaco-editor/test/manual/diff.js

452 lines
16 KiB
JavaScript

/// <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');
}