Struct Splicer

Source
pub struct Splicer {
    pub content: String,
    /* private fields */
}
Expand description

A utility to repeatedly replace spans of text within a larger document.

Each subsequent call to Splicer::splice(...) rewrites the content buffer and appends to the list of internal offsets. Splicer::splice(...) then adjusts span bounds at call-time to ensures repeated calls to splice(...) continue to work even if one or both of the span bounds have shifted.

§Example

use dockerfile_parser::*;

let dockerfile: Dockerfile = r#"
  FROM alpine:3.10
"#.parse()?;

let from = match &dockerfile.instructions[0] {
  Instruction::From(f) => f,
  _ => panic!("invalid")
};

let mut splicer = dockerfile.splicer();
splicer.splice(&from.image.span, "alpine:3.11");

assert_eq!(splicer.content, r#"
  FROM alpine:3.11
"#);

Fields§

§content: String

The current content of the splice buffer.

Implementations§

Source§

impl Splicer

Source

pub fn splice(&mut self, span: &Span, replacement: &str)

Replaces a Span with the given replacement string, mutating the content string.

Sections may be deleted by replacing them with an empty string ("").

Note that spans are always relative to the original input document. Span offsets are recalculated at call-time to account for previous calls to splice(...) that may have shifted one or both of the span bounds.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.