protected RenderableList prepareView(String view, String offset) {
String template = resourceTools.getResourceAsString(view);
if (template == null)
throw new IllegalArgumentException("view '" + view + "' not found");
String dir = view.substring(0, view.lastIndexOf("/") + 1);
RenderableList l = new RenderableList();
Node html = new GspParser().parse(template);
Set<String> imports = new HashSet<>();
readImports(html, imports);
Node layoutTag = html.get("html/head/meta[@name=layout]");
if (layoutTag != null) {
layoutTag.parent().children().remove(layoutTag);
String layoutContent = resourceTools.getResourceAsString("views/layouts/" + layoutTag.attr("content") + ".gsp");
if (layoutContent == null)
throw new IllegalArgumentException("Layout '" + layoutTag.attr("content") + "' not found");
Node layout = new GspParser().parse(layoutContent);
readImports(layout, imports);
for (Decorator decorator : DependencyFactory.get(DecoratorLib.class).list()) {
decorator.decorate(html, layout);
}
html = layout;
}
prepare(html.children(), l, dir, offset, imports);
return l;
}