package org.skyscreamer.yoga.uri;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.skyscreamer.yoga.util.ValueReader;
public class URICreator
{
private static Pattern _uriTemplatePattern = Pattern.compile( "\\{[a-zA-Z0-9_]+\\}" );
public static String getHref( String uriTemplate, ValueReader model, URIDecorator... decorators )
{
Matcher matcher = _uriTemplatePattern.matcher( uriTemplate );
int start = 0;
StringBuilder href = new StringBuilder();
while ( matcher.find() )
{
String field = uriTemplate.substring( matcher.start() + 1, matcher.end() - 1 );
href.append( uriTemplate.substring( start, matcher.start() ) ).append(
model.getValue( field ) );
start = matcher.end();
}
href.append( uriTemplate.substring( start ) );
for ( URIDecorator uriDecorator : decorators )
{
uriDecorator.decorate( href );
}
return href.toString();
}
}