UNPKG

tolk-codegen

Version:

## Example generator ### Create builder file in root folder ``builder.ts``

65 lines (64 loc) 2.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildCell = buildCell; const core_1 = require("@ton/core"); const decorators_1 = require("../decorators"); const travel_1 = require("../travel"); const build = { [decorators_1.DataType.SLICE]: (builder, value, field) => { if (value instanceof core_1.Slice) { builder.storeSlice(value); } else { builder.storeSlice(buildCell(value).asSlice()); } }, [decorators_1.DataType.BIT]: (builder, value, field) => { builder.storeBit(value); }, [decorators_1.DataType.COINS]: (builder, value, field) => { builder.storeCoins(value); }, [decorators_1.DataType.INT]: (builder, value, field) => { builder.storeInt(value, field.size); }, [decorators_1.DataType.UINT]: (builder, value, field) => { builder.storeUint(value, field.size); }, [decorators_1.DataType.REF]: (builder, value, field) => { if (value instanceof core_1.Cell) { builder.storeRef(value); } else { builder.storeRef(buildCell(value)); } }, [decorators_1.DataType.ADDRESS]: (builder, value, field) => { builder.storeAddress(value); }, [decorators_1.DataType.STRING_TAIL]: (builder, value, field) => { builder.storeStringTail(value); }, [decorators_1.DataType.DICT]: (builder, value, field) => { var _a; builder.storeDict(value, (_a = field.dict) === null || _a === void 0 ? void 0 : _a.key, field.dict.value); } }; function buildCell(object, builder = (0, core_1.beginCell)()) { (0, travel_1.travel)(object.constructor, (prototype, field) => { if (!build[field.buildType]) { throw `${field.buildType} data type`; } const value = object[field.name]; if (field.mayBe) { if (value) { builder.storeBit(true); } else { builder.storeBit(false); } } build[field.buildType](builder, object[field.name], field); }); return builder.endCell(); }