Skip to content

Instantly share code, notes, and snippets.

@johnnyt
Created April 3, 2013 21:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save johnnyt/5305608 to your computer and use it in GitHub Desktop.
Save johnnyt/5305608 to your computer and use it in GitHub Desktop.
HTML5 package for Amber Smalltalk
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