| /* |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ |
| |
| package org.apache.flex.compiler.mxml; |
| |
| import org.apache.flex.compiler.common.ISourceLocation; |
| import org.apache.flex.compiler.common.SourceLocation; |
| import org.apache.flex.compiler.filespecs.IFileSpecification; |
| import org.apache.flex.compiler.internal.mxml.MXMLDialect; |
| |
| /** |
| * Represents one unit of MXML. |
| */ |
| public interface IMXMLUnitData extends ISourceLocation |
| { |
| /** |
| * Gets the source file that contains this unit. |
| * |
| * @return An {@code IFileSpecification} representing the source file. |
| */ |
| IFileSpecification getSource(); |
| |
| /** |
| * Gets the {@code IMXMLData} representing the MXML document that contains |
| * this unit. |
| * |
| * @return The {@code IMXMLData} that contains this unit. |
| */ |
| IMXMLData getParent(); |
| |
| /** |
| * Returns the MXML dialect used in the MXML document that contains this |
| * unit. |
| * |
| * @return An {@link MXMLDialect} object. |
| */ |
| MXMLDialect getMXMLDialect(); |
| |
| /** |
| * Get this unit's position in the {@code IMXMLData}. |
| * |
| * @return The index of this unit. |
| */ |
| int getIndex(); |
| |
| /** |
| * Does this unit contain the given offset (excluding start and including |
| * end)? |
| * |
| * @return true if the offset falls within this unit's bounds. |
| */ |
| boolean containsOffset(int offset); |
| |
| /** |
| * Gets the {@link IMXMLUnitData} which is the hierarchical parent of this |
| * unit in its parents array of IMXMLUnitData objects |
| * |
| * @return the parent {@link IMXMLUnitData} or <code>null</code>. |
| */ |
| IMXMLUnitData getParentUnitData(); |
| |
| /** |
| * Get the nearest containing tag. Moving backwards through the list of |
| * tokens for this MXML file, this is the first open tag that you find for |
| * which you haven't found a corresponding close. |
| * |
| * @return nearest containing open tag (or null, if no such open tag exists) |
| */ |
| IMXMLTagData getContainingTag(int offset); |
| |
| /** |
| * Is this MXML unit a block of text? |
| * |
| * @return true if the unit is a block of text |
| */ |
| boolean isText(); |
| |
| /** |
| * Is this MXML unit a tag? |
| * |
| * @return true if the unit is a tag |
| */ |
| boolean isTag(); |
| |
| /** |
| * Is this MXML unit an open tag? |
| * |
| * @return true if the unit is an open tag |
| */ |
| boolean isOpenTag(); |
| |
| /** |
| * Is this MXML unit an open tag and not an empty tag (i.e. only |
| * <foo>, not <foo;/>)? |
| * |
| * @return true if the unit is an open tag, and not an empty tag |
| */ |
| boolean isOpenAndNotEmptyTag(); |
| |
| /** |
| * Is this MXML unit an close tag? |
| * |
| * @return true if the unit is a close tag |
| */ |
| boolean isCloseTag(); |
| |
| /** |
| * Returns the first character of the actual content of the unit For most |
| * units this is the same as getStart(), but for things like tags which have |
| * "junk punctuation" around them, {@link SourceLocation#getAbsoluteStart()} |
| * will return the junk punctuation, whereas getContentStart will get the |
| * content inside the punctuation. |
| */ |
| int getContentStart(); |
| |
| /** |
| * Returns the offset after the last character of actual content. See |
| * {@link #getContentStart()} for more. |
| */ |
| int getContentEnd(); |
| |
| /** |
| * Gets the next MXML unit. |
| * |
| * @return The next MXML unit. |
| */ |
| IMXMLUnitData getNext(); |
| |
| /** |
| * Gets the next sibling unit after this unit. The next sibling unit may be |
| * a tag or text. If there is no sibling unit after this one, this method |
| * returns <code>null</code>. |
| * |
| * @return The next sibling unit. |
| */ |
| IMXMLUnitData getNextSiblingUnit(); |
| |
| /** |
| * Gets the next tag. |
| * |
| * @return The next tag, or null if none. |
| */ |
| IMXMLTagData getNextTag(); |
| |
| /** |
| * Gets the previous MXML unit. |
| * |
| * @return the previous MXML unit. |
| */ |
| IMXMLUnitData getPrevious(); |
| } |