diff --git a/CHANGELOG.md b/CHANGELOG.md index 8871d12..bdf604f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,9 +13,12 @@ The format is based on [Keep a Changelog]. ([#229]) * [`robotidy`](https://robotidy.readthedocs.io) for Robot Framework files ([#263]). +* [denofmt](https://docs.deno.com/runtime/manual/tools/formatter) for + js, jsx, ts, tsx, json, jsonc, md files. ([#264]) [#229]: https://github.com/radian-software/apheleia/pull/229 [#263]: https://github.com/radian-software/apheleia/pull/263 +[#264]: https://github.com/radian-software/apheleia/pull/264 ## 4.0 (released 2023-11-23) ### Breaking changes diff --git a/apheleia-formatters.el b/apheleia-formatters.el index 780da69..49ffd7d 100644 --- a/apheleia-formatters.el +++ b/apheleia-formatters.el @@ -47,6 +47,14 @@ (apheleia-formatters-indent "--indent-with-tabs" "--indent-size")) (dart-format . ("dart" "format")) + (denofmt . ("deno" "fmt" "-")) + (denofmt-js . ("deno" "fmt" "-" "--ext" "js")) + (denofmt-json . ("deno" "fmt" "-" "--ext" "json")) + (denofmt-jsonc . ("deno" "fmt" "-" "--ext" "jsonc")) + (denofmt-jsx . ("deno" "fmt" "-" "--ext" "jsx")) + (denofmt-md . ("deno" "fmt" "-" "--ext" "md")) + (denofmt-ts . ("deno" "fmt" "-" "--ext" "ts")) + (denofmt-tsx . ("deno" "fmt" "-" "--ext" "tsx")) (elm-format . ("elm-format" "--yes" "--stdin")) (fish-indent . ("fish_indent")) (fourmolu . ("fourmolu")) diff --git a/test/formatters/installers/denofmt-js.bash b/test/formatters/installers/denofmt-js.bash new file mode 120000 index 0000000..5308b4b --- /dev/null +++ b/test/formatters/installers/denofmt-js.bash @@ -0,0 +1 @@ +denofmt.bash \ No newline at end of file diff --git a/test/formatters/installers/denofmt-json.bash b/test/formatters/installers/denofmt-json.bash new file mode 120000 index 0000000..5308b4b --- /dev/null +++ b/test/formatters/installers/denofmt-json.bash @@ -0,0 +1 @@ +denofmt.bash \ No newline at end of file diff --git a/test/formatters/installers/denofmt-jsonc.bash b/test/formatters/installers/denofmt-jsonc.bash new file mode 120000 index 0000000..5308b4b --- /dev/null +++ b/test/formatters/installers/denofmt-jsonc.bash @@ -0,0 +1 @@ +denofmt.bash \ No newline at end of file diff --git a/test/formatters/installers/denofmt-jsx.bash b/test/formatters/installers/denofmt-jsx.bash new file mode 120000 index 0000000..5308b4b --- /dev/null +++ b/test/formatters/installers/denofmt-jsx.bash @@ -0,0 +1 @@ +denofmt.bash \ No newline at end of file diff --git a/test/formatters/installers/denofmt-md.bash b/test/formatters/installers/denofmt-md.bash new file mode 120000 index 0000000..5308b4b --- /dev/null +++ b/test/formatters/installers/denofmt-md.bash @@ -0,0 +1 @@ +denofmt.bash \ No newline at end of file diff --git a/test/formatters/installers/denofmt-ts.bash b/test/formatters/installers/denofmt-ts.bash new file mode 120000 index 0000000..5308b4b --- /dev/null +++ b/test/formatters/installers/denofmt-ts.bash @@ -0,0 +1 @@ +denofmt.bash \ No newline at end of file diff --git a/test/formatters/installers/denofmt-tsx.bash b/test/formatters/installers/denofmt-tsx.bash new file mode 120000 index 0000000..5308b4b --- /dev/null +++ b/test/formatters/installers/denofmt-tsx.bash @@ -0,0 +1 @@ +denofmt.bash \ No newline at end of file diff --git a/test/formatters/installers/denofmt.bash b/test/formatters/installers/denofmt.bash new file mode 100644 index 0000000..e78611b --- /dev/null +++ b/test/formatters/installers/denofmt.bash @@ -0,0 +1 @@ +curl -fsSL https://deno.land/x/install/install.sh | sudo DENO_INSTALL=/usr/local sh diff --git a/test/formatters/samplecode/denofmt-js/in.js b/test/formatters/samplecode/denofmt-js/in.js new file mode 120000 index 0000000..da49303 --- /dev/null +++ b/test/formatters/samplecode/denofmt-js/in.js @@ -0,0 +1 @@ +../prettier-javascript/in.js \ No newline at end of file diff --git a/test/formatters/samplecode/denofmt-js/out.js b/test/formatters/samplecode/denofmt-js/out.js new file mode 100644 index 0000000..bfd7620 --- /dev/null +++ b/test/formatters/samplecode/denofmt-js/out.js @@ -0,0 +1,5 @@ +function HelloWorld( + { greeting = "hello", greeted = '"World"', silent = false, onMouseOver }, +) { + if (!greeting) return null; +} diff --git a/test/formatters/samplecode/denofmt-json/in.json b/test/formatters/samplecode/denofmt-json/in.json new file mode 120000 index 0000000..599a1e2 --- /dev/null +++ b/test/formatters/samplecode/denofmt-json/in.json @@ -0,0 +1 @@ +../prettier-json/in.json \ No newline at end of file diff --git a/test/formatters/samplecode/denofmt-json/out.json b/test/formatters/samplecode/denofmt-json/out.json new file mode 100644 index 0000000..59bb3b4 --- /dev/null +++ b/test/formatters/samplecode/denofmt-json/out.json @@ -0,0 +1,19 @@ +{ + "arrowParens": "always", + "bracketSpacing": true, + "embeddedLanguageFormatting": "auto", + "htmlWhitespaceSensitivity": "css", + "insertPragma": false, + "jsxBracketSameLine": false, + "jsxSingleQuote": false, + "printWidth": 80, + "proseWrap": "preserve", + "quoteProps": "as-needed", + "requirePragma": false, + "semi": true, + "singleQuote": false, + "tabWidth": 2, + "trailingComma": "es5", + "useTabs": false, + "vueIndentScriptAndStyle": false +} diff --git a/test/formatters/samplecode/denofmt-jsonc/in.jsonc b/test/formatters/samplecode/denofmt-jsonc/in.jsonc new file mode 100644 index 0000000..8ce15bd --- /dev/null +++ b/test/formatters/samplecode/denofmt-jsonc/in.jsonc @@ -0,0 +1,10 @@ +{"arrowParens": "always",// top comment + "bracketSpacing": true,"embeddedLanguageFormatting": "auto","htmlWhitespaceSensitivity": "css","insertPragma": false,"jsxBracketSameLine": false,"jsxSingleQuote": false,"printWidth": 80,// middle comment + "proseWrap": "preserve","quoteProps": "as-needed", + "requirePragma": false, + "semi": true, + "singleQuote": false, + "tabWidth": 2, + "trailingComma": "es5", + "useTabs": false,"vueIndentScriptAndStyle": false // bottom comment +} \ No newline at end of file diff --git a/test/formatters/samplecode/denofmt-jsonc/out.jsonc b/test/formatters/samplecode/denofmt-jsonc/out.jsonc new file mode 100644 index 0000000..879665d --- /dev/null +++ b/test/formatters/samplecode/denofmt-jsonc/out.jsonc @@ -0,0 +1,19 @@ +{ + "arrowParens": "always", // top comment + "bracketSpacing": true, + "embeddedLanguageFormatting": "auto", + "htmlWhitespaceSensitivity": "css", + "insertPragma": false, + "jsxBracketSameLine": false, + "jsxSingleQuote": false, + "printWidth": 80, // middle comment + "proseWrap": "preserve", + "quoteProps": "as-needed", + "requirePragma": false, + "semi": true, + "singleQuote": false, + "tabWidth": 2, + "trailingComma": "es5", + "useTabs": false, + "vueIndentScriptAndStyle": false // bottom comment +} diff --git a/test/formatters/samplecode/denofmt-jsx/in.jsx b/test/formatters/samplecode/denofmt-jsx/in.jsx new file mode 100644 index 0000000..1895e85 --- /dev/null +++ b/test/formatters/samplecode/denofmt-jsx/in.jsx @@ -0,0 +1,17 @@ +const Foo = ({name, + test} + ) => { + return <> +