ruby/src/org/netbeans/modules/ruby/RubyParseResult.java
author enebo@netbeans.org
Sun, 08 Dec 2013 11:39:16 -0600
changeset 4554 07958c1ff402
parent 4117 6e1f647524a5
permissions -rw-r--r--
Too much stuff in one commit. Rename blocks now follows language semantics. Removal of more ASTPath consumers
     1 /*
     2  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     3  *
     4  * Copyright 1997-2010 Oracle and/or its affiliates. All rights reserved.
     5  *
     6  * Oracle and Java are registered trademarks of Oracle and/or its affiliates.
     7  * Other names may be trademarks of their respective owners.
     8  *
     9  * The contents of this file are subject to the terms of either the GNU
    10  * General Public License Version 2 only ("GPL") or the Common
    11  * Development and Distribution License("CDDL") (collectively, the
    12  * "License"). You may not use this file except in compliance with the
    13  * License. You can obtain a copy of the License at
    14  * http://www.netbeans.org/cddl-gplv2.html
    15  * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
    16  * specific language governing permissions and limitations under the
    17  * License.  When distributing the software, include this License Header
    18  * Notice in each file and include the License file at
    19  * nbbuild/licenses/CDDL-GPL-2-CP.  Oracle designates this
    20  * particular file as subject to the "Classpath" exception as provided
    21  * by Oracle in the GPL Version 2 section of the License file that
    22  * accompanied this code. If applicable, add the following below the
    23  * License Header, with the fields enclosed by brackets [] replaced by
    24  * your own identifying information:
    25  * "Portions Copyrighted [year] [name of copyright owner]"
    26  *
    27  * Contributor(s):
    28  *
    29  * The Original Software is NetBeans. The Initial Developer of the Original
    30  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2008 Sun
    31  * Microsystems, Inc. All Rights Reserved.
    32  *
    33  * If you wish your version of this file to be governed by only the CDDL
    34  * or only the GPL Version 2, indicate your decision by adding
    35  * "[Contributor] elects to include this software in this distribution
    36  * under the [CDDL or GPL Version 2] license." If you do not indicate a
    37  * single choice of license, a recipient has the option to distribute
    38  * your version of this file under either the CDDL, the GPL Version 2 or
    39  * to extend the choice of license to its licensees as provided above.
    40  * However, if you add GPL Version 2 code and therefore, elected the GPL
    41  * Version 2 license, then the option applies only if the new code is
    42  * made subject to such option by the copyright holder.
    43  */
    44 package org.netbeans.modules.ruby;
    45 
    46 import java.util.ArrayList;
    47 import java.util.List;
    48 import org.jrubyparser.ast.Node;
    49 import org.jrubyparser.parser.ParserResult;
    50 import org.netbeans.api.annotations.common.NonNull;
    51 import org.netbeans.modules.csl.api.Error;
    52 import org.netbeans.modules.csl.api.OffsetRange;
    53 import org.netbeans.modules.parsing.api.Snapshot;
    54 
    55 /**
    56  * @author Tor Norbye
    57  */
    58 public class RubyParseResult extends org.netbeans.modules.csl.spi.ParserResult {
    59     
    60     private final Node rootNode;
    61     
    62     private String source;
    63     private OffsetRange sanitizedRange = OffsetRange.NONE;
    64     private String sanitizedContents;
    65     private RubyStructureAnalyzer.AnalysisResult analysisResult;
    66     private RubyParser.Sanitize sanitized;
    67     private ParserResult jrubyResult;
    68     private boolean commentsAdded;
    69     private List<Error> errors;
    70 
    71     public RubyParseResult(Snapshot snapshot, Node rootNode) {
    72         super(snapshot);
    73         this.rootNode = rootNode;
    74         this.errors = new ArrayList<Error>();
    75     }
    76 
    77     @Override
    78     protected void invalidate() {
    79         // XXX: what exactly should we do here?
    80     }
    81 
    82     @Override
    83     public List<? extends Error> getDiagnostics() {
    84         return errors;
    85     }
    86 
    87     public void setErrors(List<? extends Error> errors) {
    88         this.errors = new ArrayList<Error>(errors);
    89     }
    90 
    91     /** The root node of the AST produced by the parser.
    92      * Later, rip out the getAst part etc.
    93      */
    94     public Node getRootNode() {
    95         return rootNode;
    96     }
    97 
    98     public String getSource() {
    99         return source;
   100     }
   101 
   102     public void setSource(String source) {
   103         this.source = source;
   104     }
   105 
   106     /**
   107      * Return whether the source code for the parse result was "cleaned"
   108      * or "sanitized" (modified to reduce chance of parser errors) or not.
   109      * This method returns OffsetRange.NONE if the source was not sanitized,
   110      * otherwise returns the actual sanitized range.
   111      */
   112     public OffsetRange getSanitizedRange() {
   113         return sanitizedRange;
   114     }
   115     
   116     public String getSanitizedContents() {
   117         return sanitizedContents;
   118     }
   119 
   120     /**
   121      * Set the range of source that was sanitized, if any.
   122      */
   123     void setSanitized(RubyParser.Sanitize sanitized, OffsetRange sanitizedRange, String sanitizedContents) {
   124         this.sanitized = sanitized;
   125         this.sanitizedRange = sanitizedRange;
   126         this.sanitizedContents = sanitizedContents;
   127     }
   128 
   129     public RubyParser.Sanitize getSanitized() {
   130         return sanitized;
   131     }    
   132 
   133     public ParserResult getJRubyResult() {
   134         return jrubyResult;
   135     }
   136 
   137     public void setStructure(@NonNull RubyStructureAnalyzer.AnalysisResult result) {
   138         this.analysisResult = result;
   139     }
   140 
   141     @NonNull
   142     public RubyStructureAnalyzer.AnalysisResult getStructure() {
   143         if (analysisResult == null) {
   144             analysisResult = new RubyStructureAnalyzer().analyze(this);
   145         }
   146         return analysisResult;
   147     }
   148 
   149     public boolean isCommentsAdded() {
   150         return commentsAdded;
   151     }
   152 
   153     public void setCommentsAdded(boolean commentsAdded) {
   154         this.commentsAdded = commentsAdded;
   155     }
   156 
   157 }