Format module params in imports

This commit is contained in:
Agus Zubiaga 2024-05-02 15:58:43 -03:00
parent e5a09b5de6
commit b36f88fd13
No known key found for this signature in database
4 changed files with 155 additions and 30 deletions

View file

@ -199,12 +199,7 @@ impl<'a> Formattable for ModuleImport<'a> {
!before_name.is_empty()
|| name.is_multiline()
|| match params {
Some(ModuleImportParams { before, params }) => {
!before.is_empty() || is_collection_multiline(params)
}
None => false,
}
|| params.is_multiline()
|| alias.is_multiline()
|| match exposed {
Some(a) => a.keyword.is_multiline() || is_collection_multiline(&a.item),
@ -230,39 +225,44 @@ impl<'a> Formattable for ModuleImport<'a> {
buf.indent(indent);
buf.push_str("import");
let indent = indent + INDENT;
let indent = if !before_name.is_empty()
|| (params.is_multiline() && exposed.is_some())
|| alias.is_multiline()
|| exposed.map_or(false, |e| e.keyword.is_multiline())
{
indent + INDENT
} else {
indent
};
fmt_default_spaces(buf, before_name, indent);
buf.indent(indent);
name.format(buf, indent);
if let Some(params) = params {
// TODO: Format import params
}
if let Some(alias) = alias {
alias.format(buf, indent);
}
params.format(buf, indent);
alias.format(buf, indent);
if let Some(exposed) = exposed {
exposed.keyword.format(buf, indent);
let list_indent = if !before_name.is_empty()
|| alias.is_multiline()
|| exposed.keyword.is_multiline()
{
indent
} else {
// Align list with import keyword
indent - INDENT
};
fmt_collection(buf, list_indent, Braces::Square, exposed.item, Newlines::No);
fmt_collection(buf, indent, Braces::Square, exposed.item, Newlines::No);
}
}
}
impl<'a> Formattable for ModuleImportParams<'a> {
fn is_multiline(&self) -> bool {
let ModuleImportParams { before, params } = self;
!before.is_empty() || is_collection_multiline(params)
}
fn format_with_options(&self, buf: &mut Buf, _parens: Parens, newlines: Newlines, indent: u16) {
let ModuleImportParams { before, params } = self;
fmt_default_spaces(buf, before, indent);
fmt_collection(buf, indent, Braces::Curly, *params, newlines);
}
}
impl<'a> Formattable for IngestedFileImport<'a> {
fn is_multiline(&self) -> bool {
let Self {