2 * Copyright 2000-2016 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com.intellij.openapi.components;
18 import org.jdom.Element;
19 import org.jetbrains.annotations.NotNull;
21 public interface PathMacroSubstitutor {
22 String expandPath(String path);
25 default String collapsePath(@NotNull String text) {
26 return collapsePath(text, false);
29 String collapsePath(@NotNull String text, boolean recursively);
31 void expandPaths(@NotNull Element element);
34 * Path will be collapsed only if the entire content of an attribute (tag text) is a path, if a path is a substring of an attribute value it won't be collapsed.
36 default void collapsePaths(@NotNull Element element) {
37 collapsePaths(element, false);
41 * Path will be collapsed even if a path is a substring of an attribute value.
43 default void collapsePathsRecursively(@NotNull Element element) {
44 collapsePaths(element, true);
47 void collapsePaths(@NotNull Element element, boolean recursively);
49 default String collapsePathsRecursively(@NotNull String string) {
50 return collapsePath(string, true);