Warning: session_start(): open(/var/lib/php/sessions/sess_nisf1n0k674hanb76pt44lukb1, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
import java.net.*;
import java.io.*;
import javax.swing.*;
import java.util.regex.*;
import java.util.*;
// Syntax: dialogHandler { doSomething(io); }
public class main {
public static void main(String[] args) throws Exception {
String s = loadMainJava();
Pattern regex = Pattern.compile("dialogHandler\\s*\\{");
for (int i = 0; i < 100; i++) {
Matcher matcher = regex.matcher(s);
if (!matcher.find())
break;
System.out.println("Iteration " + (i+1));
int start = matcher.start(), end = matcher.end();
int endOfBlock = findEndOfBlock(s, end);
String listener = "new DialogHandler() {\n" +
"public void run(final DialogIO io) {\n" +
s.substring(end, endOfBlock) + "\n}";
s = s.substring(0, start) + listener + s.substring(endOfBlock);
}
saveMainJava(s);
}
// start is the index AFTER the opening bracket
// returns index OF closing bracket
static int findEndOfBlock(String s, int start) {
int level = 1;
for (int i = start; i < s.length(); i++) {
if (s.charAt(i) == '{') ++level;
else if (s.charAt(i) == '}') --level;
if (level == 0)
return i;
}
return s.length();
}
static String loadMainJava() throws IOException {
return loadTextFile("input/main.java", "");
}
static void saveMainJava(String s) throws IOException {
saveTextFile("output/main.java", s);
}
/** writes safely (to temp file, then rename) */
public static void saveTextFile(String fileName, String contents) throws IOException {
File file = new File(fileName);
File parentFile = file.getParentFile();
if (parentFile != null)
parentFile.mkdirs();
String tempFileName = fileName + "_temp";
FileOutputStream fileOutputStream = new FileOutputStream(tempFileName);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8");
PrintWriter printWriter = new PrintWriter(outputStreamWriter);
printWriter.print(contents);
printWriter.close();
if (file.exists() && !file.delete())
throw new IOException("Can't delete " + fileName);
if (!new File(tempFileName).renameTo(file))
throw new IOException("Can't rename " + tempFileName + " to " + fileName);
}
public static String loadTextFile(String fileName, String defaultContents) throws IOException {
if (!new File(fileName).exists())
return defaultContents;
FileInputStream fileInputStream = new FileInputStream(fileName);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
return loadTextFile(inputStreamReader);
}
public static String loadTextFile(Reader reader) throws IOException {
StringBuilder builder = new StringBuilder();
try {
BufferedReader bufferedReader = new BufferedReader(reader);
String line;
while ((line = bufferedReader.readLine()) != null)
builder.append(line).append('\n');
} finally {
reader.close();
}
return builder.length() == 0 ? "" : builder.substring(0, builder.length()-1);
}
}