pub struct Formatter<'a, W> { /* private fields */ }Expand description
A Solidity formatter
Implementations§
source§impl<'a, W: Write> Formatter<'a, W>
impl<'a, W: Write> Formatter<'a, W>
pub fn new( w: W, source: &'a str, comments: Comments, inline_config: InlineConfig, config: FormatterConfig ) -> Self
Trait Implementations§
source§impl<'a, W: Write> Visitor for Formatter<'a, W>
impl<'a, W: Write> Visitor for Formatter<'a, W>
type Error = FormatterError
fn visit_source(&mut self, loc: Loc) -> Result<(), FormatterError>
fn visit_source_unit( &mut self, source_unit: &mut SourceUnit ) -> Result<(), FormatterError>
fn visit_contract( &mut self, contract: &mut ContractDefinition ) -> Result<(), FormatterError>
fn visit_pragma( &mut self, loc: Loc, ident: &mut Option<Identifier>, string: &mut Option<StringLiteral> ) -> Result<(), FormatterError>
fn visit_import_plain( &mut self, loc: Loc, import: &mut ImportPath ) -> Result<(), FormatterError>
fn visit_import_global( &mut self, loc: Loc, global: &mut ImportPath, alias: &mut Identifier ) -> Result<(), FormatterError>
fn visit_import_renames( &mut self, loc: Loc, imports: &mut [(Identifier, Option<Identifier>)], from: &mut ImportPath ) -> Result<(), FormatterError>
fn visit_enum( &mut self, enumeration: &mut EnumDefinition ) -> Result<(), FormatterError>
source§fn visit_expr(
&mut self,
loc: Loc,
expr: &mut Expression
) -> Result<(), FormatterError>
fn visit_expr( &mut self, loc: Loc, expr: &mut Expression ) -> Result<(), FormatterError>
fn visit_ident( &mut self, loc: Loc, ident: &mut Identifier ) -> Result<(), FormatterError>
fn visit_ident_path( &mut self, idents: &mut IdentifierPath ) -> Result<(), Self::Error>
fn visit_emit( &mut self, loc: Loc, event: &mut Expression ) -> Result<(), FormatterError>
fn visit_var_declaration( &mut self, var: &mut VariableDeclaration ) -> Result<(), FormatterError>
fn visit_break( &mut self, loc: Loc, semicolon: bool ) -> Result<(), FormatterError>
fn visit_continue( &mut self, loc: Loc, semicolon: bool ) -> Result<(), FormatterError>
fn visit_function( &mut self, func: &mut FunctionDefinition ) -> Result<(), FormatterError>
fn visit_function_attribute( &mut self, attribute: &mut FunctionAttribute ) -> Result<(), FormatterError>
fn visit_base(&mut self, base: &mut Base) -> Result<(), FormatterError>
fn visit_parameter( &mut self, parameter: &mut Parameter ) -> Result<(), FormatterError>
fn visit_struct( &mut self, structure: &mut StructDefinition ) -> Result<(), FormatterError>
fn visit_type_definition( &mut self, def: &mut TypeDefinition ) -> Result<(), FormatterError>
fn visit_stray_semicolon(&mut self) -> Result<(), FormatterError>
fn visit_block( &mut self, loc: Loc, unchecked: bool, statements: &mut Vec<Statement> ) -> Result<(), FormatterError>
fn visit_opening_paren(&mut self) -> Result<(), FormatterError>
fn visit_closing_paren(&mut self) -> Result<(), FormatterError>
fn visit_newline(&mut self) -> Result<(), FormatterError>
fn visit_event( &mut self, event: &mut EventDefinition ) -> Result<(), FormatterError>
fn visit_event_parameter( &mut self, param: &mut EventParameter ) -> Result<(), FormatterError>
fn visit_error( &mut self, error: &mut ErrorDefinition ) -> Result<(), FormatterError>
fn visit_error_parameter( &mut self, param: &mut ErrorParameter ) -> Result<(), FormatterError>
fn visit_using(&mut self, using: &mut Using) -> Result<(), FormatterError>
fn visit_var_attribute( &mut self, attribute: &mut VariableAttribute ) -> Result<(), FormatterError>
fn visit_var_definition( &mut self, var: &mut VariableDefinition ) -> Result<(), FormatterError>
fn visit_var_definition_stmt( &mut self, loc: Loc, declaration: &mut VariableDeclaration, expr: &mut Option<Expression> ) -> Result<(), FormatterError>
fn visit_for( &mut self, loc: Loc, init: &mut Option<Box<Statement>>, cond: &mut Option<Box<Expression>>, update: &mut Option<Box<Expression>>, body: &mut Option<Box<Statement>> ) -> Result<(), Self::Error>
fn visit_while( &mut self, loc: Loc, cond: &mut Expression, body: &mut Statement ) -> Result<(), Self::Error>
fn visit_do_while( &mut self, loc: Loc, body: &mut Statement, cond: &mut Expression ) -> Result<(), Self::Error>
fn visit_if( &mut self, loc: Loc, cond: &mut Expression, if_branch: &mut Box<Statement>, else_branch: &mut Option<Box<Statement>>, is_first_stmt: bool ) -> Result<(), Self::Error>
fn visit_args( &mut self, loc: Loc, args: &mut Vec<NamedArgument> ) -> Result<(), Self::Error>
fn visit_revert( &mut self, loc: Loc, error: &mut Option<IdentifierPath>, args: &mut Vec<Expression> ) -> Result<(), Self::Error>
fn visit_revert_named_args( &mut self, loc: Loc, error: &mut Option<IdentifierPath>, args: &mut Vec<NamedArgument> ) -> Result<(), Self::Error>
fn visit_return( &mut self, loc: Loc, expr: &mut Option<Expression> ) -> Result<(), Self::Error>
fn visit_try( &mut self, loc: Loc, expr: &mut Expression, returns: &mut Option<(Vec<(Loc, Option<Parameter>)>, Box<Statement>)>, clauses: &mut Vec<CatchClause> ) -> Result<(), Self::Error>
fn visit_assembly( &mut self, loc: Loc, dialect: &mut Option<StringLiteral>, block: &mut YulBlock, flags: &mut Option<Vec<StringLiteral>> ) -> Result<(), Self::Error>
fn visit_yul_block( &mut self, loc: Loc, statements: &mut Vec<YulStatement>, attempt_single_line: bool ) -> Result<(), Self::Error>
fn visit_yul_assignment<T>( &mut self, loc: Loc, exprs: &mut Vec<T>, expr: &mut Option<&mut YulExpression> ) -> Result<(), Self::Error>where T: Visitable + CodeLocation,
fn visit_yul_expr( &mut self, expr: &mut YulExpression ) -> Result<(), Self::Error>
fn visit_yul_for(&mut self, stmt: &mut YulFor) -> Result<(), Self::Error>
fn visit_yul_function_call( &mut self, stmt: &mut YulFunctionCall ) -> Result<(), Self::Error>
fn visit_yul_typed_ident( &mut self, ident: &mut YulTypedIdentifier ) -> Result<(), Self::Error>
fn visit_yul_fun_def( &mut self, stmt: &mut YulFunctionDefinition ) -> Result<(), Self::Error>
fn visit_yul_if( &mut self, loc: Loc, expr: &mut YulExpression, block: &mut YulBlock ) -> Result<(), Self::Error>
fn visit_yul_leave(&mut self, loc: Loc) -> Result<(), Self::Error>
fn visit_yul_switch(&mut self, stmt: &mut YulSwitch) -> Result<(), Self::Error>
fn visit_yul_var_declaration( &mut self, loc: Loc, idents: &mut Vec<YulTypedIdentifier>, expr: &mut Option<YulExpression> ) -> Result<(), Self::Error>
fn visit_annotation( &mut self, annotation: &mut Annotation ) -> Result<(), FormatterError>
fn visit_parser_error(&mut self, loc: Loc) -> Result<(), FormatterError>
Auto Trait Implementations§
impl<'a, W> RefUnwindSafe for Formatter<'a, W>where W: RefUnwindSafe,
impl<'a, W> Send for Formatter<'a, W>where W: Send,
impl<'a, W> Sync for Formatter<'a, W>where W: Sync,
impl<'a, W> Unpin for Formatter<'a, W>where W: Unpin,
impl<'a, W> UnwindSafe for Formatter<'a, W>where W: UnwindSafe,
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where &'a Self: for<'a> IntoIterator,
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling [Attribute] value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi [Quirk] value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the [Condition] value
applies. Replaces any previous condition.
See the crate level docs for more details.
Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere
Self: Borrow<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> Rwhere Self: Borrow<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R
) -> Rwhere
Self: BorrowMut<B>,
B: 'a + ?Sized,
R: 'a,
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> Rwhere Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere
Self: AsRef<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> Rwhere Self: AsRef<U>, U: 'a + ?Sized, R: 'a,
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere
Self: AsMut<U>,
U: 'a + ?Sized,
R: 'a,
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> Rwhere Self: AsMut<U>, U: 'a + ?Sized, R: 'a,
self, then passes self.as_mut() into the pipe
function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere
Self: Deref<Target = T>,
T: ?Sized,
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Selfwhere Self: Deref<Target = T>, T: ?Sized,
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere
Self: DerefMut<Target = T> + Deref,
T: ?Sized,
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Selfwhere Self: DerefMut<Target = T> + Deref, T: ?Sized,
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere
Self: Borrow<B>,
B: ?Sized,
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Selfwhere Self: Borrow<B>, B: ?Sized,
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere
Self: BorrowMut<B>,
B: ?Sized,
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Selfwhere Self: BorrowMut<B>, B: ?Sized,
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere
Self: AsRef<R>,
R: ?Sized,
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Selfwhere Self: AsRef<R>, R: ?Sized,
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere
Self: AsMut<R>,
R: ?Sized,
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Selfwhere Self: AsMut<R>, R: ?Sized,
.tap_ref_mut() only in debug builds, and is erased in release
builds.