com.google.errorprone.fixes.Replacement.java Source code

Java tutorial

Introduction

Here is the source code for com.google.errorprone.fixes.Replacement.java

Source

/*
 * Copyright 2011 Google Inc. All Rights Reserved.
 *
 * Licensed 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 com.google.errorprone.fixes;

import static com.google.common.base.Preconditions.checkArgument;

import com.google.auto.value.AutoValue;
import com.google.common.collect.Range;

/** A replaced section of a source file. */
@AutoValue
public abstract class Replacement {

    /**
     * Creates a {@link Replacement}. Start and end positions are represented as code unit indices
     * in a Unicode 16-bit string.
     *
     * @param startPosition the beginning of the replacement
     * @param endPosition the end of the replacement, exclusive
     * @param replaceWith the replacement text
     */
    public static Replacement create(int startPosition, int endPosition, String replaceWith) {
        checkArgument(startPosition >= 0, "invalid startPosition: %s", startPosition);
        return new AutoValue_Replacement(Range.closedOpen(startPosition, endPosition), replaceWith);
    }

    /** The beginning of the replacement range. */
    public int startPosition() {
        return range().lowerEndpoint();
    }

    /** The length of the input text to be replaced. */
    public int length() {
        return endPosition() - startPosition();
    }

    /** The end of the replacement range, exclusive. */
    public int endPosition() {
        return range().upperEndpoint();
    }

    /** The {@link Range} to be replaced. */
    public abstract Range<Integer> range();

    /** The source text to appear in the output. */
    public abstract String replaceWith();
}