@xmobitea/gn-typescript-client
Version:
GearN Typescript Client SDK by XmobiTea (Pro)
212 lines (211 loc) • 5.19 kB
JavaScript
export class GNData {
get(k, def) {
return def;
}
getBoolean(k, def) {
return this.get(k, def);
}
getObject(k, def) {
return this.get(k, def);
}
getString(k, def) {
return this.get(k, def);
}
getNumber(k, def) {
return this.get(k, def);
}
getGNHashtable(k, def) {
return this.get(k, def);
}
getGNArray(k, def) {
return this.get(k, def);
}
static createGNHashtableFromObject(value) {
let answer = new GNHashtable();
let valueKeys = Object.keys(value);
for (let i = 0; i < valueKeys.length; i++) {
let key = valueKeys[i];
answer.add(key, value[key]);
}
return answer;
}
static createGNArrayFromArray(value) {
let answer = new GNArray();
let valueArr = value;
for (let i = 0; i < valueArr.length; i++) {
answer.add(valueArr[i]);
}
return answer;
}
static createUseDataFromOriginData(value) {
if (value == null)
return null;
let typeOfValue = typeof value;
if (typeOfValue === "string")
return value;
if (typeOfValue === "number")
return value;
if (typeOfValue === "boolean")
return value;
if (value instanceof GNArray)
return value;
if (value instanceof GNHashtable)
return value;
if (typeOfValue === "object") {
if (Array.isArray(value))
return this.createGNArrayFromArray(value);
else
return this.createGNHashtableFromObject(value);
}
return null;
}
static createDataFromUseData(value) {
if (value == null)
return null;
if (value instanceof GNArray) {
return value.toData();
}
if (value instanceof GNHashtable) {
return value.toData();
}
return value;
}
}
export class GNHashtableBuilder {
add(k, value) {
this.dict[k] = value;
return this;
}
addAll(dict) {
let keys = Object.keys(dict);
keys.forEach(keyStr => {
this.add(keyStr, dict[keyStr]);
});
return this;
}
constructor() {
this.dict = {};
this.dict = {};
}
build() {
let answer = new GNHashtable();
let keys = Object.keys(this.dict);
keys.forEach(keyStr => {
answer.add(keyStr, this.dict[keyStr]);
});
return answer;
}
}
export class GNHashtable extends GNData {
constructor() {
super(...arguments);
this.dict = {};
}
clear() {
this.dict = {};
}
remove(k) {
if (this.containsKey(k)) {
delete this.dict[k];
return true;
}
return false;
}
count() {
return Object.keys(this.dict).length;
}
containsKey(k) {
let keys = Object.keys(this.dict);
let kStr = k.toString();
return keys.indexOf(kStr) != -1;
}
get(k, def) {
let value = this.dict[k];
if (value == null)
return def;
return value;
}
add(k, value) {
this.dict[k] = GNData.createUseDataFromOriginData(value);
}
toData() {
let anwser = {};
let keys = Object.keys(this.dict);
for (let i = 0; i < keys.length; i++) {
let key = keys[i];
anwser[key] = GNData.createDataFromUseData(this.dict[key]);
}
return anwser;
}
static builder() {
return new GNHashtableBuilder();
}
toString() {
return JSON.stringify(this.dict);
}
}
export class GNArrayBuilder {
add(value) {
this.array.push(value);
return this;
}
addAll(array) {
array.forEach(o => {
this.add(o);
});
return this;
}
build() {
let awnser = new GNArray();
this.array.forEach(o => {
awnser.add(o);
});
return awnser;
}
constructor() {
this.array = [];
this.array = [];
}
}
export class GNArray extends GNData {
constructor() {
super(...arguments);
this.array = [];
}
clear() {
this.array = [];
}
remove(k) {
if (k < 0 || k >= this.array.length)
return false;
this.array.splice(k, 1);
return true;
}
count() {
return this.array.length;
}
get(k, def) {
if (k < 0 || k >= this.array.length)
return null;
let value = this.array[k];
if (value == null)
return def;
return value;
}
add(value) {
this.array.push(GNData.createUseDataFromOriginData(value));
}
toData() {
let anwser = [];
for (let i = 0; i < this.array.length; i++) {
anwser.push(GNData.createDataFromUseData(this.array[i]));
}
return anwser;
}
static builder() {
return new GNArrayBuilder();
}
toString() {
return JSON.stringify(this.array);
}
}