hcl::format

Struct FormatterBuilder

Source
pub struct FormatterBuilder<'a> { /* private fields */ }
Expand description

A builder to create a Formatter.

See the documentation of Formatter for a usage example.

Implementations§

Source§

impl<'a> FormatterBuilder<'a>

Source

pub fn indent(self, indent: &'a [u8]) -> Self

Set the indent for indenting nested HCL structures.

The default indentation is two spaces.

Source

pub fn dense(self, yes: bool) -> Self

If set, blocks are not visually separated by empty lines from attributes and adjacent blocks.

Default formatting:

attr1 = "value1"
attr2 = "value2"

block1 {}

block2 {}

Dense formatting:

attr1 = "value1"
attr2 = "value2"
block1 {}
block2 {}
Source

pub fn compact(self, yes: bool) -> Self

If set, arrays and objects are formatted in a more compact way.

See the method documation of compact_arrays and compact_objects.

Source

pub fn compact_arrays(self, yes: bool) -> Self

Controls the array formatting.

By default, array elements are separated by newlines:

array = [
  1,
  2,
  3,
]

When compact array formatting is enabled no newlines are inserted between elements:

array = [1, 2, 3]
Source

pub fn compact_objects(self, yes: bool) -> Self

Controls the object formatting.

By default, object items are separated by newlines:

object = {
  one = "foo"
  two = "bar"
  three = "baz"
}

When compact object formatting is enabled no newlines are inserted between items:

object = { one = "foo", two = "bar", three = "baz" }
Source

pub fn prefer_ident_keys(self, yes: bool) -> Self

Controls the object key quoting.

By default, object keys are formatted as quoted strings (unless they are of variant ObjectKey::Identifier).

object = {
  "foo" = 1
  "bar baz" = 2
}

When identifier keys are preferred, object keys that are also valid HCL identifiers are not quoted:

object = {
  foo = 1
  "bar baz" = 2
}
Source

pub fn build<W>(self, writer: W) -> Formatter<'a, W>
where W: Write,

Consumes the FormatterBuilder and turns it into a Formatter which writes HCL to the provided writer.

Source

pub fn build_vec(self) -> Formatter<'a, Vec<u8>>

Consumes the FormatterBuilder and turns it into a Formatter which is specialized to use a pre-allocated Vec<u8> as internal buffer.

The returned formatter can be passed to the format_string or format_vec method of types implementing Format.

Alternatively, the internal buffer can be obtained by calling into_inner on the returned Formatter after passing it to the format method of a type implementing Format.

§Examples
use hcl::format::{Format, Formatter};
use hcl::structure::Attribute;

let mut formatter = Formatter::builder()
    .compact_arrays(true)
    .build_vec();

let attr = Attribute::new("foo", vec![1, 2, 3]);

assert_eq!(attr.format_string(&mut formatter)?, "foo = [1, 2, 3]\n");

Auto Trait Implementations§

§

impl<'a> Freeze for FormatterBuilder<'a>

§

impl<'a> RefUnwindSafe for FormatterBuilder<'a>

§

impl<'a> Send for FormatterBuilder<'a>

§

impl<'a> Sync for FormatterBuilder<'a>

§

impl<'a> Unpin for FormatterBuilder<'a>

§

impl<'a> UnwindSafe for FormatterBuilder<'a>

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.