eslint-plugin-obsidianmd
Version:
Validates guidelines for Obsidian plugins
54 lines (53 loc) • 1.7 kB
JavaScript
import { ESLintUtils } from "@typescript-eslint/utils";
const ruleCreator = ESLintUtils.RuleCreator((name) => `https://github.com/obsidianmd/eslint-plugin/blob/master/docs/rules/${name}.md`);
const sampleNames = [
"MyPlugin",
"MyPluginSettings",
"SampleSettingTab",
"SampleModal",
"mySetting",
];
export default ruleCreator({
name: "sample-names",
meta: {
docs: {
description: "Rename sample plugin class names",
url: "https://docs.obsidian.md/Plugins/Releasing/Plugin+guidelines#Rename+placeholder+class+names",
},
type: "problem",
messages: {
rename: "Rename the sample classes.",
},
schema: [],
},
defaultOptions: [],
create(context) {
return {
TSInterfaceDeclaration(node) {
if (sampleNames.includes(node.id.name)) {
context.report({
node: node.id,
messageId: "rename",
});
}
},
ClassDeclaration(node) {
if (node.id && sampleNames.includes(node.id.name)) {
context.report({
node: node.id,
messageId: "rename",
});
}
},
PropertySignature(node) {
if (node.key.type === "Identifier" &&
sampleNames.includes(node.key.name)) {
context.report({
node: node.key,
messageId: "rename",
});
}
},
};
},
});