ellie_fmt/renderer/items/
setter_call.rs1use super::super::{CodeRenderer, State};
2use crate::fmt::FormatterOptions;
3use ellie_tokenizer::syntax::{
4 items::setter_call::SetterCall, types::operator_type::AssignmentOperators,
5};
6
7impl CodeRenderer for SetterCall {
8 fn render(&self, state: &State, options: &FormatterOptions) -> String {
10 let state_scope_length = state.render_scope_space(options);
11 let line_ending = &options.render_line_ending();
12 let target_value = self.target.render(&State::empty_state(), options);
13 let mut operator = match self.operator {
14 AssignmentOperators::Assignment => "=",
15 AssignmentOperators::AdditionAssignment => "+=",
16 AssignmentOperators::SubtractionAssignment => "-=",
17 AssignmentOperators::MultiplicationAssignment => "*=",
18 AssignmentOperators::DivisionAssignment => "/=",
19 AssignmentOperators::ModulusAssignment => "%=",
20 AssignmentOperators::ExponentiationAssignment => "**=",
21 AssignmentOperators::Null => "",
22 }
23 .to_string();
24
25 if options.space_between_operators {
26 operator = format!(" {} ", operator);
27 }
28
29 let value = self.value.render(&State::empty_state(), options);
30
31 format!("{state_scope_length}{target_value}{operator}{value};{line_ending}",)
32 }
33}