/**
* Packer version 3.0 (final)
* Copyright 2004-2007, Dean Edwards
* Web: {@link http://dean.edwards.name/}
*
* This software is licensed under the MIT license
* Web: {@link http://www.opensource.org/licenses/mit-license}
*
* Ported to Java by Pablo Santiago based on C# version by Jesse Hansen, <twindagger2k @ msn.com>
* Email: <pablo.santiago @ gmail.com>
*/
package com.jpacker.evaluators;
import java.util.regex.Matcher;
import com.jpacker.JPackerParser;
import com.jpacker.JPackerPattern;
import com.jpacker.strategies.DefaultReplacementStrategy;
/**
* After expressions have been added to a {@link JPackerParser} object and a
* ReplacementStrategy has been set, each {@link JPackerPattern} should have an
* {@link Evaluator} object that'll evaluate a certain match of a pattern
* expression and return a suitable replacement String. Commonly, after all
* expressions have been added the the {@link JPackerParser} object, a one-line
* String that contains all expressions is created by the {@link JPackerParser}
* object using the {@link JPackerParser#getJPatterns()} method. In the
* {@link #evaluate(Matcher, int)} method, the offset integer parameter
* represents the position in such String that corresponds to a
* {@link JPackerPattern} object.
*
* @author Pablo Santiago <pablo.santiago @ gmail.com>
*/
public interface Evaluator {
/**
* Sets the {@link JPackerPattern} object to use
*
* @param jpattern
* The {@link JPackerPattern} object for the {@link Evaluator}
* implementations to use
*/
public void setJPattern(JPackerPattern jpattern);
/**
* Gets the {@link JPackerPattern} object
*
* @return The {@link JPackerPattern} object if it has been set, null
* otherwise
*/
public JPackerPattern getJPattern();
/**
* Evaluates the string matched by the {@link Matcher} object and returns a
* suitable replacement String.
*
* @param matcher
* The {@link Matcher} object that contains a match (and its
* groups)
* @param offset
* The offset in the String object returned by the
* {@link JPackerParser#getJPatterns()} method in the
* {@link JPackerParser} object
* @return A replacement string (either text or group expressions, i.e.: $1)
* @see DefaultReplacementStrategy
*/
public String evaluate(Matcher matcher, int offset);
}