All files / src/codegen/generators schemaFuncGen.ts

100% Statements 5/5
100% Branches 2/2
100% Functions 2/2
100% Lines 5/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17  1x   1x   17x 32x     17x              
import { ContractSchema, ContractStorageField } from "../contractSchema";
import { Generator, ind } from "../generator";
 
export class SchemaFuncGen implements Generator {
    gen(schema: ContractSchema): string {
        const fieldEntries = schema.storage.fields.map((entry: ContractStorageField, index: number) => {
            return `entries[${index}] = MetadataSchemaEntry(${entry.id}, ${entry.permissionId?entry.permissionId:0}, FieldType.${entry.fieldTypeSolidityEnum}, ${entry.arrayLength}, FieldVisibility.${entry.visibility.toUpperCase()}, ${entry.slot}, ${entry.offset}, "${entry.key}");`;
        });
 
        return ind(4, `` +
        `function schema() pure external override returns (MetadataSchema memory) {\n` +
        `    MetadataSchemaEntry[] memory entries = new MetadataSchemaEntry[](${schema.storage.fields.length});\n` +
        `    ${fieldEntries.join("\n    ")}\n` +
        `    return MetadataSchema(1, entries);\n` +
        `}\n`);
        }
}