Warning: session_start(): open(/var/lib/php/sessions/sess_m01fnggvefo5r3oe9g8c48j7ll, 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: runnable { doSomething(); }
public class main {
public static void main(String[] args) throws Exception {
String s = loadMainJava();
Pattern regex = Pattern.compile("(\\W)(?:runnable|r)\\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()+1, end = matcher.end();
int endOfBlock = findEndOfBlock(s, end);
String listener = "new Runnable() {\n" +
"public void run() { try {\n" +
s.substring(end, endOfBlock) + "\n} catch (Exception __e) { throw __e instanceof RuntimeException ? (RuntimeException) __e : new RuntimeException(__e); }}";
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 mainJava;
static String loadMainJava() throws IOException {
if (mainJava != null) return mainJava;
return loadTextFile("input/main.java", "");
}
static void saveMainJava(String s) throws IOException {
if (mainJava != null)
mainJava = s;
else
saveTextFile("output/main.java", s);
}
static void saveMainJava(List tok) throws IOException {
saveMainJava(join(tok));
}
public static String join(String glue, Iterable strings) {
StringBuilder buf = new StringBuilder();
Iterator i = strings.iterator();
if (i.hasNext()) {
buf.append(i.next());
while (i.hasNext())
buf.append(glue).append(i.next());
}
return buf.toString();
}
public static String join(String glue, String[] strings) {
return join(glue, Arrays.asList(strings));
}
public static String join(Iterable strings) {
return join("", strings);
}
public static String join(String[] strings) {
return join("", strings);
}
/** 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);
}
}