Files
ruff/crates/ruff_python_formatter/src/module/mod.rs
2023-05-31 08:27:23 +02:00

34 lines
965 B
Rust

use crate::context::ASTFormatContext;
use ruff_formatter::format_element::tag::VerbatimKind;
use ruff_formatter::prelude::*;
use ruff_formatter::write;
use rustpython_parser::ast::{Mod, Ranged};
pub(crate) struct FormatModule<'a> {
module: &'a Mod,
}
impl<'a> FormatModule<'a> {
pub(crate) fn new(module: &'a Mod) -> Self {
Self { module }
}
}
impl Format<ASTFormatContext<'_>> for FormatModule<'_> {
fn fmt(&self, f: &mut Formatter<ASTFormatContext<'_>>) -> FormatResult<()> {
let range = self.module.range();
write!(f, [source_position(range.start())])?;
f.write_element(FormatElement::Tag(Tag::StartVerbatim(
VerbatimKind::Verbatim {
length: range.len(),
},
)))?;
write!(f, [source_text_slice(range, ContainsNewlines::Detect)])?;
f.write_element(FormatElement::Tag(Tag::EndVerbatim))?;
write!(f, [source_position(range.end())])
}
}