# core/converters/filename.converter.ts

> 16 lines of code and 4 definitions.

Tree: GovLab Quality
Language: typescript
Layer: processing
Canonical: https://banes-lab.com/anatomy/quality#file-quality-core-converters-filename-converter-ts
Source text: https://banes-lab.com/source/quality/core/converters/filename.converter.ts.txt

Listed in [core/converters](https://banes-lab.com/api/source/quality/core/converters.md), after [core/converters/exclusions.converter.ts](https://banes-lab.com/source/quality/core/converters/exclusions.converter.ts.md) and before [core/converters/rule.converter.ts](https://banes-lab.com/source/quality/core/converters/rule.converter.ts.md).

## Definitions

- `forwardSlashed` (lexical_declaration, line 12, exported)
- `dirOf` (lexical_declaration, line 16, exported)
- `stripExtension` (lexical_declaration, line 3, exported)
- `norm` (lexical_declaration, line 17, exported)

## Contained in

- [core/converters](https://banes-lab.com/anatomy/quality/folder-quality-core-converters.md)

## Used by

- [core/loaders/coverage.loader.ts](https://banes-lab.com/source/quality/core/loaders/coverage.loader.ts.md)
- [core/loaders/package.loader.ts](https://banes-lab.com/source/quality/core/loaders/package.loader.ts.md)
- [core/resolvers/package.resolver.ts](https://banes-lab.com/source/quality/core/resolvers/package.resolver.ts.md)
- [core/selectors/block.selector.ts](https://banes-lab.com/source/quality/core/selectors/block.selector.ts.md)

## Linked from

- [core/loaders](https://banes-lab.com/anatomy/quality/folder-quality-core-loaders.md)
- [core/resolvers](https://banes-lab.com/anatomy/quality/folder-quality-core-resolvers.md)
- [core/selectors](https://banes-lab.com/anatomy/quality/folder-quality-core-selectors.md)

## Source

```typescript
import { SOURCE_EXTENSIONS } from "#configuration/constants/specifier.constants";

export const stripExtension = function stripExtension(value: string): string {
    for (const ext of SOURCE_EXTENSIONS) {
        if (value.endsWith(ext)) {
            return value.slice(0, value.length - ext.length);
        }
    }
    return value;
};

export const forwardSlashed = function forwardSlashed(value: string): string {
    return value.split("\\").join("/");
};

export const dirOf = function dirOf(file: string): string {
    const norm = forwardSlashed(file);
    return norm.slice(0, norm.lastIndexOf("/"));
};
```
