| /******************************************************************************* |
| * Copyright (c) 2000, 2006 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.ui.actions; |
| |
| /** |
| * Implements an algorithm for very simple pattern matching in a string. |
| * There is only one feature: "*" may be used at the start or the end of the |
| * pattern to represent "one or more characters". |
| */ |
| public final class SimpleWildcardTester { |
| /** |
| * Returns whether a string matches a particular pattern. |
| * |
| * @param pattern the input pattern |
| * @param str the string to test |
| * @return <code>true</code> if a match occurs; <code>false</code>otherwise. |
| */ |
| public static boolean testWildcard(String pattern, String str) { |
| if (pattern.equals("*")) {//$NON-NLS-1$ |
| return true; |
| } else if (pattern.startsWith("*")) {//$NON-NLS-1$ |
| if (pattern.endsWith("*")) {//$NON-NLS-1$ |
| if (pattern.length() == 2) { |
| return true; |
| } |
| return str.indexOf(pattern.substring(1, pattern.length() - 1)) >= 0; |
| } |
| return str.endsWith(pattern.substring(1)); |
| } else if (pattern.endsWith("*")) {//$NON-NLS-1$ |
| return str.startsWith(pattern.substring(0, pattern.length() - 1)); |
| } else { |
| return str.equals(pattern); |
| } |
| } |
| |
| /** |
| * Returns whether a string matches a particular pattern. Both string and |
| * pattern are converted to lower case before pattern matching occurs. |
| * |
| * @param pattern the input pattern |
| * @param str the string to test |
| * @return <code>true</code> if a match occurs; <code>false</code>otherwise. |
| */ |
| public static boolean testWildcardIgnoreCase(String pattern, String str) { |
| |
| //If str is null there was no extension to test |
| if (str == null) { |
| return false; |
| } |
| pattern = pattern.toLowerCase(); |
| str = str.toLowerCase(); |
| return testWildcard(pattern, str); |
| } |
| } |