dprint_core/formatting/
actions.rs

1use std::rc::Rc;
2
3use super::print_items::*;
4
5pub fn if_column_number_changes(inner_action: impl Fn(&mut ConditionResolverContext) + 'static) -> PrintItems {
6  let mut items = PrintItems::new();
7  let column_number = ColumnNumber::new("columnNumber");
8  items.extend(action("actionIfColChanges", move |context| {
9    if let Some(column_number) = context.resolved_column_number(column_number) {
10      if column_number != context.writer_info.column_number {
11        inner_action(context);
12      }
13    }
14  }));
15  items.push_info(column_number);
16  items
17}
18
19pub fn action(name: &'static str, action: impl Fn(&mut ConditionResolverContext) + 'static) -> PrintItems {
20  Condition::new(
21    name,
22    ConditionProperties {
23      condition: Rc::new(move |context| {
24        action(context);
25        Some(true)
26      }),
27      true_path: None,
28      false_path: None,
29    },
30  )
31  .into()
32}