From e5bfb079fecff864978399a5701d0132098efe01 Mon Sep 17 00:00:00 2001 From: Fedor Korotkov Date: Thu, 14 Mar 2013 22:01:20 +0400 Subject: [PATCH] WEB-7126 $FileNameWithoutExtension$ needed to remove all extensions --- .../macro/FileNameWithoutAllExtensions.java | 41 +++++++++++++++++++ .../com/intellij/ide/macro/MacroManager.java | 1 + .../src/messages/IdeBundle.properties | 1 + .../application/options/PathMacrosImpl.java | 1 + 4 files changed, 44 insertions(+) create mode 100644 platform/lang-impl/src/com/intellij/ide/macro/FileNameWithoutAllExtensions.java diff --git a/platform/lang-impl/src/com/intellij/ide/macro/FileNameWithoutAllExtensions.java b/platform/lang-impl/src/com/intellij/ide/macro/FileNameWithoutAllExtensions.java new file mode 100644 index 000000000000..423fb438cf63 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/ide/macro/FileNameWithoutAllExtensions.java @@ -0,0 +1,41 @@ +/* + * Copyright 2000-2013 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.ide.macro; + +import com.intellij.ide.IdeBundle; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.openapi.actionSystem.PlatformDataKeys; +import com.intellij.openapi.vfs.VirtualFile; + +public class FileNameWithoutAllExtensions extends FileNameMacro { + public String getName() { + return "FileNameWithoutAllExtensions"; + } + + public String getDescription() { + return IdeBundle.message("macro.file.name.without.all.extensions"); + } + + public String expand(DataContext dataContext) { + VirtualFile file = PlatformDataKeys.VIRTUAL_FILE.getData(dataContext); + if (file == null) { + return null; + } + String fileName = file.getName(); + int index = fileName.indexOf('.'); + return index > 0 ? fileName.substring(0, index) : fileName; + } +} diff --git a/platform/lang-impl/src/com/intellij/ide/macro/MacroManager.java b/platform/lang-impl/src/com/intellij/ide/macro/MacroManager.java index e7f6674e69ea..9c29fa2171b8 100644 --- a/platform/lang-impl/src/com/intellij/ide/macro/MacroManager.java +++ b/platform/lang-impl/src/com/intellij/ide/macro/MacroManager.java @@ -54,6 +54,7 @@ public final class MacroManager { registerMacro(new FileExtMacro()); registerMacro(new FileNameMacro()); registerMacro(new FileNameWithoutExtension()); + registerMacro(new FileNameWithoutAllExtensions()); registerMacro(new FilePathMacro()); registerMacro(new FileEncodingMacro()); registerMacro(new FileDirRelativeToProjectRootMacro()); diff --git a/platform/platform-resources-en/src/messages/IdeBundle.properties b/platform/platform-resources-en/src/messages/IdeBundle.properties index cc37db2094b3..fd809e11d239 100644 --- a/platform/platform-resources-en/src/messages/IdeBundle.properties +++ b/platform/platform-resources-en/src/messages/IdeBundle.properties @@ -446,6 +446,7 @@ macro.file.extension=File extension macro.file.fully.qualified.package=File fully qualified package macro.file.name=File name macro.file.name.without.extension=File name without extension +macro.file.name.without.all.extensions=File name without all extensions macro.file.package=File package macro.file.path=File path macro.file.path.relative.to.root=File path relative to the module content root the file belongs to diff --git a/platform/projectModel-impl/src/com/intellij/application/options/PathMacrosImpl.java b/platform/projectModel-impl/src/com/intellij/application/options/PathMacrosImpl.java index cbac00107c3b..4c36cdfccd01 100644 --- a/platform/projectModel-impl/src/com/intellij/application/options/PathMacrosImpl.java +++ b/platform/projectModel-impl/src/com/intellij/application/options/PathMacrosImpl.java @@ -91,6 +91,7 @@ public class PathMacrosImpl extends PathMacros implements ApplicationComponent, "FileFQPackage", "FileName", "FileNameWithoutExtension", + "FileNameWithoutAllExtensions", "FilePackage", "FilePath", "FilePathRelativeToProjectRoot",