package org.docascode.api.core;

import org.docascode.api.core.errors.DocAsCodeException;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Substitute {
    private Substitute(){}

     * @param string The String to evaluate (e.g. @key1@-text-@key2@)
     * @param dict A dictionnary for subsitution words (e.g. dict(key1)=value1 and dict(key2)=value2)
     * @return The substituted String (e.g. value1-text-value2)
    public static String substitute (String string, Map<String,String> dict) throws DocAsCodeException {
        if (string == null){
            return null;
        String result = string;
        Pattern p = Pattern.compile("@(.*?)@");
        Matcher m = p.matcher(result);
        String key;
            key =;
            if (!dict.containsKey(key)){
                throw new DocAsCodeException(
                        String.format("Cannot find property '%s' in dictionnary.",key));
            result = m.replaceFirst(dict.get(key));
            m = p.matcher(result);
        return result;

    public static Map<String,String> substitute (List<String> strings, Map<String,String> dict) throws DocAsCodeException {
        HashMap<String,String> result = new HashMap<>();
        for (String string : strings){
        return result;