import { sortAttributes } from "html-attribute-sorter"; import _ from "lodash"; import type { SortHtmlAttributes } from "src/runtimeConfig"; import { Processor } from "./processor"; export class SortHtmlAttributesProcessor extends Processor { private bladeComments: string[] = []; async preProcess(content: string): Promise { return await this.sortHtmlAttribute(content); } async postProcess(_content: string): Promise {} private async sortHtmlAttribute(content: string): Promise { const strategy: SortHtmlAttributes = this.formatter.options.sortHtmlAttributes ?? "none"; if (!_.isEmpty(strategy) && strategy !== "none") { const regexes = this.formatter.options.customHtmlAttributesOrder; if (_.isArray(regexes)) { return sortAttributes(content, { order: strategy, customRegexes: regexes, }); } // when option is string const customRegexes = _.chain(regexes).split(",").map(_.trim).value(); return sortAttributes(content, { order: strategy, customRegexes }); } return content; } }