package net.rubygrapefruit.docs.renderer; import net.rubygrapefruit.docs.model.Block; import net.rubygrapefruit.docs.model.Component; import net.rubygrapefruit.docs.model.Referenceable; import java.util.ArrayList; import java.util.List; public class BuildableChunk implements Chunk { private final ArrayList<Block> contents = new ArrayList<Block>(); private String id; public String getId() { return id; } public void setId(String id) { this.id = id; } public List<? extends Block> getContents() { return contents; } public boolean contains(Referenceable element) { for (Block content : contents) { if (content instanceof TitleBlock) { TitleBlock titleBlock = (TitleBlock) content; if (titleBlock.getComponent() == element) { return true; } } if (content instanceof Component) { Component component = (Component) content; if (component.contains(element)) { return true; } } } return false; } public <T extends Block> T add(T block) { contents.add(block); return block; } public BuildableTitleBlock addTitlePage(Component component) { return add(new BuildableTitleBlock(component)); } }