mirror of
https://github.com/OliveTin/OliveTin
synced 2025-12-18 12:05:32 +00:00
75 lines
1.8 KiB
JavaScript
75 lines
1.8 KiB
JavaScript
import { assertString, isString } from './validateTypes.mjs';
|
|
import { isComment } from './typeGuards.mjs';
|
|
|
|
export const DISABLE_COMMAND = '-disable';
|
|
export const DISABLE_LINE_COMMAND = '-disable-line';
|
|
export const DISABLE_NEXT_LINE_COMMAND = '-disable-next-line';
|
|
export const ENABLE_COMMAND = '-enable';
|
|
|
|
const ALL_COMMANDS = new Set([
|
|
DISABLE_COMMAND,
|
|
DISABLE_LINE_COMMAND,
|
|
DISABLE_NEXT_LINE_COMMAND,
|
|
ENABLE_COMMAND,
|
|
]);
|
|
|
|
export const DEFAULT_CONFIGURATION_COMMENT = 'stylelint';
|
|
|
|
/**
|
|
* Extract a command from a given comment.
|
|
*
|
|
* @param {string} commentText
|
|
* @param {string} [configurationComment]
|
|
* @returns {string}
|
|
*/
|
|
export function extractConfigurationComment(
|
|
commentText,
|
|
configurationComment = DEFAULT_CONFIGURATION_COMMENT,
|
|
) {
|
|
if (!commentText) return commentText;
|
|
|
|
const [command] = commentText.split(/\s/, 1);
|
|
|
|
assertString(command);
|
|
|
|
return command.replace(configurationComment, '');
|
|
}
|
|
|
|
/**
|
|
* Tests if the given comment is a Stylelint command.
|
|
*
|
|
* @param {string | import('postcss').Node} textOrNode
|
|
* @param {string} [configurationComment]
|
|
* @returns {boolean}
|
|
*/
|
|
export function isConfigurationComment(
|
|
textOrNode,
|
|
configurationComment = DEFAULT_CONFIGURATION_COMMENT,
|
|
) {
|
|
const commentText = isString(textOrNode)
|
|
? textOrNode
|
|
: isComment(textOrNode)
|
|
? textOrNode.text
|
|
: undefined;
|
|
|
|
if (!commentText) return false;
|
|
|
|
const command = extractConfigurationComment(commentText, configurationComment);
|
|
|
|
return command !== undefined && ALL_COMMANDS.has(command);
|
|
}
|
|
|
|
/**
|
|
* Get full stylelint command
|
|
*
|
|
* @param {string} command
|
|
* @param {string} [configurationComment]
|
|
* @returns {string}
|
|
*/
|
|
export function getConfigurationComment(
|
|
command,
|
|
configurationComment = DEFAULT_CONFIGURATION_COMMENT,
|
|
) {
|
|
return `${configurationComment}${command}`;
|
|
}
|