@manuth/woltlab-compiler
Version:
A compiler for generating WoltLab-Package `.tar` Archives and other WoltLab-Package Components
55 lines • 1.85 kB
JavaScript
import { XMLEditor } from "../../Serialization/XMLEditor.js";
import { NamedObjectDeletionFileCompiler } from "../NamedObjectDeletionFileCompiler.js";
/**
* Provides the functionality to compile emoji-files.
*/
export class EmojiFileCompiler extends NamedObjectDeletionFileCompiler {
/**
* Initializes a new instance of the {@link EmojiFileCompiler `EmojiFileCompiler`} class.
*
* @param item
* The item to compile.
*/
constructor(item) {
super(item);
}
/**
* @inheritdoc
*/
get SchemaLocation() {
return "https://www.woltlab.com/XSD/tornado/smiley.xsd";
}
/**
* @inheritdoc
*/
get ObjectTagName() {
return "smiley";
}
/**
* @inheritdoc
*
* @returns
* The serialized import.
*/
CreateImport() {
let editor = new XMLEditor(super.CreateImport());
for (let emoji of this.Item.Emojis) {
let smileyNode = editor.CreateElement("smiley");
editor.Add(smileyNode);
smileyNode.SetAttribute("name", `:${emoji.Name}:`);
smileyNode.Add(smileyNode.CreateTextElement("title", emoji.DisplayName));
if (emoji.Aliases.length > 0) {
smileyNode.Add(smileyNode.CreateCDATAElement("aliases", emoji.Aliases.map((alias) => `:${alias}:`).join("\n")));
}
if (emoji.ShowOrder) {
smileyNode.Add(smileyNode.CreateTextElement("showorder", emoji.ShowOrder.toString()));
}
smileyNode.Add(smileyNode.CreateTextElement("path", emoji.FileName));
if (emoji.HighResFileName) {
smileyNode.Add(smileyNode.CreateTextElement("path2x", emoji.HighResFileName));
}
}
return editor.Element;
}
}
//# sourceMappingURL=EmojiFileCompiler.js.map