node-sass-magic-importer
Version:
Custom node-sass importer for selector specific imports, node importing, module importing, globbing support and importing files only once
27 lines (22 loc) • 1.09 kB
text/typescript
import { IEscapeSelector } from '../interfaces/IEscapeSelector';
import { IProcessRawSelectorFilters } from '../interfaces/IProcessRawSelectorFilters';
import { ISelectorFilter, ISelectorFilterRaw } from '../interfaces/ISelectorFilter';
export function processRawSelectorFiltersFactory(
escapeSelector: IEscapeSelector,
): IProcessRawSelectorFilters {
return (rawSelectorFilters: ISelectorFilterRaw[]) => {
return rawSelectorFilters.map((rawSelectorFilter) => {
const selectorFilter: ISelectorFilter = { selector: ``, replacement: undefined };
const matchRegExpSelector = rawSelectorFilter.selector.match(/^\/(.+)\/([a-z]*)$/);
if (matchRegExpSelector) {
const pattern = escapeSelector(matchRegExpSelector[1], `\\\\`);
const flags = matchRegExpSelector[2];
selectorFilter.selector = new RegExp(pattern, flags);
} else {
selectorFilter.selector = escapeSelector(rawSelectorFilter.selector);
}
selectorFilter.replacement = escapeSelector(rawSelectorFilter.replacement);
return selectorFilter;
});
};
}