com.google.javascript.jscomp.ShowByPathWarningsGuard Maven / Gradle / Ivy
/*
* Copyright 2008 The Closure Compiler Authors.
*
* 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.google.javascript.jscomp;
import static com.google.common.base.Preconditions.checkArgument;
import com.google.common.collect.ImmutableList;
import java.util.List;
/**
* Control whether warnings should be restricted or suppressed for specified
* paths.
*/
public final class ShowByPathWarningsGuard extends WarningsGuard {
private static final long serialVersionUID = 1L;
/**
* Controls whether warnings should be restricted to a specified path or
* suppressed within the specified path.
*/
public enum ShowType {
INCLUDE, // Suppress warnings outside the path.
EXCLUDE // Suppress warnings within the path.
}
private final ByPathWarningsGuard warningsGuard;
public ShowByPathWarningsGuard(String checkWarningsOnlyForPath) {
this(checkWarningsOnlyForPath, ShowType.INCLUDE);
}
public ShowByPathWarningsGuard(String[] checkWarningsOnlyForPath) {
this(checkWarningsOnlyForPath, ShowType.INCLUDE);
}
public ShowByPathWarningsGuard(String path, ShowType showType) {
this(new String[] { path }, showType);
}
public ShowByPathWarningsGuard(String[] paths, ShowType showType) {
checkArgument(paths != null);
checkArgument(showType != null);
List pathList = ImmutableList.copyOf(paths);
if (showType == ShowType.INCLUDE) {
warningsGuard = ByPathWarningsGuard.exceptPath(pathList, CheckLevel.OFF);
} else {
warningsGuard = ByPathWarningsGuard.forPath(pathList, CheckLevel.OFF);
}
}
@Override
public CheckLevel level(JSError error) {
return warningsGuard.level(error);
}
@Override
protected int getPriority() {
return warningsGuard.getPriority();
}
}