Skip to content

Instantly share code, notes, and snippets.

View blackmambahk's full-sized avatar

robert.edgar blackmambahk

  • Hong Kong SAR China
View GitHub Profile
@blackmambahk
blackmambahk / fmt.js
Last active October 14, 2018 11:32
Example of a template 'fmt' directive
{{fmt:'The %1 job is done. What %2 to do next?', @field1, @field2}}
//assumes we have added the Array Generics polyfill
//replacement elements start at 1 not 0
//this code actually goes in the main format utility function
var reFmt1 = /%(\d+)/g;
function formatReplace(str) {
var args = Array.slice(arguments);
@blackmambahk
blackmambahk / fmt-example.js
Last active October 14, 2018 11:32
More template 'fmt' examples
{{fmt:'%d',@field1}}
{{:@field:d}}
{{:format('%d',@field1)}}
{{:format('%d',@field1) + format('d',@field2)}}
{{fmt:'%d',db.props@field1}}
@blackmambahk
blackmambahk / hash.js
Last active January 26, 2022 01:55
String Hash function
//this uses a 32bit hash with a 1/100000 collison prob for a 300 string cache
//this can has hash a 5k string 15000 per sec
//so lets say about 500 messages per msec
String.prototype.hashCode = function() {
var hash = 0, i, chr, len;
if (this.length == 0) return hash;
for (i = 0, len = this.length; i < len; i++) {
chr = this.charCodeAt(i);
hash = ((hash << 5) - hash) + chr;
hash = hash && hash; // hash |= 0; Convert to 32bit integer
@blackmambahk
blackmambahk / ready.js
Created October 14, 2018 09:20
Replacement for jQuery ready
//replacement for jQUery ready
document.addEventListener("DOMContentLoaded", function(event) {
//do work
});