/* * Copyright 2006 Sascha Weinreuter * * 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 org.intellij.lang.annotations; @Pattern(PrintFormatPattern.PRINT_FORMAT) public @interface PrintFormat { } // split up complex regex and workaround for IDEA-9173 class PrintFormatPattern { // %[argument_index$][flags][width][.precision]conversion // Expression is taken from java.util.Formatter.fsPattern @Language("RegExp") private static final String ARG_INDEX = "(?:\\d+\\$)?"; @Language("RegExp") private static final String FLAGS = "(?:[-#+ 0,(<]*)?"; @Language("RegExp") private static final String WIDTH = "(?:\\d+)?"; @Language("RegExp") private static final String PRECISION = "(?:\\.\\d+)?"; @Language("RegExp") private static final String CONVERSION = "(?:[tT])?(?:[a-zA-Z%])"; @Language("RegExp") private static final String TEXT = "[^%]|%%"; @Language("RegExp") static final String PRINT_FORMAT = "(?:" + TEXT + "|" + "(?:%" + ARG_INDEX + FLAGS + WIDTH + PRECISION + CONVERSION + ")" + ")*"; }