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 { 31b83b81211f26f9259b032b188bb2482aa390df0dFederico Tomassetti private final Node child; 32d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti 336149218487aac50fad2256c8723639671747d7bbDanny van Bruggen ChildTextElement(Node child) { 34d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti this.child = child; 35d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti } 36d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti 37d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti String expand() { 386149218487aac50fad2256c8723639671747d7bbDanny van Bruggen return LexicalPreservingPrinter.print(child); 39d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti } 40d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti 41d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti Node getChild() { 42d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti return child; 43d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti } 44a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti 45a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti @Override 4640d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti boolean isToken(int tokenKind) { 4740d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti return false; 4840d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti } 4940d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti 50c5f60788a9f56fe9f483fbb87ccb615644365f5eFederico Tomassetti @Override 51c5f60788a9f56fe9f483fbb87ccb615644365f5eFederico Tomassetti boolean isNode(Node node) { 52c5f60788a9f56fe9f483fbb87ccb615644365f5eFederico Tomassetti return node == child; 53c5f60788a9f56fe9f483fbb87ccb615644365f5eFederico Tomassetti } 54c5f60788a9f56fe9f483fbb87ccb615644365f5eFederico Tomassetti 5540d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti NodeText getNodeTextForWrappedNode() { 566149218487aac50fad2256c8723639671747d7bbDanny van Bruggen return LexicalPreservingPrinter.getOrCreateNodeText(child); 5740d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti } 5840d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti 5940d239e3cb84cc77fcd16c3f9fde3f4f8b635419Federico Tomassetti @Override 60a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti public boolean equals(Object o) { 61a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti if (this == o) return true; 62a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti if (o == null || getClass() != o.getClass()) return false; 63a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti 64a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti ChildTextElement that = (ChildTextElement) o; 65a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti 66a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti return child.equals(that.child); 67a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti 68a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti } 69a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti 70a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti @Override 71a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti public int hashCode() { 726149218487aac50fad2256c8723639671747d7bbDanny van Bruggen return child.hashCode(); 73a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti } 74a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti 75a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti @Override 76a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti public String toString() { 77a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti return "ChildTextElement{" + child + '}'; 78a87e93242b4e13759c4003681b7802954d008979Federico Tomassetti } 792e24f3622913118e442635a726d60cfdb50cdc91Federico Tomassetti 80882790065271126fc4b17a71bebb078b60ffe00cFederico Tomassetti @Override 81882790065271126fc4b17a71bebb078b60ffe00cFederico Tomassetti public boolean isWhiteSpace() { 82882790065271126fc4b17a71bebb078b60ffe00cFederico Tomassetti return false; 83882790065271126fc4b17a71bebb078b60ffe00cFederico Tomassetti } 84ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti 85ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti @Override 86ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti public boolean isSpaceOrTab() { 87ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti return false; 88ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti } 89ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti 90ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti @Override 91ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti public boolean isNewline() { 92ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti return false; 93ed7f4a6532043b5ac8c8da55923fbd91f72ec574Federico Tomassetti } 940be8bb2b4275456c18bee064c5de2ccb12a33080Federico Tomassetti 950be8bb2b4275456c18bee064c5de2ccb12a33080Federico Tomassetti @Override 96adb78b277512189cc5f8ecb076d9bf8106f9e1e0Federico Tomassetti public boolean isComment() { 970be8bb2b4275456c18bee064c5de2ccb12a33080Federico Tomassetti return child instanceof Comment; 980be8bb2b4275456c18bee064c5de2ccb12a33080Federico Tomassetti } 990be8bb2b4275456c18bee064c5de2ccb12a33080Federico Tomassetti 10087db3c76d76680bd1bea566d44ab74b4dca55b71Federico Tomassetti @Override 1011a6665bb95b0e46cafdb19202274e6d6725ea464Federico Tomassetti public boolean isChildOfClass(Class<? extends Node> nodeClass) { 10287db3c76d76680bd1bea566d44ab74b4dca55b71Federico Tomassetti return nodeClass.isInstance(child); 10387db3c76d76680bd1bea566d44ab74b4dca55b71Federico Tomassetti } 104d25e79e2c567cc2fc312fabe15fa35be886f31b2Federico Tomassetti} 105