| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 | 
							- //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);
 
-     }
 
-     var table = {
 
-         ':': '_',
 
-         '&': '_and',
 
-         '|': '_or',
 
-         '+': '_plus',
 
-         '-': '_minus',
 
-         '*': '_star',
 
-         '/': '_slash',
 
-         '\\': '_backslash',
 
-         '~': '_tild',
 
-         '%': '_percent',
 
-         '>': '_gt',
 
-         '<': '_lt',
 
-         '=': '_eq',
 
-         ',': '_comma',
 
-         '@': '_at'
 
-     };
 
-     /* Convert a Smalltalk selector into a JS selector */
 
-     function st2js (string) {
 
-         return '_' + string
 
-             .replace(/[:&|+\-*/\\~%><=,@]/g, function (ch) {
 
-                 return table[ch];
 
-             });
 
-     };
 
-     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
 
-     }
 
- });
 
 
  |