this repo has no description
1import { MarkdownRule, Ruleset, SlateRule } from "@moonlight-mod/types/coreExtensions/markdown";
2
3export const rules: Record<string, (rules: Record<string, MarkdownRule>) => MarkdownRule> = {};
4export const slateRules: Record<string, (rules: Record<string, SlateRule>) => SlateRule> = {};
5export const slateDecorators: Record<string, string> = {};
6export const ruleBlacklists: Record<Ruleset, Record<string, boolean>> = {
7 RULES: {},
8 CHANNEL_TOPIC_RULES: {},
9 VOICE_CHANNEL_STATUS_RULES: {},
10 EMBED_TITLE_RULES: {},
11 INLINE_REPLY_RULES: {},
12 GUILD_VERIFICATION_FORM_RULES: {},
13 GUILD_EVENT_RULES: {},
14 PROFILE_BIO_RULES: {},
15 AUTO_MODERATION_SYSTEM_MESSAGE_RULES: {},
16 NATIVE_SEARCH_RESULT_LINK_RULES: {}
17};
18
19export function addRule(
20 name: string,
21 markdown: (rules: Record<string, MarkdownRule>) => MarkdownRule,
22 slate: (rules: Record<string, SlateRule>) => SlateRule,
23 decorator?: string
24) {
25 rules[name] = markdown;
26 slateRules[name] = slate;
27 if (decorator != null) slateDecorators[name] = decorator;
28}
29
30export function blacklistFromRuleset(ruleset: Ruleset, name: string) {
31 if (ruleBlacklists[ruleset] == null) ruleBlacklists[ruleset] = {};
32 ruleBlacklists[ruleset][name] = true;
33}
34
35export function _addRules(originalRules: Record<string, MarkdownRule>) {
36 for (const name in rules) {
37 originalRules["__moonlight_" + name] = rules[name](originalRules);
38 }
39
40 return originalRules;
41}
42
43export function _addSlateRules(originalRules: Record<string, SlateRule>) {
44 for (const name in slateRules) {
45 originalRules["__moonlight_" + name] = slateRules[name](originalRules);
46 }
47
48 return originalRules;
49}
50
51export function _addSlateDecorators(originalRules: Record<string, string>) {
52 for (const name in slateDecorators) {
53 originalRules["__moonlight_" + name] = slateDecorators[name];
54 }
55
56 return originalRules;
57}
58
59export function _applyRulesetBlacklist(rulesets: Record<Ruleset, Record<string, MarkdownRule>>) {
60 for (const ruleset of Object.keys(rulesets) as Ruleset[]) {
61 if (ruleset === "RULES") continue;
62
63 const rules = rulesets[ruleset];
64 for (const rule in ruleBlacklists[ruleset] || {}) {
65 delete rules["__moonlight_" + rule];
66 }
67 }
68}