Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.gameforge.idea.Corona.lang.formatter;
- import com.gameforge.idea.Corona.lang.lexer.CoronaElementType;
- import com.gameforge.idea.Corona.lang.lexer.CoronaTokenTypes;
- import com.gameforge.idea.Corona.lang.parser.CoronaElementTypes;
- import com.intellij.formatting.*;
- import com.intellij.lang.ASTNode;
- import com.intellij.openapi.util.TextRange;
- import com.intellij.psi.TokenType;
- import com.intellij.psi.formatter.common.AbstractBlock;
- import com.intellij.psi.impl.source.tree.FileElement;
- import com.intellij.psi.tree.IElementType;
- import org.jetbrains.annotations.NotNull;
- import org.jetbrains.annotations.Nullable;
- import sun.security.util.ByteArrayLexOrder;
- import java.util.ArrayList;
- import java.util.List;
- /**
- * Created by felix.doerschner on 17.05.2016.
- */
- public class CoronaFormatBlock implements Block {
- private Indent indent;
- private Wrap wrap;
- private Alignment alignment;
- private ASTNode node;
- private List<Block> children;
- protected CoronaFormatBlock(ASTNode node, Wrap wrap, Alignment alignment, Indent indent) {
- // super(node, wrap, alignment);
- this.indent = indent;
- this.node = node;
- this.wrap = wrap;
- this.alignment = alignment;
- }
- @NotNull
- @Override
- public TextRange getTextRange() {
- return node.getTextRange();
- }
- @NotNull
- @Override
- public List<Block> getSubBlocks() {
- return buildChildren();
- }
- @Nullable
- @Override
- public Wrap getWrap() {
- return wrap;
- }
- @Override
- public Indent getIndent() {
- return indent == null ? CoronaIndent.getIndent(this, node) : indent;
- }
- @Nullable
- @Override
- public Alignment getAlignment() {
- return alignment;
- }
- protected List<Block> buildChildren() {
- children = new ArrayList<>();
- ASTNode child = node.getFirstChildNode();
- String nodeText = node.getText();
- while (child != null) {
- if (!CoronaElementTypes.WHITE_SPACES_SET.contains(child.getElementType())) {
- Indent indent = CoronaIndent.getIndent(this, child);
- children.add(new CoronaFormatBlock(child, Wrap.createWrap(WrapType.NONE, false), getAlignment(), indent));
- }
- child = child.getTreeNext();
- }
- return children;
- }
- private void print() {
- System.out.println();
- }
- @Nullable
- @Override
- public Spacing getSpacing(@Nullable Block block, @NotNull Block block1) {
- CoronaFormatBlock child1 = (CoronaFormatBlock) block;
- CoronaFormatBlock child2 = (CoronaFormatBlock) block1;
- return CoronaSpacing.getSpacing(child1, child2);
- }
- @NotNull
- @Override
- public ChildAttributes getChildAttributes(int i) {
- Block child = children.get(i);
- String nodeText = node.getText();
- String childText = ((CoronaFormatBlock)child).getNode().getText();
- return new ChildAttributes(child.getIndent(), child.getAlignment());
- }
- @Override
- public boolean isIncomplete() {
- return false;
- }
- @Override
- public boolean isLeaf() {
- return node.getFirstChildNode() == null;
- }
- ASTNode getNode() {
- return node;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement