mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-28 04:45:01 +00:00
44 lines
1.4 KiB
Rust
44 lines
1.4 KiB
Rust
use crate::prelude::*;
|
|
use ruff_formatter::{FormatOwnedWithRule, FormatRefWithRule};
|
|
use ruff_python_ast::Operator;
|
|
|
|
#[derive(Copy, Clone)]
|
|
pub struct FormatOperator;
|
|
|
|
impl<'ast> AsFormat<PyFormatContext<'ast>> for Operator {
|
|
type Format<'a> = FormatRefWithRule<'a, Operator, FormatOperator, PyFormatContext<'ast>>;
|
|
|
|
fn format(&self) -> Self::Format<'_> {
|
|
FormatRefWithRule::new(self, FormatOperator)
|
|
}
|
|
}
|
|
|
|
impl<'ast> IntoFormat<PyFormatContext<'ast>> for Operator {
|
|
type Format = FormatOwnedWithRule<Operator, FormatOperator, PyFormatContext<'ast>>;
|
|
|
|
fn into_format(self) -> Self::Format {
|
|
FormatOwnedWithRule::new(self, FormatOperator)
|
|
}
|
|
}
|
|
|
|
impl FormatRule<Operator, PyFormatContext<'_>> for FormatOperator {
|
|
fn fmt(&self, item: &Operator, f: &mut PyFormatter) -> FormatResult<()> {
|
|
let operator = match item {
|
|
Operator::Add => "+",
|
|
Operator::Sub => "-",
|
|
Operator::Mult => "*",
|
|
Operator::MatMult => "@",
|
|
Operator::Div => "/",
|
|
Operator::Mod => "%",
|
|
Operator::Pow => "**",
|
|
Operator::LShift => "<<",
|
|
Operator::RShift => ">>",
|
|
Operator::BitOr => "|",
|
|
Operator::BitXor => "^",
|
|
Operator::BitAnd => "&",
|
|
Operator::FloorDiv => "//",
|
|
};
|
|
|
|
token(operator).fmt(f)
|
|
}
|
|
}
|