From 57e93b91c5a7769160c7faff5f09e54158984a8e Mon Sep 17 00:00:00 2001 From: Elio Struyf Date: Thu, 24 Feb 2022 18:04:09 +0100 Subject: [PATCH] #268 - preserve casing of filename on creation --- package.json | 6 ++++++ src/commands/Article.ts | 1 - src/constants/settings.ts | 2 ++ src/helpers/ArticleHelper.ts | 5 +++-- 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index d2f78f7f..208e5bf4 100644 --- a/package.json +++ b/package.json @@ -498,6 +498,12 @@ }, "scope": "Data" }, + "frontMatter.file.preserveCasing": { + "type": "boolean", + "default": false, + "markdownDescription": "Specify if you want to preserve the casing of your file names from the title. [Check in the docs](https://frontmatter.codes/docs/settings#frontmatter.file.preservecasing)", + "scope": "File" + }, "frontMatter.framework.id": { "type": "string", "default": "", diff --git a/src/commands/Article.ts b/src/commands/Article.ts index ac92a1f8..c737a136 100644 --- a/src/commands/Article.ts +++ b/src/commands/Article.ts @@ -8,7 +8,6 @@ import { Notifications } from '../helpers/Notifications'; import { extname, basename, parse, dirname } from 'path'; import { COMMAND_NAME, DefaultFields } from '../constants'; import { DashboardData } from '../models/DashboardData'; -import { ExplorerView } from '../explorerView/ExplorerView'; import { DateHelper } from '../helpers/DateHelper'; import { parseWinPath } from '../helpers/parseWinPath'; import { Telemetry } from '../helpers/Telemetry'; diff --git a/src/constants/settings.ts b/src/constants/settings.ts index bac61155..d6664e6f 100644 --- a/src/constants/settings.ts +++ b/src/constants/settings.ts @@ -64,6 +64,8 @@ export const SETTINGS_DATA_FILES = "data.files"; export const SETTINGS_DATA_FOLDERS = "data.folders"; export const SETTINGS_DATA_TYPES = "data.types"; +export const SETTINGS_FILE_PRESERVE_CASING = "file.preserveCasing"; + export const SETTINGS_FRAMEWORK_ID = "framework.id"; export const SETTINGS_FRAMEWORK_START = "framework.startCommand"; diff --git a/src/helpers/ArticleHelper.ts b/src/helpers/ArticleHelper.ts index e950659f..71ab9e66 100644 --- a/src/helpers/ArticleHelper.ts +++ b/src/helpers/ArticleHelper.ts @@ -2,7 +2,7 @@ import { MarkdownFoldingProvider } from './../providers/MarkdownFoldingProvider' import { DEFAULT_CONTENT_TYPE, DEFAULT_CONTENT_TYPE_NAME } from './../constants/ContentType'; import * as vscode from 'vscode'; import * as fs from "fs"; -import { DefaultFields, SETTINGS_CONTENT_DEFAULT_FILETYPE, SETTINGS_CONTENT_PLACEHOLDERS, SETTINGS_CONTENT_SUPPORTED_FILETYPES, SETTING_COMMA_SEPARATED_FIELDS, SETTING_DATE_FIELD, SETTING_DATE_FORMAT, SETTING_INDENT_ARRAY, SETTING_REMOVE_QUOTES, SETTING_SITE_BASEURL, SETTING_TAXONOMY_CONTENT_TYPES, SETTING_TEMPLATES_PREFIX } from '../constants'; +import { DefaultFields, SETTINGS_CONTENT_DEFAULT_FILETYPE, SETTINGS_CONTENT_PLACEHOLDERS, SETTINGS_CONTENT_SUPPORTED_FILETYPES, SETTINGS_FILE_PRESERVE_CASING, SETTING_COMMA_SEPARATED_FIELDS, SETTING_DATE_FIELD, SETTING_DATE_FORMAT, SETTING_INDENT_ARRAY, SETTING_REMOVE_QUOTES, SETTING_SITE_BASEURL, SETTING_TAXONOMY_CONTENT_TYPES, SETTING_TEMPLATES_PREFIX } from '../constants'; import { DumpOptions } from 'js-yaml'; import { FrontMatterParser, ParsedFrontMatter } from '../parsers'; import { Extension, Logger, Settings, SlugHelper } from '.'; @@ -227,7 +227,8 @@ export class ArticleHelper { * @returns */ public static sanitize(value: string): string { - return sanitize(value.toLowerCase().replace(/ /g, "-")); + const preserveCasing = Settings.get(SETTINGS_FILE_PRESERVE_CASING) as boolean; + return sanitize((preserveCasing ? value : value.toLowerCase()).replace(/ /g, "-")); } /**