UNPKG

@minecraft/creator-tools

Version:

Minecraft Creator Tools command line and libraries.

78 lines (77 loc) 3.27 kB
"use strict"; // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const ProjectInfoItem_1 = __importDefault(require("./ProjectInfoItem")); const IProjectItemData_1 = require("../app/IProjectItemData"); const IInfoItemData_1 = require("./IInfoItemData"); const IProjectItemData_2 = require("../app/IProjectItemData"); const Utilities_1 = __importDefault(require("../core/Utilities")); const ProjectItemUtilities_1 = __importDefault(require("../app/ProjectItemUtilities")); const TopicTestIdBase = 100; /** * Aggregates file line counts and size information by content type. * * @see {@link ../../public/data/forms/mctoolsval/linesize.form.json} for topic definitions */ class LineSizeInfoGenerator { id = "LINESIZE"; title = "File Line/Size Information"; canAlwaysProcess = true; getTopicData(topicId) { if (topicId >= TopicTestIdBase) { return { title: ProjectItemUtilities_1.default.getDescriptionForType(topicId - TopicTestIdBase), }; } return { title: topicId.toString(), }; } summarize(info, infoSet) { } async generate(project, contentIndex) { const items = []; const itemsByType = {}; const lineSizeCounts = []; for (let i = 0; i < IProjectItemData_2.MaxItemTypes; i++) { lineSizeCounts[i] = 0; } const itemsCopy = project.getItemsCopy(); for (let i = 0; i < itemsCopy.length; i++) { const pi = itemsCopy[i]; let projInfoItem = undefined; if (itemsByType[pi.itemType] !== undefined) { projInfoItem = itemsByType[pi.itemType]; } else { const name = ProjectItemUtilities_1.default.getDescriptionForType(pi.itemType) + " file " + (ProjectItemUtilities_1.default.isBinaryType(pi.itemType) ? "size" : "lines"); projInfoItem = new ProjectInfoItem_1.default(IInfoItemData_1.InfoItemType.featureAggregate, this.id, TopicTestIdBase + pi.itemType, name); itemsByType[pi.itemType] = projInfoItem; items.push(projInfoItem); } if (pi.storageType === IProjectItemData_1.ProjectItemStorageType.singleFile) { if (!pi.isContentLoaded) { await pi.loadContent(); } const file = pi.primaryFile; if (file) { if (!file.isContentLoaded) { await file.loadContent(); } projInfoItem.spectrumIntFeature("size", file.coreContentLength); const content = file.content; if (content && typeof content === "string") { projInfoItem.spectrumIntFeature("lines", Utilities_1.default.countSignificantLines(content)); } } } } return items; } } exports.default = LineSizeInfoGenerator;