@minecraft/creator-tools
Version:
Minecraft Creator Tools command line and libraries.
78 lines (77 loc) • 3.27 kB
JavaScript
;
// 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;