001package com.nativelibs4java.velocity;
002
003import com.google.common.base.Function;
004import java.io.BufferedReader;
005import java.io.File;
006import java.io.FileReader;
007import java.io.FileWriter;
008import java.io.IOException;
009import java.io.PrintWriter;
010import java.io.StringWriter;
011import java.util.regex.Matcher;
012import java.util.regex.Pattern;
013
014public class Utils {
015    
016
017    protected static String processComments(String source, Function<String, String> processor) {
018        Pattern p = Pattern.compile("(?m)(?s)/\\*\\*?.*?\\*/");
019        Matcher m = p.matcher(source);
020        StringBuffer sb = new StringBuffer();
021        while (m.find()) {
022            String comment = m.group();
023            String replacement = processor.apply(comment);
024            m.appendReplacement(sb, "");
025            sb.append(replacement);
026        }
027        m.appendTail(sb);
028        return sb.toString();
029    }
030    
031    protected static String quoteSharpsInComments(String source) {
032        return processComments(source, new Function<String, String>() {
033            public String apply(String f) {
034                return f.replaceAll("(?<=\\w)#", "\\\\#");
035            }
036        });
037    }
038    
039    protected static String unquoteSharpsInComments(String source) {
040        return processComments(source, new Function<String, String>() {
041            public String apply(String f) {
042                return f.replaceAll("\\\\#", "#");
043            }
044        });
045    }
046    
047    static String readTextFile(File file) throws IOException {
048        BufferedReader sourceIn = new BufferedReader(new FileReader(file));
049        StringWriter sourceOut = new StringWriter();
050        PrintWriter sourcePOut = new PrintWriter(sourceOut);
051        String line;
052        while ((line = sourceIn.readLine()) != null) {
053            sourcePOut.println(line);
054        }
055        return sourceOut.toString();
056    }
057    
058    static void writeTextFile(File file, String text) throws IOException {
059        FileWriter f = new FileWriter(file);
060        f.write(unquoteSharpsInComments(text));
061        f.close();
062    }
063}