package qls.ast.statement; import qls.ast.Page; import qls.ast.Stylesheet; import qls.ast.StylesheetVisitor; import qls.semantics.Style; /** * Created by bore on 09/03/15. */ public class StyleCollector extends DefaultStatementVisitor<Style> implements StylesheetVisitor<Style> { private static final Style style = new Style(); @Override public Style visit(Page p) { return this.constructStyle(p.getBody()); } @Override public Style visit(Section s) { return this.constructStyle(s.getBody()); } @Override public Style visit(DefaultStat d) { Style result = new Style(); result.addRules(d.getType(), d.getBody()); return result; } @Override public Style visit(Stylesheet s) { return style; } @Override public Style visitDefault(Statement s) { return style; } private Style constructStyle(Iterable<qls.ast.statement.Statement> stats) { Style result = new Style(); for (Statement stat : stats) { if (stat.isStyleDefinition()) { Style statStyle = stat.accept(this); result = Style.mergeStyles(result, statStyle); } } return result; } }