| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 | 
							- //jshint eqnull:true
 
- define(function () {
 
-     "use strict";
 
-     function inherits (child, parent) {
 
-         child.prototype = Object.create(parent.prototype, {
 
-             constructor: {
 
-                 value: child,
 
-                 enumerable: false, configurable: true, writable: true
 
-             }
 
-         });
 
-         return child;
 
-     }
 
-     function installMethodOfJsObject (obj, name, fn) {
 
-         Object.defineProperty(obj, name, {
 
-             value: fn,
 
-             enumerable: false, configurable: true, writable: true
 
-         });
 
-     }
 
-     function noop () {
 
-     }
 
-     function declareJsMethod (obj, name) {
 
-         if (obj[name] == null) installMethodOfJsObject(obj, name, noop);
 
-     }
 
-     /* Convert a Smalltalk selector into a JS selector */
 
-     function st2js (string) {
 
-         return '_' + string
 
-             .replace(/:/g, '_')
 
-             .replace(/[\&]/g, '_and')
 
-             .replace(/[\|]/g, '_or')
 
-             .replace(/[+]/g, '_plus')
 
-             .replace(/-/g, '_minus')
 
-             .replace(/[*]/g, '_star')
 
-             .replace(/[\/]/g, '_slash')
 
-             .replace(/[\\]/g, '_backslash')
 
-             .replace(/[\~]/g, '_tild')
 
-             .replace(/%/g, '_percent')
 
-             .replace(/>/g, '_gt')
 
-             .replace(/</g, '_lt')
 
-             .replace(/=/g, '_eq')
 
-             .replace(/,/g, '_comma')
 
-             .replace(/[@]/g, '_at');
 
-     };
 
-     function js2st (selector) {
 
-         if (selector.match(/^__/)) {
 
-             return binaryJsToSt(selector);
 
-         } else {
 
-             return keywordJsToSt(selector);
 
-         }
 
-     }
 
-     function keywordJsToSt (selector) {
 
-         return selector.replace(/^_/, '').replace(/_/g, ':');
 
-     }
 
-     function binaryJsToSt (selector) {
 
-         return selector
 
-             .replace(/^_/, '')
 
-             .replace(/_and/g, '&')
 
-             .replace(/_or/g, '|')
 
-             .replace(/_plus/g, '+')
 
-             .replace(/_minus/g, '-')
 
-             .replace(/_star/g, '*')
 
-             .replace(/_slash/g, '/')
 
-             .replace(/_backslash/g, '\\')
 
-             .replace(/_tild/g, '~')
 
-             .replace(/_percent/g, '%')
 
-             .replace(/_gt/g, '>')
 
-             .replace(/_lt/g, '<')
 
-             .replace(/_eq/g, '=')
 
-             .replace(/_comma/g, ',')
 
-             .replace(/_at/g, '@');
 
-     }
 
-     function addElement (array, el) {
 
-         if (typeof el === 'undefined') {
 
-             return;
 
-         }
 
-         if (array.indexOf(el) === -1) {
 
-             array.push(el);
 
-         }
 
-     }
 
-     function removeElement (array, el) {
 
-         var i = array.indexOf(el);
 
-         if (i !== -1) {
 
-             array.splice(i, 1);
 
-         }
 
-     }
 
-     function extend (target, source) {
 
-         Object.keys(source).forEach(function (key) {
 
-             target[key] = source[key];
 
-         });
 
-         return target;
 
-     }
 
-     function extendWithMethods (target, source) {
 
-         Object.keys(source).forEach(function (key) {
 
-             installMethodOfJsObject(target, key, source[key]);
 
-         });
 
-         return target;
 
-     }
 
-     function deleteKeysFrom (keys, obj) {
 
-         keys.forEach(function (each) {
 
-             delete obj[each];
 
-         });
 
-     }
 
-     return {
 
-         deleteKeysFrom: deleteKeysFrom,
 
-         extendWithMethods: extendWithMethods,
 
-         extend: extend,
 
-         removeElement: removeElement,
 
-         addElement: addElement,
 
-         js2st: js2st,
 
-         st2js: st2js,
 
-         declareJsMethod: declareJsMethod,
 
-         installMethodOfJsObject: installMethodOfJsObject,
 
-         inherits: inherits
 
-     }
 
- });
 
 
  |