package fr.adrienbrault.idea.symfony2plugin.profiler.collector;
import org.intellij.lang.annotations.RegExp;
import org.jetbrains.annotations.Nullable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
*/
public class LocalDefaultDataCollector implements DefaultDataCollectorInterface {
@Nullable
private final String contents;
public LocalDefaultDataCollector(@Nullable String contents) {
this.contents = contents;
}
@Nullable
public String getController() {
return this.getStringValue(this.contents, "_controller\";s:(\\d+):");
}
@Nullable
public String getRoute() {
return this.getStringValue(this.contents, "_route\";s:(\\d+):");
}
@Nullable
public String getTemplate() {
return this.pregMatch(this.contents, "\"template.twig \\(([^\"]*\\.html\\.\\w{2,4})\\)\"");
}
@Nullable
private String pregMatch(@Nullable String content, @RegExp String regular) {
if(content == null) {
return null;
}
Matcher matcher = Pattern.compile(regular, Pattern.MULTILINE).matcher(content);
if(matcher.find()){
return matcher.group(1);
}
return null;
}
@Nullable
private String getStringValue(@Nullable String content, @RegExp String regular) {
if(content == null) {
return null;
}
Matcher matcher = Pattern.compile(regular, Pattern.MULTILINE).matcher(content);
if(matcher.find()){
String domain = matcher.group(1);
int start = matcher.end();
int end = start + Integer.parseInt(domain);
return content.substring(start + 1, end + 1);
}
return null;
}
}