/*jslint evil: true, browser: true, immed: true, passfail: true, undef: true, newcap: true*/ var Contract = (function () { ///<summary> class Contract </summary> /// <returns type="Contract" /> function ContractError(message, fileName, lineNumber) { ///<summary> class ContractError </summary> /// <param name="message" type="String"> args </param> /// <param name="fileName" type="String"> args </param> /// <param name="lineNumber" type="Number"> args </param> /// <returns type="ContractError" /> this.message = message; this.fileName = fileName; this.lineNumber = lineNumber; } ContractError.prototype = new Error(); ContractError.prototype.constructor = ContractError; ContractError.prototype.name = 'ContractError'; function ofType(obj, type) { return (typeof obj === type); } function getMessage(base, msg) { return base + ((typeof msg === "string") ? (" - '" + msg + "'.") : "."); } function instanceOf(arg, type, msg) { if (!(arg instanceof type)) { msg = getMessage("The argument was not an instance of type: " + type.name, msg); throw new ContractError(msg); } } // These methods are used for preconditions function expectType(arg, type, msg) { var argType = typeof arg; if (argType !== type) { msg = getMessage("The argument was not of expected type: '" + type + "' - was '" + argType + "'", msg); throw new ContractError(msg); } } function expect(condition, msg) { ///<summary> Enforce condition </summary> /// <param name="condition" type="Boolean"> any statement or value that evaluates like an if(condition) </param> /// <param name="msg" type="String"> Message if condition is not met </param> /// <returns type="void" /> if (!condition) { throw new ContractError(getMessage("The required condition was not met", msg)); } } function expectObject(arg, msg) { expectType(arg, "object", msg); } function expectNumber(arg, msg) { expectType(arg, "number", msg); } function expectString(arg, msg) { expectType(arg, "string", msg); } function expectRegExp(arg, msg) { instanceOf(arg, RegExp, msg); } function expectDOMElement(arg, msg) { throw new Error("Not implemented"); } function expectValue(arg, values, msg) { if (!values instanceof Array) { values = [values]; } var i = values.length; while (i--) { if (arg === values[i]) { return; } } throw new ContractError(getMessage("argument has an invalid value, '" + arg + "' not in '" + values.join() + "'", msg)); } function expectWhen(precondition, condition, msg) { if (precondition) { expect(condition, msg); } } return { expect: expect, expectWhen: expectWhen, expectObject: expectObject, expectNumber: expectNumber, expectString: expectString, expectRegExp: expectRegExp, expectValue: expectValue }; } ());
var SmartPdm = { alert: function (alertText) { /// <summary> Creates a Hello World Alert. This is only to test intellisense</summary> /// <returns type="void" /> alert(alertText); }, otherFunction: function() { // do something else } };
/// <reference path="jsContract.js" /> /// <reference path="RootNamespace.js" /> /*===============================================================================================*/ $(document).ready(function () { RootNamespace.Subspace.init(); }); /*===============================================================================================*/ (function ($) { Contract.expect(RootNamespace, "RootNamespacenamespace not loaded"); $.extend(RootNamespace, { Subspace: { /*-----------------------------------------------------------------------------------*/ init: function() { // do document.ready stuff here }, /*-----------------------------------------------------------------------------------*/ test: function() { alert('This is a test.'); } } /* RootNamespace.Subspace namespace */ }); /* extend */ })(jQuery); /* function ($) */ /*===============================================================================================*/