Initial project import
This commit is contained in:
commit
23f2d29e32
11957 files changed
+1754577
No files matched your search
@@ -0,0 +1,94 @@
|
||||
module builtin
|
||||
|
||||
struct map {
|
||||
m JS.Map
|
||||
pub:
|
||||
len int
|
||||
}
|
||||
|
||||
fn (mut m map) internal_set(key JS.Any, val JS.Any) {
|
||||
//$if es5 {
|
||||
#let skey = key;
|
||||
#if (key != null && typeof key.$toJS === 'function') key = key.$toJS();
|
||||
#if (!(key in m.val.map)) {
|
||||
#m.val.length++;
|
||||
#m.val.map[key] = { key: skey, val: val };
|
||||
#} else {
|
||||
#m.val.map[key].val = val
|
||||
#}
|
||||
/*} $else {
|
||||
# if (key.hasOwnProperty('$toJS')) key = key.$toJS();
|
||||
# m.val.m.set(key,val);
|
||||
}*/
|
||||
_ := key
|
||||
_ := val
|
||||
}
|
||||
|
||||
fn (mut m map) internal_get(key JS.Any) JS.Any {
|
||||
mut val := JS.Any(unsafe { nil })
|
||||
//$if es5 {
|
||||
#if (typeof key != "string" && key != null && typeof key.$toJS === 'function') key = key.$toJS();
|
||||
#if (key in m.val.map) {
|
||||
#val = m.val.map[key].val
|
||||
#} else {
|
||||
#val = js_undefined()
|
||||
#}
|
||||
/*} $else {
|
||||
# if (key.hasOwnProperty('$toJS')) key = key.$toJS();
|
||||
# val = m.val.m.get(key)
|
||||
}*/
|
||||
_ := key
|
||||
return val
|
||||
}
|
||||
|
||||
#map.prototype.get = function (key) { return map_internal_get(this,key); }
|
||||
#map.prototype.set = function(key,val) { map_internal_set(this,key,val); }
|
||||
#map.prototype.has = function (key) { if (typeof key != "string" && key != null && typeof key.$toJS === 'function') { key = key.$toJS() } return key in this.map; }
|
||||
// Removes the mapping of a particular key from the map.
|
||||
@[unsafe]
|
||||
pub fn (mut m map) delete(key JS.Any) {
|
||||
#let k = key != null && typeof key.$toJS === 'function' ? key.$toJS() : key;
|
||||
|
||||
#if (k in m.val.map) {
|
||||
#delete m.val.map[k];
|
||||
#m.val.length--;
|
||||
#}
|
||||
|
||||
_ := key
|
||||
}
|
||||
|
||||
pub fn (m map) clone() map {
|
||||
mut res := m
|
||||
#res = v_clone_value(m)
|
||||
|
||||
return res
|
||||
}
|
||||
|
||||
pub fn (m &map) free() {}
|
||||
|
||||
pub fn (m map) keys() array {
|
||||
ret := JS.makeEmptyArray()
|
||||
#for (var key in m.map) array_push(ret,m.map[key].key,false)
|
||||
|
||||
return ret
|
||||
}
|
||||
|
||||
pub fn (m map) values() array {
|
||||
ret := JS.makeEmptyArray()
|
||||
#for (var key in m.map) array_push(ret,m.map[key].val,false);
|
||||
|
||||
return ret
|
||||
}
|
||||
|
||||
//#Object.defineProperty(map.prototype,"len",{get: function() { return this.map.size; }})
|
||||
#map.prototype.toString = function () {
|
||||
#function fmtKey(key) { return typeof key == 'string' ? '\'' + key + '\'' : key}
|
||||
#let res = '{'
|
||||
#for (const entry of this) {
|
||||
#res += fmtKey(entry[0]) + ': ' + entry[0];
|
||||
#}
|
||||
#res += '}'
|
||||
#return res;
|
||||
#}
|
||||
|
||||
#map.prototype.getOrSet = function (key, init) { const skey = key; if (typeof key != "string" && key != null && typeof key.$toJS === 'function') { key = key.$toJS() } if (key in this.map) { return this.map[key].val; } this.length++; this.map[key] = { key: skey, val: init }; return this.map[key].val; }
|
||||
Reference in new issue
Block a user