mirror of
https://github.com/roc-lang/roc.git
synced 2025-08-03 11:52:19 +00:00
Format module params in imports
This commit is contained in:
parent
e5a09b5de6
commit
b36f88fd13
4 changed files with 155 additions and 30 deletions
|
@ -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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue