mirror of
https://github.com/roc-lang/roc.git
synced 2025-10-01 15:51:12 +00:00
format hosted modules
This commit is contained in:
parent
484ce2fbc9
commit
c3123de737
2 changed files with 65 additions and 4 deletions
|
@ -12,8 +12,8 @@ use roc_parse::ast::{
|
||||||
TypeAnnotation, WhenBranch,
|
TypeAnnotation, WhenBranch,
|
||||||
};
|
};
|
||||||
use roc_parse::header::{
|
use roc_parse::header::{
|
||||||
AppHeader, Effects, ExposedName, ImportsEntry, InterfaceHeader, ModuleName, PackageEntry,
|
AppHeader, Effects, ExposedName, HostedHeader, ImportsEntry, InterfaceHeader, ModuleName,
|
||||||
PackageName, PlatformHeader, PlatformRequires, To, TypedIdent,
|
PackageEntry, PackageName, PlatformHeader, PlatformRequires, To, TypedIdent,
|
||||||
};
|
};
|
||||||
use roc_parse::{
|
use roc_parse::{
|
||||||
ast::{Def, Module},
|
ast::{Def, Module},
|
||||||
|
@ -221,6 +221,25 @@ impl<'a> RemoveSpaces<'a> for Module<'a> {
|
||||||
after_provides: &[],
|
after_provides: &[],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Module::Hosted { header } => Module::Hosted {
|
||||||
|
header: HostedHeader {
|
||||||
|
name: header.name.remove_spaces(arena),
|
||||||
|
exposes: header.exposes.remove_spaces(arena),
|
||||||
|
imports: header.imports.remove_spaces(arena),
|
||||||
|
generates: header.generates.remove_spaces(arena),
|
||||||
|
generates_with: header.generates_with.remove_spaces(arena),
|
||||||
|
before_header: &[],
|
||||||
|
after_hosted_keyword: &[],
|
||||||
|
before_exposes: &[],
|
||||||
|
after_exposes: &[],
|
||||||
|
before_imports: &[],
|
||||||
|
after_imports: &[],
|
||||||
|
before_generates: &[],
|
||||||
|
after_generates: &[],
|
||||||
|
before_with: &[],
|
||||||
|
after_with: &[],
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,8 +5,8 @@ use crate::spaces::{fmt_default_spaces, fmt_spaces, INDENT};
|
||||||
use crate::Buf;
|
use crate::Buf;
|
||||||
use roc_parse::ast::{Collection, Module, Spaced};
|
use roc_parse::ast::{Collection, Module, Spaced};
|
||||||
use roc_parse::header::{
|
use roc_parse::header::{
|
||||||
AppHeader, Effects, ExposedName, ImportsEntry, InterfaceHeader, ModuleName, PackageEntry,
|
AppHeader, Effects, ExposedName, HostedHeader, ImportsEntry, InterfaceHeader, ModuleName,
|
||||||
PackageName, PlatformHeader, PlatformRequires, To, TypedIdent,
|
PackageEntry, PackageName, PlatformHeader, PlatformRequires, To, TypedIdent,
|
||||||
};
|
};
|
||||||
use roc_parse::ident::UppercaseIdent;
|
use roc_parse::ident::UppercaseIdent;
|
||||||
use roc_region::all::Loc;
|
use roc_region::all::Loc;
|
||||||
|
@ -22,6 +22,9 @@ pub fn fmt_module<'a, 'buf>(buf: &mut Buf<'buf>, module: &'a Module<'a>) {
|
||||||
Module::Platform { header } => {
|
Module::Platform { header } => {
|
||||||
fmt_platform_header(buf, header);
|
fmt_platform_header(buf, header);
|
||||||
}
|
}
|
||||||
|
Module::Hosted { header } => {
|
||||||
|
fmt_hosted_header(buf, header);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,6 +53,45 @@ pub fn fmt_interface_header<'a, 'buf>(buf: &mut Buf<'buf>, header: &'a Interface
|
||||||
fmt_imports(buf, header.imports, indent);
|
fmt_imports(buf, header.imports, indent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn fmt_hosted_header<'a, 'buf>(buf: &mut Buf<'buf>, header: &'a HostedHeader<'a>) {
|
||||||
|
let indent = INDENT;
|
||||||
|
|
||||||
|
buf.indent(0);
|
||||||
|
buf.push_str("hosted");
|
||||||
|
|
||||||
|
// module name
|
||||||
|
fmt_default_spaces(buf, header.after_hosted_keyword, indent);
|
||||||
|
buf.push_str(header.name.value.as_str());
|
||||||
|
|
||||||
|
// exposes
|
||||||
|
fmt_default_spaces(buf, header.before_exposes, indent);
|
||||||
|
buf.indent(indent);
|
||||||
|
buf.push_str("exposes");
|
||||||
|
fmt_default_spaces(buf, header.after_exposes, indent);
|
||||||
|
fmt_exposes(buf, header.exposes, indent);
|
||||||
|
|
||||||
|
// imports
|
||||||
|
fmt_default_spaces(buf, header.before_imports, indent);
|
||||||
|
buf.indent(indent);
|
||||||
|
buf.push_str("imports");
|
||||||
|
fmt_default_spaces(buf, header.after_imports, indent);
|
||||||
|
fmt_imports(buf, header.imports, indent);
|
||||||
|
|
||||||
|
// generates
|
||||||
|
fmt_default_spaces(buf, header.before_generates, indent);
|
||||||
|
buf.indent(indent);
|
||||||
|
buf.push_str("generates");
|
||||||
|
fmt_default_spaces(buf, header.after_generates, indent);
|
||||||
|
buf.push_str(header.generates.into());
|
||||||
|
|
||||||
|
// with
|
||||||
|
fmt_default_spaces(buf, header.before_with, indent);
|
||||||
|
buf.indent(indent);
|
||||||
|
buf.push_str("with");
|
||||||
|
fmt_default_spaces(buf, header.after_with, indent);
|
||||||
|
fmt_exposes(buf, header.generates_with, indent);
|
||||||
|
}
|
||||||
|
|
||||||
pub fn fmt_app_header<'a, 'buf>(buf: &mut Buf<'buf>, header: &'a AppHeader<'a>) {
|
pub fn fmt_app_header<'a, 'buf>(buf: &mut Buf<'buf>, header: &'a AppHeader<'a>) {
|
||||||
let indent = INDENT;
|
let indent = INDENT;
|
||||||
buf.indent(0);
|
buf.indent(0);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue