// Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/ /** * @fileoverview Enforces consistent kebab-case for Symbol descriptors * @author Benjamin Scharf */ //------------------------------------------------------------------------------ // Rule Definition //------------------------------------------------------------------------------ /** * @type {import('eslint').Rule.RuleModule} */ const kebabCaseRegex = /^[a-z-]+$/ module.exports = { meta: { type: 'problem', docs: { description: 'Enforce kebab-case for Symbol description', category: 'Stylistic Issues', recommended: true, }, schema: [], }, create(context) { return { // eslint-disable-next-line object-shorthand 'CallExpression[callee.name="Symbol"]'(node) { const descriptor = node.arguments[0] if (!descriptor && typeof descriptor.value !== 'string') return if (!kebabCaseRegex.test(descriptor.value)) context.report({ node: descriptor, message: 'Symbol description should be in kebab-case.', }) }, } }, }