Created
April 3, 2013 21:38
-
-
Save johnnyt/5305608 to your computer and use it in GitHub Desktop.
HTML5 package for Amber Smalltalk
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
smalltalk.addPackage('HTML5', {}); | |
smalltalk.addClass('LocalStorage', smalltalk.Object, ['scope'], 'HTML5'); | |
smalltalk.LocalStorage.comment=unescape('LocalStorage%20is%20a%20wrapper%20around%20HTML5%20Local%20Storage.%0ATake%20a%20look%20at%3A%20http%3A//diveintohtml5.org/storage.html%0A%0AExample%0A%0A%09%7C%20local%20%7C%0A%09local%20%3A%3D%20LocalStorage%20new.%0A%09local%20at%3A%20%27message%27%20put%3A%20%27Hello%20World%21%27.%0A%09Transcript%20show%3A%20%28local%20at%3A%20%27message%27%29%3B%20cr.') | |
smalltalk.addMethod( | |
unescape('_keys'), | |
smalltalk.method({ | |
selector: unescape('keys'), | |
category: 'accessing', | |
fn: function (){ | |
var self=this; | |
var keysArray=nil; | |
keysArray=[]; | |
smalltalk.send((0), "_to_do_", [((($receiver = smalltalk.send((typeof localStorage == 'undefined' ? nil : localStorage), "_length", [])).klass === smalltalk.Number) ? $receiver -(1) : smalltalk.send($receiver, "__minus", [(1)])), (function(idx, key){key=smalltalk.send((typeof localStorage == 'undefined' ? nil : localStorage), "_key_", [idx]);return ((($receiver = smalltalk.send(key, "_match_", [smalltalk.send(unescape("%5E"), "__comma", [self['@scope']])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return smalltalk.send(keysArray, "_add_", [smalltalk.send(key, "_replace_with_", [smalltalk.send(unescape("%5E"), "__comma", [self['@scope']]), ""])]);})() : nil) : smalltalk.send($receiver, "_ifTrue_", [(function(){return smalltalk.send(keysArray, "_add_", [smalltalk.send(key, "_replace_with_", [smalltalk.send(unescape("%5E"), "__comma", [self['@scope']]), ""])]);})]));})]); | |
return keysArray; | |
return self;}, | |
args: [], | |
source: unescape('keys%0A%09%7C%20keysArray%20%7C%0A%09keysArray%20%3A%3D%20%23%28%29.%0A%090%20to%3A%20%28localStorage%20length%20-%201%29%20do%3A%20%5B%20%3Aidx%20%3Akey%20%7C%0A%09%09key%20%3A%3D%20localStorage%20key%3A%20idx.%0A%09%09%28key%20match%3A%20%27%5E%27%2C%20scope%29%0A%09%09%09ifTrue%3A%20%5B%20keysArray%20add%3A%20%28key%20replace%3A%20%28%27%5E%27%2C%20scope%29%20with%3A%20%27%27%29%20%5D%5D.%0A%09%5EkeysArray'), | |
messageSends: ["to:do:", unescape("-"), "length", "key:", "ifTrue:", "match:", unescape("%2C"), "add:", "replace:with:"], | |
referencedClasses: [] | |
}), | |
smalltalk.LocalStorage); | |
smalltalk.addMethod( | |
unescape('_scopedKey_'), | |
smalltalk.method({ | |
selector: unescape('scopedKey%3A'), | |
category: 'accessing', | |
fn: function (aString){ | |
var self=this; | |
try{((($receiver = smalltalk.send(aString, "_match_", [smalltalk.send(unescape("%5E"), "__comma", [self['@scope']])])).klass === smalltalk.Boolean) ? ($receiver ? (function(){return (function(){throw({name: 'stReturn', selector: '_scopedKey_', fn: function(){return aString}})})();})() : (function(){return (function(){throw({name: 'stReturn', selector: '_scopedKey_', fn: function(){return smalltalk.send(self['@scope'], "__comma", [aString])}})})();})()) : smalltalk.send($receiver, "_ifTrue_ifFalse_", [(function(){return (function(){throw({name: 'stReturn', selector: '_scopedKey_', fn: function(){return aString}})})();}), (function(){return (function(){throw({name: 'stReturn', selector: '_scopedKey_', fn: function(){return smalltalk.send(self['@scope'], "__comma", [aString])}})})();})])); | |
return self; | |
} catch(e) {if(e.name === 'stReturn' && e.selector === '_scopedKey_'){return e.fn()} throw(e)}}, | |
args: ["aString"], | |
source: unescape('scopedKey%3A%20aString%0A%09%28aString%20match%3A%20%27%5E%27%20%2C%20scope%29%0A%09%09ifTrue%3A%20%5B%20%5EaString%20%5D%0A%09%09ifFalse%3A%20%5B%20%5Escope%20%2C%20aString%20%5D'), | |
messageSends: ["ifTrue:ifFalse:", "match:", unescape("%2C")], | |
referencedClasses: [] | |
}), | |
smalltalk.LocalStorage); | |
smalltalk.addMethod( | |
unescape('_values'), | |
smalltalk.method({ | |
selector: unescape('values'), | |
category: 'accessing', | |
fn: function (){ | |
var self=this; | |
return smalltalk.send(smalltalk.send(self, "_keys", []), "_collect_", [(function(each){return smalltalk.send(self, "_at_", [each]);})]); | |
return self;}, | |
args: [], | |
source: unescape('values%0A%09%5Eself%20keys%20collect%3A%20%5B%20%3Aeach%20%7C%20self%20at%3A%20each%20%5D'), | |
messageSends: ["collect:", "keys", "at:"], | |
referencedClasses: [] | |
}), | |
smalltalk.LocalStorage); | |
smalltalk.addMethod( | |
unescape('_initialize'), | |
smalltalk.method({ | |
selector: unescape('initialize'), | |
category: 'initialization', | |
fn: function (){ | |
var self=this; | |
(($receiver = self['@scope']) == nil || $receiver == undefined) ? (function(){return self['@scope']="";})() : $receiver; | |
return self;}, | |
args: [], | |
source: unescape('initialize%0A%09scope%20ifNil%3A%20%5B%20scope%20%3A%3D%20%27%27%20%5D'), | |
messageSends: ["ifNil:"], | |
referencedClasses: [] | |
}), | |
smalltalk.LocalStorage); | |
smalltalk.addMethod( | |
unescape('_initializeWithScope_'), | |
smalltalk.method({ | |
selector: unescape('initializeWithScope%3A'), | |
category: 'initialization', | |
fn: function (aString){ | |
var self=this; | |
self['@scope']=smalltalk.send(aString, "__comma", ["."]); | |
smalltalk.send(self, "_initialize", []); | |
return self;}, | |
args: ["aString"], | |
source: unescape('initializeWithScope%3A%20aString%0A%09scope%20%3A%3D%20aString%20%2C%20%27.%27.%0A%09self%20initialize.'), | |
messageSends: [unescape("%2C"), "initialize"], | |
referencedClasses: [] | |
}), | |
smalltalk.LocalStorage); | |
smalltalk.addMethod( | |
unescape('_at_'), | |
smalltalk.method({ | |
selector: unescape('at%3A'), | |
category: 'accessing', | |
fn: function (aString){ | |
var self=this; | |
return smalltalk.send((typeof localStorage == 'undefined' ? nil : localStorage), "_getItem_", [smalltalk.send(self, "_scopedKey_", [aString])]); | |
return self;}, | |
args: ["aString"], | |
source: unescape('at%3A%20aString%0A%09%5ElocalStorage%20getItem%3A%20%28self%20scopedKey%3A%20aString%29'), | |
messageSends: ["getItem:", "scopedKey:"], | |
referencedClasses: [] | |
}), | |
smalltalk.LocalStorage); | |
smalltalk.addMethod( | |
unescape('_at_put_'), | |
smalltalk.method({ | |
selector: unescape('at%3Aput%3A'), | |
category: 'accessing', | |
fn: function (aString, anObject){ | |
var self=this; | |
smalltalk.send((typeof localStorage == 'undefined' ? nil : localStorage), "_setItem_value_", [smalltalk.send(self, "_scopedKey_", [aString]), anObject]); | |
return self;}, | |
args: ["aString", "anObject"], | |
source: unescape('at%3A%20aString%20put%3A%20anObject%0A%09localStorage%0A%09%09setItem%3A%20%28self%20scopedKey%3A%20aString%29%20%0A%09%09value%3A%20anObject'), | |
messageSends: ["setItem:value:", "scopedKey:"], | |
referencedClasses: [] | |
}), | |
smalltalk.LocalStorage); | |
smalltalk.addMethod( | |
unescape('_delete_'), | |
smalltalk.method({ | |
selector: unescape('delete%3A'), | |
category: 'accessing', | |
fn: function (aString){ | |
var self=this; | |
smalltalk.send((typeof localStorage == 'undefined' ? nil : localStorage), "_removeItem_", [smalltalk.send(self, "_scopedKey_", [aString])]); | |
return self;}, | |
args: ["aString"], | |
source: unescape('delete%3A%20aString%0A%09localStorage%20removeItem%3A%20%28self%20scopedKey%3A%20aString%29'), | |
messageSends: ["removeItem:", "scopedKey:"], | |
referencedClasses: [] | |
}), | |
smalltalk.LocalStorage); | |
smalltalk.addMethod( | |
unescape('_includesKey_'), | |
smalltalk.method({ | |
selector: unescape('includesKey%3A'), | |
category: 'accessing', | |
fn: function (aString){ | |
var self=this; | |
return smalltalk.send(smalltalk.send(self, "_keys", []), "_includes_", [aString]); | |
return self;}, | |
args: ["aString"], | |
source: unescape('includesKey%3A%20aString%0A%09%5Eself%20keys%20includes%3A%20aString'), | |
messageSends: ["includes:", "keys"], | |
referencedClasses: [] | |
}), | |
smalltalk.LocalStorage); | |
smalltalk.addMethod( | |
unescape('_at_ifAbsent_'), | |
smalltalk.method({ | |
selector: unescape('at%3AifAbsent%3A'), | |
category: 'accessing', | |
fn: function (aKey, aBlock){ | |
var self=this; | |
return smalltalk.send(smalltalk.send(self, "_includesKey_", [aKey]), "_ifTrue_ifFalse_", [(function(){return smalltalk.send(self, "_at_", [aKey]);}), aBlock]); | |
return self;}, | |
args: ["aKey", "aBlock"], | |
source: unescape('at%3A%20aKey%20ifAbsent%3A%20aBlock%0A%09%5E%28self%20includesKey%3A%20aKey%29%0A%09%09ifTrue%3A%20%5B%20self%20at%3A%20aKey%20%5D%0A%09%09ifFalse%3A%20aBlock'), | |
messageSends: ["ifTrue:ifFalse:", "includesKey:", "at:"], | |
referencedClasses: [] | |
}), | |
smalltalk.LocalStorage); | |
smalltalk.LocalStorage.klass.iVarNames = ['root']; | |
smalltalk.addMethod( | |
unescape('_withScope_'), | |
smalltalk.method({ | |
selector: unescape('withScope%3A'), | |
category: 'instance creation', | |
fn: function (aString){ | |
var self=this; | |
return smalltalk.send(smalltalk.send(self, "_new", []), "_initializeWithScope_", [aString]); | |
return self;}, | |
args: ["aString"], | |
source: unescape('withScope%3A%20aString%0A%09%5Eself%20new%20initializeWithScope%3A%20aString'), | |
messageSends: ["initializeWithScope:", "new"], | |
referencedClasses: [] | |
}), | |
smalltalk.LocalStorage.klass); | |
smalltalk.addClass('WebDatabase', smalltalk.Object, ['name', 'description', 'request', 'db', 'version'], 'HTML5'); | |
smalltalk.WebDatabase.comment=unescape('HTML5%20Web%20SQL%20Database%0A%0Ahttp%3A//www.html5rocks.com/en/features/storage') | |
smalltalk.addMethod( | |
unescape('_initialize'), | |
smalltalk.method({ | |
selector: unescape('initialize'), | |
category: 'initialization', | |
fn: function (){ | |
var self=this; | |
(($receiver = self['@name']) == nil || $receiver == undefined) ? (function(){return self['@name']="default";})() : $receiver; | |
(($receiver = self['@description']) == nil || $receiver == undefined) ? (function(){return self['@description']="Default DB";})() : $receiver; | |
self['@version']=""; | |
self['@db']=smalltalk.send((typeof window == 'undefined' ? nil : window), "_openDatabase_version_description_size_", [self['@name'], self['@version'], self['@description'], (1024)]); | |
return self;}, | |
args: [], | |
source: unescape('initialize%0A%09name%20ifNil%3A%20%5B%20name%20%3A%3D%20%27default%27%20%5D.%0A%09description%20ifNil%3A%20%5B%20description%20%3A%3D%20%27Default%20DB%27%20%5D.%0A%09version%20%3A%3D%20%27%27.%0A%09db%20%3A%3D%20window%20openDatabase%3A%20name%20version%3A%20version%20description%3A%20description%20size%3A%201024.'), | |
messageSends: ["ifNil:", "openDatabase:version:description:size:"], | |
referencedClasses: [] | |
}), | |
smalltalk.WebDatabase); | |
smalltalk.addMethod( | |
unescape('_db'), | |
smalltalk.method({ | |
selector: unescape('db'), | |
category: 'accessing', | |
fn: function (){ | |
var self=this; | |
return self['@db']; | |
return self;}, | |
args: [], | |
source: unescape('db%0A%09%5Edb'), | |
messageSends: [], | |
referencedClasses: [] | |
}), | |
smalltalk.WebDatabase); | |
smalltalk.addMethod( | |
unescape('_name_'), | |
smalltalk.method({ | |
selector: unescape('name%3A'), | |
category: 'accessing', | |
fn: function (aString){ | |
var self=this; | |
self['@name']=aString; | |
return self;}, | |
args: ["aString"], | |
source: unescape('name%3A%20aString%0A%09name%20%3A%3D%20aString.'), | |
messageSends: [], | |
referencedClasses: [] | |
}), | |
smalltalk.WebDatabase); | |
smalltalk.addMethod( | |
unescape('_name'), | |
smalltalk.method({ | |
selector: unescape('name'), | |
category: 'accessing', | |
fn: function (){ | |
var self=this; | |
return self['@name']; | |
return self;}, | |
args: [], | |
source: unescape('name%0A%09%5Ename'), | |
messageSends: [], | |
referencedClasses: [] | |
}), | |
smalltalk.WebDatabase); | |
smalltalk.addMethod( | |
unescape('_description'), | |
smalltalk.method({ | |
selector: unescape('description'), | |
category: 'accessing', | |
fn: function (){ | |
var self=this; | |
return self['@description']; | |
return self;}, | |
args: [], | |
source: unescape('description%0A%09%5Edescription'), | |
messageSends: [], | |
referencedClasses: [] | |
}), | |
smalltalk.WebDatabase); | |
smalltalk.addMethod( | |
unescape('_description_'), | |
smalltalk.method({ | |
selector: unescape('description%3A'), | |
category: 'accessing', | |
fn: function (aString){ | |
var self=this; | |
self['@description']=aString; | |
return self;}, | |
args: ["aString"], | |
source: unescape('description%3A%20aString%0A%09description%20%3A%3D%20aString'), | |
messageSends: [], | |
referencedClasses: [] | |
}), | |
smalltalk.WebDatabase); | |
smalltalk.addMethod( | |
unescape('_version_'), | |
smalltalk.method({ | |
selector: unescape('version%3A'), | |
category: 'accessing', | |
fn: function (aString){ | |
var self=this; | |
self['@version']=aString; | |
return self;}, | |
args: ["aString"], | |
source: unescape('version%3A%20aString%0A%09version%20%3A%3D%20aString.'), | |
messageSends: [], | |
referencedClasses: [] | |
}), | |
smalltalk.WebDatabase); | |
smalltalk.addMethod( | |
unescape('_version'), | |
smalltalk.method({ | |
selector: unescape('version'), | |
category: 'accessing', | |
fn: function (){ | |
var self=this; | |
return self['@version']; | |
return self;}, | |
args: [], | |
source: unescape('version%0A%09%5Eversion'), | |
messageSends: [], | |
referencedClasses: [] | |
}), | |
smalltalk.WebDatabase); | |
smalltalk.addMethod( | |
unescape('_executeSql_args_onSuccess_onError_'), | |
smalltalk.method({ | |
selector: unescape('executeSql%3Aargs%3AonSuccess%3AonError%3A'), | |
category: 'api', | |
fn: function (aSqlString, anArray, aSuccessBlock, anErrorBlock){ | |
var self=this; | |
smalltalk.send(self['@db'], "_transaction_", [(function(tx){return smalltalk.send(tx, "_executeSql_args_onSuccess_onError_", [aSqlString, anArray, aSuccessBlock, anErrorBlock]);})]); | |
return self;}, | |
args: ["aSqlString", "anArray", "aSuccessBlock", "anErrorBlock"], | |
source: unescape('executeSql%3A%20aSqlString%20args%3A%20anArray%20onSuccess%3A%20aSuccessBlock%20onError%3A%20anErrorBlock%0A%09db%20transaction%3A%20%5B%20%3Atx%20%7C%0A%09%09tx%20executeSql%3A%20aSqlString%0A%09%09%09args%3A%20anArray%0A%09%09%09onSuccess%3A%20aSuccessBlock%0A%09%09%09onError%3A%20anErrorBlock%20%5D'), | |
messageSends: ["transaction:", "executeSql:args:onSuccess:onError:"], | |
referencedClasses: [] | |
}), | |
smalltalk.WebDatabase); | |
smalltalk.addMethod( | |
unescape('_executeSql_args_'), | |
smalltalk.method({ | |
selector: unescape('executeSql%3Aargs%3A'), | |
category: 'api', | |
fn: function (aSqlString, anArray){ | |
var self=this; | |
smalltalk.send(self, "_executeSql_args_onSuccess_onError_", [aSqlString, anArray, (function(){return nil;}), (function(tx, error){return smalltalk.send((typeof console == 'undefined' ? nil : console), "_log_", [error]);})]); | |
return self;}, | |
args: ["aSqlString", "anArray"], | |
source: unescape('executeSql%3A%20aSqlString%20args%3A%20anArray%0A%09self%20executeSql%3A%20aSqlString%0A%09%09args%3A%20anArray%0A%09%09onSuccess%3A%20%5B%5D%0A%09%09onError%3A%20%5B%20%3Atx%20%3Aerror%20%7C%20console%20log%3A%20error%20%5D'), | |
messageSends: ["executeSql:args:onSuccess:onError:", "log:"], | |
referencedClasses: [] | |
}), | |
smalltalk.WebDatabase); | |
smalltalk.addMethod( | |
unescape('_executeSql_'), | |
smalltalk.method({ | |
selector: unescape('executeSql%3A'), | |
category: 'api', | |
fn: function (aSqlString){ | |
var self=this; | |
smalltalk.send(self, "_executeSql_args_onSuccess_onError_", [aSqlString, (function(){return nil;}), (function(){return nil;}), (function(tx, error){return smalltalk.send((typeof console == 'undefined' ? nil : console), "_log_", [error]);})]); | |
return self;}, | |
args: ["aSqlString"], | |
source: unescape('executeSql%3A%20aSqlString%0A%09self%20executeSql%3A%20aSqlString%0A%09%09args%3A%20%5B%5D%0A%09%09onSuccess%3A%20%5B%5D%0A%09%09onError%3A%20%5B%20%3Atx%20%3Aerror%20%7C%20console%20log%3A%20error%20%5D'), | |
messageSends: ["executeSql:args:onSuccess:onError:", "log:"], | |
referencedClasses: [] | |
}), | |
smalltalk.WebDatabase); | |
smalltalk.addMethod( | |
unescape('_named_description_'), | |
smalltalk.method({ | |
selector: unescape('named%3Adescription%3A'), | |
category: 'instance creation', | |
fn: function (aName, aDescription){ | |
var self=this; | |
return (function($rec){smalltalk.send($rec, "_name_", [aName]);smalltalk.send($rec, "_description_", [aDescription]);smalltalk.send($rec, "_initialize", []);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_basicNew", [])); | |
return self;}, | |
args: ["aName", "aDescription"], | |
source: unescape('named%3A%20aName%20description%3A%20aDescription%0A%09%5Eself%20basicNew%0A%09%09name%3A%20aName%3B%0A%09%09description%3A%20aDescription%3B%0A%09%09initialize%3B%0A%09%09yourself.'), | |
messageSends: ["name:", "description:", "initialize", "yourself", "basicNew"], | |
referencedClasses: [] | |
}), | |
smalltalk.WebDatabase.klass); | |
smalltalk.addMethod( | |
unescape('_named_'), | |
smalltalk.method({ | |
selector: unescape('named%3A'), | |
category: 'instance creation', | |
fn: function (aName){ | |
var self=this; | |
return (function($rec){smalltalk.send($rec, "_name_", [aName]);smalltalk.send($rec, "_description_", [""]);smalltalk.send($rec, "_initialize", []);return smalltalk.send($rec, "_yourself", []);})(smalltalk.send(self, "_basicNew", [])); | |
return self;}, | |
args: ["aName"], | |
source: unescape('named%3A%20aName%0A%09%5Eself%20basicNew%0A%09%09name%3A%20aName%3B%0A%09%09description%3A%20%27%27%3B%0A%09%09initialize%3B%0A%09%09yourself.'), | |
messageSends: ["name:", "description:", "initialize", "yourself", "basicNew"], | |
referencedClasses: [] | |
}), | |
smalltalk.WebDatabase.klass); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment