ChildTextElement.java revision 0be8bb2b4275456c18bee064c5de2ccb12a33080
1d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti/* 2d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * Copyright (C) 2007-2010 Júlio Vilmar Gesser. 3d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * Copyright (C) 2011, 2013-2016 The JavaParser Team. 4d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * 5d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * This file is part of JavaParser. 6d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * 7d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * JavaParser can be used either under the terms of 8d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * a) the GNU Lesser General Public License as published by 9d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * the Free Software Foundation, either version 3 of the License, or 10d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * (at your option) any later version. 11d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * b) the terms of the Apache License 12d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * 13d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * You should have received a copy of both licenses in LICENCE.LGPL and 14d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * LICENCE.APACHE. Please refer to those files for details. 15d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * 16d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * JavaParser is distributed in the hope that it will be useful, 17d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * but WITHOUT ANY WARRANTY; without even the implied warranty of 18d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * GNU Lesser General Public License for more details. 20d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti */ 21d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti 22d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassettipackage com.github.javaparser.printer.lexicalpreservation; 23d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti 24d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassettiimport com.github.javaparser.ast.Node; 250be8bb2b4275456c18bee064c5de2ccb12a33080Federico Tomassettiimport com.github.javaparser.ast.comments.Comment; 26d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti 27d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti/** 28d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti * Represent the position of a child node in the NodeText of its parent. 29d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti */ 30d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetticlass ChildTextElement extends TextElement { 31d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti private LexicalPreservingPrinter lexicalPreservingPrinter; 32d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti private Node child; 33d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti 34d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti ChildTextElement(LexicalPreservingPrinter lexicalPreservingPrinter, Node child) { 35d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti this.lexicalPreservingPrinter = lexicalPreservingPrinter; 36d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti this.child = child; 37d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti } 38d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti 39d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti String expand() { 40d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti return lexicalPreservingPrinter.print(child); 41d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti } 42d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti 43d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti Node getChild() { 44d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti return child; 45d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti } 46a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti 47a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti @Override 4840d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti boolean isToken(int tokenKind) { 4940d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti return false; 5040d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti } 5140d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti 52c5f60788a9f56fe9f483fbb87ccb615644365f5eFederico Tomassetti @Override 53c5f60788a9f56fe9f483fbb87ccb615644365f5eFederico Tomassetti boolean isNode(Node node) { 54c5f60788a9f56fe9f483fbb87ccb615644365f5eFederico Tomassetti return node == child; 55c5f60788a9f56fe9f483fbb87ccb615644365f5eFederico Tomassetti } 56c5f60788a9f56fe9f483fbb87ccb615644365f5eFederico Tomassetti 5740d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti NodeText getNodeTextForWrappedNode() { 5840d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti return lexicalPreservingPrinter.getOrCreateNodeText(child); 5940d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti } 6040d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti 6140d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti @Override 62a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti public boolean equals(Object o) { 63a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti if (this == o) return true; 64a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti if (o == null || getClass() != o.getClass()) return false; 65a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti 66a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti ChildTextElement that = (ChildTextElement) o; 67a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti 68a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti if (!lexicalPreservingPrinter.equals(that.lexicalPreservingPrinter)) return false; 69a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti return child.equals(that.child); 70a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti 71a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti } 72a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti 73a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti @Override 74a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti public int hashCode() { 75a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti int result = lexicalPreservingPrinter.hashCode(); 76a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti result = 31 * result + child.hashCode(); 77a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti return result; 78a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti } 79a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti 80a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti @Override 81a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti public String toString() { 82a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti return "ChildTextElement{" + child + '}'; 83a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti } 842e24f3622913118e442635a726d60cfdb50cdc91Federico Tomassetti 85882790065271126fc4b17a71bebb078b60ffe00cFederico Tomassetti @Override 86882790065271126fc4b17a71bebb078b60ffe00cFederico Tomassetti public boolean isWhiteSpace() { 87882790065271126fc4b17a71bebb078b60ffe00cFederico Tomassetti return false; 88882790065271126fc4b17a71bebb078b60ffe00cFederico Tomassetti } 89ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti 90ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti @Override 91ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti public boolean isSpaceOrTab() { 92ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti return false; 93ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti } 94ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti 95ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti @Override 96ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti public boolean isNewline() { 97ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti return false; 98ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti } 990be8bb2b4275456c18bee064c5de2ccb12a33080Federico Tomassetti 1000be8bb2b4275456c18bee064c5de2ccb12a33080Federico Tomassetti @Override 1010be8bb2b4275456c18bee064c5de2ccb12a33080Federico Tomassetti public boolean isWhiteSpaceOrComment() { 1020be8bb2b4275456c18bee064c5de2ccb12a33080Federico Tomassetti return child instanceof Comment; 1030be8bb2b4275456c18bee064c5de2ccb12a33080Federico Tomassetti } 1040be8bb2b4275456c18bee064c5de2ccb12a33080Federico Tomassetti 105d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti} 106