1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-21 15:04:11 -05:00

feat(fmt): stabilize CSS, HTML and YAML formatters (#25753)

This commits stabilizes CSS, HTML and YAML formatters
in `deno fmt`.

It is no longer required to use either of these flags:
- `--unstable-css`
- `--unstable-html`
- `--unstable-yaml`
Or these `unstable` options in the config file:
- `fmt-css`
- `fmt-html`
- `html-yaml`
This commit is contained in:
Bartek Iwańczuk 2024-09-23 17:01:04 +01:00 committed by GitHub
parent be13da5d8d
commit a7ac89935b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
15 changed files with 39 additions and 209 deletions

View file

@ -206,10 +206,7 @@ pub struct FmtFlags {
pub prose_wrap: Option<String>,
pub no_semicolons: Option<bool>,
pub watch: Option<WatchFlags>,
pub unstable_css: bool,
pub unstable_html: bool,
pub unstable_component: bool,
pub unstable_yaml: bool,
}
impl FmtFlags {
@ -2219,7 +2216,8 @@ Ignore formatting a file by adding an ignore comment at the top of the file:
.help("Enable formatting CSS, SCSS, Sass and Less files")
.value_parser(FalseyValueParser::new())
.action(ArgAction::SetTrue)
.help_heading(FMT_HEADING),
.help_heading(FMT_HEADING)
.hide(true),
)
.arg(
Arg::new("unstable-html")
@ -2227,7 +2225,8 @@ Ignore formatting a file by adding an ignore comment at the top of the file:
.help("Enable formatting HTML files")
.value_parser(FalseyValueParser::new())
.action(ArgAction::SetTrue)
.help_heading(FMT_HEADING),
.help_heading(FMT_HEADING)
.hide(true),
)
.arg(
Arg::new("unstable-component")
@ -2243,7 +2242,8 @@ Ignore formatting a file by adding an ignore comment at the top of the file:
.help("Enable formatting YAML files")
.value_parser(FalseyValueParser::new())
.action(ArgAction::SetTrue)
.help_heading(FMT_HEADING),
.help_heading(FMT_HEADING)
.hide(true),
)
})
}
@ -4374,10 +4374,7 @@ fn fmt_parse(
let single_quote = matches.remove_one::<bool>("single-quote");
let prose_wrap = matches.remove_one::<String>("prose-wrap");
let no_semicolons = matches.remove_one::<bool>("no-semicolons");
let unstable_css = matches.get_flag("unstable-css");
let unstable_html = matches.get_flag("unstable-html");
let unstable_component = matches.get_flag("unstable-component");
let unstable_yaml = matches.get_flag("unstable-yaml");
flags.subcommand = DenoSubcommand::Fmt(FmtFlags {
check: matches.get_flag("check"),
@ -4389,10 +4386,7 @@ fn fmt_parse(
prose_wrap,
no_semicolons,
watch: watch_arg_parse(matches)?,
unstable_css,
unstable_html,
unstable_component,
unstable_yaml,
});
Ok(())
}
@ -6272,10 +6266,7 @@ mod tests {
single_quote: None,
prose_wrap: None,
no_semicolons: None,
unstable_css: false,
unstable_html: false,
unstable_component: false,
unstable_yaml: false,
watch: Default::default(),
}),
..Flags::default()
@ -6298,10 +6289,7 @@ mod tests {
single_quote: None,
prose_wrap: None,
no_semicolons: None,
unstable_css: false,
unstable_html: false,
unstable_component: false,
unstable_yaml: false,
watch: Default::default(),
}),
..Flags::default()
@ -6324,10 +6312,7 @@ mod tests {
single_quote: None,
prose_wrap: None,
no_semicolons: None,
unstable_css: false,
unstable_html: false,
unstable_component: false,
unstable_yaml: false,
watch: Default::default(),
}),
..Flags::default()
@ -6350,10 +6335,7 @@ mod tests {
single_quote: None,
prose_wrap: None,
no_semicolons: None,
unstable_css: false,
unstable_html: false,
unstable_component: false,
unstable_yaml: false,
watch: Some(Default::default()),
}),
..Flags::default()
@ -6385,10 +6367,7 @@ mod tests {
single_quote: None,
prose_wrap: None,
no_semicolons: None,
unstable_css: true,
unstable_html: true,
unstable_component: true,
unstable_yaml: true,
watch: Some(WatchFlags {
hmr: false,
no_clear_screen: true,
@ -6422,10 +6401,7 @@ mod tests {
single_quote: None,
prose_wrap: None,
no_semicolons: None,
unstable_css: false,
unstable_html: false,
unstable_component: false,
unstable_yaml: false,
watch: Some(Default::default()),
}),
..Flags::default()
@ -6448,10 +6424,7 @@ mod tests {
single_quote: None,
prose_wrap: None,
no_semicolons: None,
unstable_css: false,
unstable_html: false,
unstable_component: false,
unstable_yaml: false,
watch: Default::default(),
}),
config_flag: ConfigFlag::Path("deno.jsonc".to_string()),
@ -6482,10 +6455,7 @@ mod tests {
single_quote: None,
prose_wrap: None,
no_semicolons: None,
unstable_css: false,
unstable_html: false,
unstable_component: false,
unstable_yaml: false,
watch: Some(Default::default()),
}),
config_flag: ConfigFlag::Path("deno.jsonc".to_string()),
@ -6521,10 +6491,7 @@ mod tests {
single_quote: Some(true),
prose_wrap: Some("never".to_string()),
no_semicolons: Some(true),
unstable_css: false,
unstable_html: false,
unstable_component: false,
unstable_yaml: false,
watch: Default::default(),
}),
..Flags::default()
@ -6554,10 +6521,7 @@ mod tests {
single_quote: Some(false),
prose_wrap: None,
no_semicolons: Some(false),
unstable_css: false,
unstable_html: false,
unstable_component: false,
unstable_yaml: false,
watch: Default::default(),
}),
..Flags::default()

View file

@ -281,10 +281,7 @@ impl BenchOptions {
#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)]
pub struct UnstableFmtOptions {
pub css: bool,
pub html: bool,
pub component: bool,
pub yaml: bool,
}
#[derive(Clone, Debug)]
@ -317,10 +314,7 @@ impl FmtOptions {
Self {
options: resolve_fmt_options(fmt_flags, fmt_config.options),
unstable: UnstableFmtOptions {
css: unstable.css || fmt_flags.unstable_css,
html: unstable.html || fmt_flags.unstable_html,
component: unstable.component || fmt_flags.unstable_component,
yaml: unstable.yaml || fmt_flags.unstable_yaml,
},
files: fmt_config.files,
}
@ -1301,10 +1295,7 @@ impl CliOptions {
pub fn resolve_config_unstable_fmt_options(&self) -> UnstableFmtOptions {
let workspace = self.workspace();
UnstableFmtOptions {
css: workspace.has_unstable("fmt-css"),
html: workspace.has_unstable("fmt-html"),
component: workspace.has_unstable("fmt-component"),
yaml: workspace.has_unstable("fmt-yaml"),
}
}
@ -1609,10 +1600,7 @@ impl CliOptions {
"sloppy-imports",
"byonm",
"bare-node-builtins",
"fmt-css",
"fmt-html",
"fmt-component",
"fmt-yaml",
]);
// add more unstable flags to the same vector holding granular flags
all_valid_unstable_flags.append(&mut another_unstable_flags);

View file

@ -1385,18 +1385,9 @@ impl Inner {
.data_for_specifier(&specifier)
.map(|d| &d.member_dir.workspace);
let unstable_options = UnstableFmtOptions {
css: maybe_workspace
.map(|w| w.has_unstable("fmt-css"))
.unwrap_or(false),
html: maybe_workspace
.map(|w| w.has_unstable("fmt-html"))
.unwrap_or(false),
component: maybe_workspace
.map(|w| w.has_unstable("fmt-component"))
.unwrap_or(false),
yaml: maybe_workspace
.map(|w| w.has_unstable("fmt-yaml"))
.unwrap_or(false),
};
let document = document.clone();
move || {

View file

@ -285,19 +285,9 @@ fn format_markdown(
dprint_plugin_json::format_text(&fake_filename, text, &json_config)
}
"css" | "scss" | "sass" | "less" => {
if unstable_options.css {
format_css(&fake_filename, text, fmt_options)
} else {
Ok(None)
}
}
"html" => {
if unstable_options.html {
format_html(&fake_filename, text, fmt_options)
} else {
Ok(None)
}
format_css(&fake_filename, text, fmt_options)
}
"html" => format_html(&fake_filename, text, fmt_options),
"svelte" | "vue" | "astro" => {
if unstable_options.component {
format_html(&fake_filename, text, fmt_options)
@ -305,18 +295,12 @@ fn format_markdown(
Ok(None)
}
}
"yml" | "yaml" => {
if unstable_options.yaml {
pretty_yaml::format_text(
text,
&get_resolved_yaml_config(fmt_options),
)
.map(Some)
.map_err(AnyError::from)
} else {
Ok(None)
}
}
"yml" | "yaml" => pretty_yaml::format_text(
text,
&get_resolved_yaml_config(fmt_options),
)
.map(Some)
.map_err(AnyError::from),
_ => {
let mut codeblock_config =
get_resolved_typescript_config(fmt_options);
@ -473,19 +457,9 @@ pub fn format_file(
}
"json" | "jsonc" => format_json(file_path, file_text, fmt_options),
"css" | "scss" | "sass" | "less" => {
if unstable_options.css {
format_css(file_path, file_text, fmt_options)
} else {
Ok(None)
}
}
"html" => {
if unstable_options.html {
format_html(file_path, file_text, fmt_options)
} else {
Ok(None)
}
format_css(file_path, file_text, fmt_options)
}
"html" => format_html(file_path, file_text, fmt_options),
"svelte" | "vue" | "astro" => {
if unstable_options.component {
format_html(file_path, file_text, fmt_options)
@ -493,18 +467,12 @@ pub fn format_file(
Ok(None)
}
}
"yml" | "yaml" => {
if unstable_options.yaml {
pretty_yaml::format_text(
file_text,
&get_resolved_yaml_config(fmt_options),
)
.map(Some)
.map_err(AnyError::from)
} else {
Ok(None)
}
}
"yml" | "yaml" => pretty_yaml::format_text(
file_text,
&get_resolved_yaml_config(fmt_options),
)
.map(Some)
.map_err(AnyError::from),
"ipynb" => dprint_plugin_jupyter::format_text(
file_text,
|file_path: &Path, file_text: String| {

View file

@ -10597,13 +10597,6 @@ fn lsp_format_markdown() {
fn lsp_format_html() {
let context = TestContextBuilder::new().use_temp_cwd().build();
let temp_dir = context.temp_dir();
temp_dir.write(
"deno.json",
json!({
"unstable": ["fmt-html"],
})
.to_string(),
);
let html_file =
source_file(temp_dir.path().join("file.html"), " <html></html>");
let mut client = context.new_lsp_command().build();
@ -10644,13 +10637,6 @@ fn lsp_format_html() {
fn lsp_format_css() {
let context = TestContextBuilder::new().use_temp_cwd().build();
let temp_dir = context.temp_dir();
temp_dir.write(
"deno.json",
json!({
"unstable": ["fmt-css"],
})
.to_string(),
);
let css_file = source_file(temp_dir.path().join("file.css"), " foo {}");
let mut client = context.new_lsp_command().build();
client.initialize_default();
@ -10690,13 +10676,6 @@ fn lsp_format_css() {
fn lsp_format_yaml() {
let context = TestContextBuilder::new().use_temp_cwd().build();
let temp_dir = context.temp_dir();
temp_dir.write(
"deno.json",
json!({
"unstable": ["fmt-yaml"],
})
.to_string(),
);
let yaml_file = source_file(temp_dir.path().join("file.yaml"), " foo: 1");
let mut client = context.new_lsp_command().build();
client.initialize_default();

View file

@ -0,0 +1,5 @@
{
"tempDir": true,
"args": "fmt",
"output": "[WILDLINE]badly_formatted.css\nChecked 1 file\n"
}

View file

@ -0,0 +1,5 @@
{
"tempDir": true,
"args": "fmt --unstable-html",
"output": "[WILDLINE]badly_formatted.html\nChecked 1 file\n"
}

View file

@ -6,14 +6,14 @@
"output": "Checked 1 file\n"
},
"flag": {
"args": "fmt --unstable-css --unstable-component",
"args": "fmt --unstable-component",
"output": "[WILDLINE]badly_formatted.svelte\nChecked 1 file\n"
},
"config_file": {
"steps": [{
"args": [
"eval",
"Deno.writeTextFile('deno.json', '{\\n \"unstable\": [\"fmt-css\", \"fmt-component\"]\\n}\\n')"
"Deno.writeTextFile('deno.json', '{\\n \"unstable\": [\"fmt-component\"]\\n}\\n')"
],
"output": "[WILDCARD]"
}, {

View file

@ -1,25 +0,0 @@
{
"tempDir": true,
"tests": {
"nothing": {
"args": "fmt",
"output": "Checked 1 file\n"
},
"flag": {
"args": "fmt --unstable-css",
"output": "[WILDLINE]badly_formatted.css\nChecked 1 file\n"
},
"config_file": {
"steps": [{
"args": [
"eval",
"Deno.writeTextFile('deno.json', '{\\n \"unstable\": [\"fmt-css\"]\\n}\\n')"
],
"output": "[WILDCARD]"
}, {
"args": "fmt",
"output": "[WILDLINE]badly_formatted.css\nChecked 2 files\n"
}]
}
}
}

View file

@ -1,25 +0,0 @@
{
"tempDir": true,
"tests": {
"nothing": {
"args": "fmt",
"output": "Checked 1 file\n"
},
"flag": {
"args": "fmt --unstable-css --unstable-html",
"output": "[WILDLINE]badly_formatted.html\nChecked 1 file\n"
},
"config_file": {
"steps": [{
"args": [
"eval",
"Deno.writeTextFile('deno.json', '{\\n \"unstable\": [\"fmt-css\", \"fmt-html\"]\\n}\\n')"
],
"output": "[WILDCARD]"
}, {
"args": "fmt",
"output": "[WILDLINE]badly_formatted.html\nChecked 2 files\n"
}]
}
}
}

View file

@ -1,25 +0,0 @@
{
"tempDir": true,
"tests": {
"nothing": {
"args": "fmt",
"output": "Checked 1 file\n"
},
"flag": {
"args": "fmt --unstable-yaml",
"output": "[WILDLINE]badly_formatted.yml\nChecked 1 file\n"
},
"config_file": {
"steps": [{
"args": [
"eval",
"Deno.writeTextFile('deno.json', '{\\n \"unstable\": [\"fmt-yaml\"]\\n}\\n')"
],
"output": "[WILDCARD]"
}, {
"args": "fmt",
"output": "[WILDLINE]badly_formatted.yml\nChecked 2 files\n"
}]
}
}
}

View file

@ -0,0 +1,5 @@
{
"tempDir": true,
"args": "fmt",
"output": "[WILDLINE]badly_formatted.yml\nChecked 1 file\n"
}