package net.innig.util;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.regex.Pattern;


public class RegexReplacement
    {
    public RegexReplacement(String... args)
        {
        if(args.length % 2 != 0)
            throw new IllegalArgumentException("even number of arguments required, but " + args.length + " supplied");
        
        this.patterns = new ArrayList<Pattern>(args.length / 2);
        this.replacements = new ArrayList<String>(args.length / 2);
        
        for(int a = 0; a < args.length; a += 2)
            {
            patterns.add(Pattern.compile(args[a]));
            replacements.add(args[a+1]);
            }
        }
    
    public String apply(CharSequence text)
        {
        Iterator<String> replacementIter = replacements.iterator();
        for(Pattern pattern : patterns)
            text = pattern.matcher(text).replaceAll(replacementIter.next());
        return text.toString();
        }
    
    private List<Pattern> patterns;
    private List<String> replacements;
    }

