| /*=============================================================================# |
| # Copyright (c) 2009, 2018 Stephan Wahlbrink and others. |
| # |
| # This program and the accompanying materials are made available under the |
| # terms of the Eclipse Public License 2.0 which is available at |
| # https://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 |
| # which is available at https://www.apache.org/licenses/LICENSE-2.0. |
| # |
| # SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 |
| # |
| # Contributors: |
| # Stephan Wahlbrink <sw@wahlbrink.eu> - initial API and implementation |
| #=============================================================================*/ |
| |
| package org.eclipse.statet.docmlet.wikitext.core.ast; |
| |
| import java.lang.reflect.InvocationTargetException; |
| |
| import org.eclipse.mylyn.wikitext.parser.DocumentBuilder.BlockType; |
| |
| import org.eclipse.statet.jcommons.collections.ImList; |
| import org.eclipse.statet.jcommons.text.core.TextRegion; |
| |
| import org.eclipse.statet.docmlet.wikitext.core.ast.WikitextAst.NodeType; |
| |
| |
| public abstract class Block extends ContainerNode { |
| |
| |
| static final class TextBlock extends Block { |
| |
| |
| private final ImList<? extends TextRegion> textRegions; |
| |
| TextBlock(final WikitextAstNode parent, final int offset, final BlockType blockType, |
| final String label, final ImList<? extends TextRegion> textRegions) { |
| super(parent, offset, blockType, label); |
| this.textRegions= textRegions; |
| } |
| |
| |
| @Override |
| public ImList<? extends TextRegion> getTextRegions() { |
| return this.textRegions; |
| } |
| |
| } |
| |
| static final class Common extends Block { |
| |
| Common(final WikitextAstNode parent, final int offset, final BlockType blockType, |
| final String label) { |
| super(parent, offset, blockType, label); |
| } |
| |
| |
| @Override |
| public ImList<? extends TextRegion> getTextRegions() { |
| return null; |
| } |
| |
| } |
| |
| |
| private final BlockType blockType; |
| |
| private final String label; |
| |
| |
| private Block(final WikitextAstNode parent, final int offset, final BlockType blockType, |
| final String label) { |
| super(parent, offset, offset); |
| |
| this.blockType= blockType; |
| this.label= label; |
| } |
| |
| |
| @Override |
| public NodeType getNodeType() { |
| return NodeType.BLOCK; |
| } |
| |
| public BlockType getBlockType() { |
| return this.blockType; |
| } |
| |
| @Override |
| public String getLabel() { |
| return this.label; |
| } |
| |
| public abstract ImList<? extends TextRegion> getTextRegions(); |
| |
| |
| @Override |
| public void acceptInWikitext(final WikitextAstVisitor visitor) throws InvocationTargetException { |
| visitor.visit(this); |
| } |
| |
| |
| } |