public addFile()

in src/main.ts [399:429]


	public addFile(original: string, keys: KeyInfo[], messages: MessageInfo[]) {
		if (keys.length === 0) {
			return;
		}
		if (keys.length !== messages.length) {
			throw new Error(`Un-matching keys(${keys.length}) and messages(${messages.length}).`);
		}

		this.files[original] = [];
		const existingKeys: Set<string> = new Set();

		for (let i = 0; i < keys.length; i++) {
			const keyInfo = keys[i];
			const key = KeyInfo.key(keyInfo);
			if (existingKeys.has(key)) {
				continue;
			}
			existingKeys.add(key);

			const messageInfo = messages[i];
			const message = encodeEntities(MessageInfo.message(messageInfo));
			const comment: string | undefined = function(comments: string[] | undefined) {
				if (comments === undefined) {
					return undefined;
				}
				return comments.map(comment => encodeEntities(comment)).join(`\r\n`);
			}(KeyInfo.comment(keyInfo) ?? MessageInfo.comment(messageInfo));

			this.files[original].push(comment !== undefined ? { id: key, message: message, comment: comment } : { id: key, message: message });
		}
	}