ellie_fmt/renderer/items/
setter_call.rs

1use 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    //Renderer Options
9    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}