// Copyright 2014 The Bazel Authors. All rights reserved. // // 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.devtools.build.lib.events; import java.util.regex.Pattern; /** * An output filter for warnings. */ public interface OutputFilter { /** An output filter that matches everything. */ public static final OutputFilter OUTPUT_EVERYTHING = new OutputFilter() { @Override public boolean showOutput(String tag) { return true; } }; /** An output filter that matches nothing. */ public static final OutputFilter OUTPUT_NOTHING = new OutputFilter() { @Override public boolean showOutput(String tag) { return false; } }; /** * Returns true iff the given tag matches the output filter. */ boolean showOutput(String tag); /** * An output filter using regular expression matching. */ public static final class RegexOutputFilter implements OutputFilter { /** Returns an output filter for the given regex (by compiling it). */ public static OutputFilter forRegex(String regex) { return new RegexOutputFilter(Pattern.compile(regex)); } /** Returns an output filter for the given pattern. */ public static OutputFilter forPattern(Pattern pattern) { return new RegexOutputFilter(pattern); } private final Pattern pattern; private RegexOutputFilter(Pattern pattern) { this.pattern = pattern; } @Override public boolean showOutput(String tag) { return pattern.matcher(tag).find(); } @Override public String toString() { return pattern.toString(); } } }