{"id":44414110,"url":"https://github.com/guanguans/php-cs-fixer-custom-fixers","last_synced_at":"2026-04-01T18:26:32.797Z","repository":{"id":328231376,"uuid":"1110700601","full_name":"guanguans/php-cs-fixer-custom-fixers","owner":"guanguans","description":"Use php-cs-fixer to format bats,blade.php,Dockerfile,env,json,md,mdx,sh,sql,tex,text,toml,txt,xml,yaml...files.","archived":false,"fork":false,"pushed_at":"2026-03-26T21:15:30.000Z","size":339,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-27T03:49:05.462Z","etag":null,"topics":["autocorrect","blade-formatter","dockerfmt","dotenv-linter","format","lint","lint-md","markdownlint","php-cs-fixer","pint","shfmt","sqlfluff","sqruff","textlint","tombi","typos","xmllint","yamlfmt","zhlint"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/guanguans.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":"https://guanguans.github.io/sponsors"}},"created_at":"2025-12-05T15:33:17.000Z","updated_at":"2026-03-26T10:13:07.000Z","dependencies_parsed_at":"2026-01-16T10:21:12.757Z","dependency_job_id":null,"html_url":"https://github.com/guanguans/php-cs-fixer-custom-fixers","commit_stats":null,"previous_names":["guanguans/php-cs-fixer-custom-fixers"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/guanguans/php-cs-fixer-custom-fixers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guanguans%2Fphp-cs-fixer-custom-fixers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guanguans%2Fphp-cs-fixer-custom-fixers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guanguans%2Fphp-cs-fixer-custom-fixers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guanguans%2Fphp-cs-fixer-custom-fixers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/guanguans","download_url":"https://codeload.github.com/guanguans/php-cs-fixer-custom-fixers/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/guanguans%2Fphp-cs-fixer-custom-fixers/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290850,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autocorrect","blade-formatter","dockerfmt","dotenv-linter","format","lint","lint-md","markdownlint","php-cs-fixer","pint","shfmt","sqlfluff","sqruff","textlint","tombi","typos","xmllint","yamlfmt","zhlint"],"created_at":"2026-02-12T08:12:01.128Z","updated_at":"2026-04-01T18:26:32.783Z","avatar_url":"https://github.com/guanguans.png","language":"PHP","funding_links":["https://guanguans.github.io/sponsors"],"categories":[],"sub_categories":[],"readme":"# php-cs-fixer-custom-fixers\n\n\u003e [!NOTE]\n\u003e Use php-cs-fixer to format bats,blade.php,Dockerfile,env,json,md,mdx,sh,sql,tex,text,toml,txt,xml,yaml...files. - 使用 php-cs-fixer 去格式化 bats、blade.php、Dockerfile、env、json、md、mdx、sh、sql、tex、text、toml、txt、xml、yaml...文件。\n\u003e A set of custom fixers for friendsofphp/php-cs-fixer. - 一套针对 `friendsofphp/php-cs-fixer` 的自定义修复器。\n\n[![tests](https://github.com/guanguans/php-cs-fixer-custom-fixers/actions/workflows/tests.yml/badge.svg)](https://github.com/guanguans/php-cs-fixer-custom-fixers/actions/workflows/tests.yml)\n[![php-cs-fixer](https://github.com/guanguans/php-cs-fixer-custom-fixers/actions/workflows/php-cs-fixer.yml/badge.svg)](https://github.com/guanguans/php-cs-fixer-custom-fixers/actions/workflows/php-cs-fixer.yml)\n[![codecov](https://codecov.io/gh/guanguans/php-cs-fixer-custom-fixers/graph/badge.svg?token=0RtgSGom4K)](https://codecov.io/gh/guanguans/php-cs-fixer-custom-fixers)\n[![Latest Stable Version](https://poser.pugx.org/guanguans/php-cs-fixer-custom-fixers/v)](https://packagist.org/packages/guanguans/php-cs-fixer-custom-fixers)\n[![GitHub release (with filter)](https://img.shields.io/github/v/release/guanguans/php-cs-fixer-custom-fixers)](https://github.com/guanguans/php-cs-fixer-custom-fixers/releases)\n[![Total Downloads](https://poser.pugx.org/guanguans/php-cs-fixer-custom-fixers/downloads)](https://packagist.org/packages/guanguans/php-cs-fixer-custom-fixers)\n[![License](https://poser.pugx.org/guanguans/php-cs-fixer-custom-fixers/license)](https://packagist.org/packages/guanguans/php-cs-fixer-custom-fixers)\n\n## Requirement\n\n* PHP \u003e= 7.4\n\n## Installation\n\n```shell\ncomposer require guanguans/php-cs-fixer-custom-fixers --dev --ansi -v\n```\n\n## Usage\n\n### In your php-cs-fixer configuration([sample](.php-cs-fixer-custom.php)) register fixers and use them\n\n```diff\n \u003c?php\n return (new PhpCsFixer\\Config())\n+    -\u003eregisterCustomFixers($fixers = Guanguans\\PhpCsFixerCustomFixers\\Fixers::make())\n     -\u003esetRules([\n         '@PhpCsFixer:risky' =\u003e true,\n+        Guanguans\\PhpCsFixerCustomFixers\\Fixer\\CommandLineTool\\BladeFormatterFixer::name() =\u003e true,\n+        Guanguans\\PhpCsFixerCustomFixers\\Fixer\\CommandLineTool\\YamlfmtFixer::name() =\u003e true,\n+        // Other fixers...\n     ])\n     -\u003esetFinder(\n         PhpCsFixer\\Finder::create()\n             -\u003ein(__DIR__)\n+            // -\u003ename(Guanguans\\PhpCsFixerCustomFixers\\Fixer\\CommandLineTool\\BladeFormatterFixer::make()-\u003eextensionPatterns())\n+            // -\u003ename(Guanguans\\PhpCsFixerCustomFixers\\Fixer\\CommandLineTool\\YamlfmtFixer::make()-\u003eextensionPatterns())\n+            // Other ...\n+            -\u003ename($fixers-\u003eextensionPatterns())\n    );\n```\n\n### Run php-cs-fixer\n\n```shell\nvendor/bin/php-cs-fixer check --config=.php-cs-fixer-custom.php --show-progress=dots --diff --ansi -vv # Check only\nvendor/bin/php-cs-fixer fix --config=.php-cs-fixer-custom.php --show-progress=dots --diff --dry-run --ansi -vv # Check only\nvendor/bin/php-cs-fixer fix --config=.php-cs-fixer-custom.php --show-progress=dots --diff --ansi -vv # Fix\nvendor/bin/php-cs-fixer fix --config=.php-cs-fixer-custom.php --show-progress=dots --diff --ansi -vvv --sequential # Fix with show debug information\n```\n\n## Fixers\n\n\u003c!-- fixers-document:start --\u003e\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eAutocorrectFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `txt` files using [`autocorrect`](https://github.com/huacnlee/autocorrect).\n\nRisky: it depends on the configuration of `autocorrect`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['autocorrect']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['txt', 'text', 'md', 'markdown', 'mdx', 'tex']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n\nSample1: configuration(`default`)\n\n```diff\n-Hello世界！\n+Hello 世界！\n```\n\nSample2: configuration(`['options' =\u003e ['--type' =\u003e 'txt']]`)\n\n```diff\n-Hello世界！\n+Hello 世界！\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eBladeFormatterFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `blade.php` files using [`blade-formatter`](https://github.com/shufo/blade-formatter).\n\nRisky: it depends on the configuration of `blade-formatter`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['blade-formatter']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['blade.php']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n\nSample1: configuration(`default`)\n\n```diff\n-@if($paginator-\u003ehasPages())\n+@if ($paginator-\u003ehasPages())\n     \u003cnav\u003e\n         \u003cul class=\"pagination\"\u003e\n-        {{-- Previous Page Link --}}\n-        @if ($paginator-\u003eonFirstPage())\n-\n-               \u003cli class=\"disabled\" aria-disabled=\"true\"\u003e\u003cspan\u003e@lang('pagination.previous')\u003c/span\u003e\u003c/li\u003e\n-        @else\n-\n-               \u003cli\u003e\u003ca href=\"{{ $paginator-\u003epreviousPageUrl() }}\" rel=\"prev\"\u003e@lang('pagination.previous')\u003c/a\u003e\u003c/li\u003e\n-        @endif\n+            {{-- Previous Page Link --}}\n+            @if ($paginator-\u003eonFirstPage())\n+                \u003cli class=\"disabled\" aria-disabled=\"true\"\u003e\u003cspan\u003e@lang('pagination.previous')\u003c/span\u003e\u003c/li\u003e\n+            @else\n+                \u003cli\u003e\u003ca href=\"{{ $paginator-\u003epreviousPageUrl() }}\" rel=\"prev\"\u003e@lang('pagination.previous')\u003c/a\u003e\u003c/li\u003e\n+            @endif\n         \u003c/ul\u003e\n     \u003c/nav\u003e\n @endif\n```\n\nSample2: configuration(`['options' =\u003e ['--indent-size' =\u003e 2, '--extra-liners' =\u003e true]]`)\n\n```diff\n-@if($paginator-\u003ehasPages())\n-    \u003cnav\u003e\n-        \u003cul class=\"pagination\"\u003e\n-        {{-- Previous Page Link --}}\n-        @if ($paginator-\u003eonFirstPage())\n-\n-               \u003cli class=\"disabled\" aria-disabled=\"true\"\u003e\u003cspan\u003e@lang('pagination.previous')\u003c/span\u003e\u003c/li\u003e\n-        @else\n-\n-               \u003cli\u003e\u003ca href=\"{{ $paginator-\u003epreviousPageUrl() }}\" rel=\"prev\"\u003e@lang('pagination.previous')\u003c/a\u003e\u003c/li\u003e\n-        @endif\n-        \u003c/ul\u003e\n-    \u003c/nav\u003e\n+@if ($paginator-\u003ehasPages())\n+  \u003cnav\u003e\n+    \u003cul class=\"pagination\"\u003e\n+      {{-- Previous Page Link --}}\n+      @if ($paginator-\u003eonFirstPage())\n+        \u003cli class=\"disabled\" aria-disabled=\"true\"\u003e\u003cspan\u003e@lang('pagination.previous')\u003c/span\u003e\u003c/li\u003e\n+      @else\n+        \u003cli\u003e\u003ca href=\"{{ $paginator-\u003epreviousPageUrl() }}\" rel=\"prev\"\u003e@lang('pagination.previous')\u003c/a\u003e\u003c/li\u003e\n+      @endif\n+    \u003c/ul\u003e\n+  \u003c/nav\u003e\n @endif\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eDockerfmtFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `Dockerfile` files using [`dockerfmt`](https://github.com/reteps/dockerfmt).\n\nRisky: it depends on the configuration of `dockerfmt`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['dockerfmt']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['Dockerfile']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n\nSample1: configuration(`default`)\n\n```diff\n-RUN\tfoo \\\n+RUN foo \\\n     # comment 1\n-\u0026\u0026 \\\n-# comment 2\n-bar \u0026\u0026 \\\n-# comment 3\n-baz\n+    # comment 2\n+    \u0026\u0026 bar \\\n+    # comment 3\n+    \u0026\u0026 baz\n```\n\nSample2: configuration(`['options' =\u003e ['--indent' =\u003e 2]]`)\n\n```diff\n-RUN\tfoo \\\n-    # comment 1\n-\u0026\u0026 \\\n-# comment 2\n-bar \u0026\u0026 \\\n-# comment 3\n-baz\n+RUN foo \\\n+  # comment 1\n+  # comment 2\n+  \u0026\u0026 bar \\\n+  # comment 3\n+  \u0026\u0026 baz\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eDotenvLinterFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `env` files using [`dotenv-linter`](https://github.com/dotenv-linter/dotenv-linter).\n\nRisky: it depends on the configuration of `dotenv-linter`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['dotenv-linter', 'fix']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['env', 'env.example']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n\nSample1: configuration(`default`)\n\n```diff\n-FOO= BAR\n-BAR = FOO\n+BAR=FOO\n+FOO=BAR\n```\n\nSample2: configuration(`['options' =\u003e ['--plain' =\u003e true]]`)\n\n```diff\n-FOO=${BAR\n-BAR=\"$BAR}\"\n+BAR=\"${BAR}\"\n+FOO=${BAR}\n```\n\nSample3: configuration(`['options' =\u003e ['--plain' =\u003e true]]`)\n\n```diff\n-FOO=BAR BAZ\n+FOO=\"BAR BAZ\"\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eLintMdFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `md` files using [`lint-md`](https://github.com/lint-md/lint-md).\n\nRisky: it depends on the configuration of `lint-md`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['lint-md']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['md', 'markdown']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n\nSample1: configuration(`default`)\n\n```diff\n ## 全角数字\n \n-\u003e 这件蛋糕只卖 １０００ 元。\n+\u003e 这件蛋糕只卖 1000 元。\n```\n\nSample2: configuration(`['options' =\u003e ['--suppress-warnings' =\u003e true]]`)\n\n```diff\n ## 块引用空格\n \n-\u003e   摇旗呐喊的热情\n+\u003e 摇旗呐喊的热情\n \n-\u003e携光阴渐远去\n+\u003e 携光阴渐远去\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eMarkdownlintCli2Fixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `md` files using [`markdownlint-cli2`](https://github.com/DavidAnson/markdownlint-cli2).\n\nRisky: it depends on the configuration of `markdownlint-cli2`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['markdownlint-cli2']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['md', 'markdown']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n\nSample1: configuration(`default`)\n\n```diff\n # Examples\n+\n ## This is ordered list\n \n-1.    First item\n+1. First item\n 2. Second item\n \n ## This is unordered list\n \n-* https://link.com\n-* [ this is link  ](https://link.com   )\n-* ** bold text **\n+* \u003chttps://link.com\u003e\n+* [this is link](https://link.com   )\n+* **bold text**\n```\n\nSample2: configuration(`['options' =\u003e ['--no-globs' =\u003e true]]`)\n\n```diff\n # Examples\n+\n ## This is ordered list\n \n-1.    First item\n+1. First item\n 2. Second item\n \n ## This is unordered list\n \n-* https://link.com\n-* [ this is link  ](https://link.com   )\n-* ** bold text **\n+* \u003chttps://link.com\u003e\n+* [this is link](https://link.com   )\n+* **bold text**\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eMarkdownlintFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `md` files using [`markdownlint`](https://github.com/igorshubovych/markdownlint-cli).\n\nRisky: it depends on the configuration of `markdownlint`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['markdownlint']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['md', 'markdown']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n\nSample1: configuration(`default`)\n\n```diff\n # Examples\n+\n ## This is ordered list\n \n-1.    First item\n+1. First item\n 2. Second item\n \n ## This is unordered list\n \n * https://link.com\n-* [ this is link  ](https://link.com   )\n-* ** bold text **\n+* [this is link](https://link.com   )\n+* **bold text**\n```\n\nSample2: configuration(`['options' =\u003e ['--dot' =\u003e true]]`)\n\n```diff\n # Examples\n+\n ## This is ordered list\n \n-1.    First item\n+1. First item\n 2. Second item\n \n ## This is unordered list\n \n * https://link.com\n-* [ this is link  ](https://link.com   )\n-* ** bold text **\n+* [this is link](https://link.com   )\n+* **bold text**\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003ePintFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `php` files using [`pint`](https://github.com/laravel/pint).\n\nRisky: it depends on the configuration of `pint`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['php', 'vendor/bin/pint']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['php']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eShfmtFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `sh` files using [`shfmt`](https://github.com/mvdan/sh).\n\nRisky: it depends on the configuration of `shfmt`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['shfmt']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['sh', 'bats']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n\nSample1: configuration(`default`)\n\n```diff\n #!/bin/bash\n \n-if foo ;   then\n-    bar\n+if foo; then\n+\tbar\n fi\n \n for i in 1 2 3; do\n-            bar\n+\tbar\n done\n```\n\nSample2: configuration(`['options' =\u003e ['--minify' =\u003e true]]`)\n\n```diff\n #!/bin/bash\n-\n-if foo ;   then\n-    bar\n+if foo;then\n+bar\n fi\n-\n-for i in 1 2 3; do\n-            bar\n+for i in 1 2 3;do\n+bar\n done\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eSqlfluffFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `sql` files using [`sqlfluff`](https://github.com/sqlfluff/sqlfluff).\n\nRisky: it depends on the configuration of `sqlfluff`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['sqlfluff', 'format']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['sql']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n\nSample1: configuration(`default`)\n\n```diff\n-SELECT customer_id, customer_name, COUNT(order_id) as total\n+SELECT\n+    customer_id,\n+    customer_name,\n+    COUNT(order_id) AS total\n FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id\n GROUP BY customer_id, customer_name\n HAVING COUNT(order_id) \u003e 5\n ORDER BY COUNT(order_id) DESC;\n```\n\nSample2: configuration(`['options' =\u003e ['--nocolor' =\u003e true]]`)\n\n```diff\n-SELECT customer_id, customer_name, COUNT(order_id) as total\n+SELECT\n+    customer_id,\n+    customer_name,\n+    COUNT(order_id) AS total\n FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id\n GROUP BY customer_id, customer_name\n HAVING COUNT(order_id) \u003e 5\n ORDER BY COUNT(order_id) DESC;\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eSqruffFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `sql` files using [`sqruff`](https://github.com/quarylabs/sqruff).\n\nRisky: it depends on the configuration of `sqruff`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['sqruff', 'fix']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['sql']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n\nSample1: configuration(`default`)\n\n```diff\n-SELECT customer_id, customer_name, COUNT(order_id) as total\n+SELECT customer_id, customer_name, COUNT(order_id) AS total\n FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id\n GROUP BY customer_id, customer_name\n HAVING COUNT(order_id) \u003e 5\n ORDER BY COUNT(order_id) DESC;\n```\n\nSample2: configuration(`['options' =\u003e ['--parsing-errors' =\u003e true]]`)\n\n```diff\n-SELECT customer_id, customer_name, COUNT(order_id) as total\n+SELECT customer_id, customer_name, COUNT(order_id) AS total\n FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id\n GROUP BY customer_id, customer_name\n HAVING COUNT(order_id) \u003e 5\n ORDER BY COUNT(order_id) DESC;\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eTextlintFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `txt` files using [`textlint`](https://github.com/textlint/textlint).\n\nRisky: it depends on the configuration of `textlint`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['textlint']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['txt', 'text', 'md', 'markdown']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n\nSample1: configuration(`['options' =\u003e ['--rule' =\u003e 'terminology']]`)\n\n```diff\n-jquery is javascript library.\n+jQuery is JavaScript library.\n```\n\nSample2: configuration(`['options' =\u003e ['--rule' =\u003e 'terminology', '--no-color' =\u003e true]]`)\n\n```diff\n-jquery is javascript library.\n+jQuery is JavaScript library.\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eTombiFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `toml` files using [`tombi`](https://github.com/tombi-toml/tombi).\n\nRisky: it depends on the configuration of `tombi`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['tombi', 'format']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['toml']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n\nSample1: configuration(`default`)\n\n```diff\n key1 = \"value1\"\n-key2=\"value2\"\n+key2 = \"value2\"\n```\n\nSample2: configuration(`['options' =\u003e ['--diff' =\u003e true]]`)\n\n```diff\n-items = [\n-  \"a\",\n-  \"b\",\n-  \"c\"\n-]\n+items = [\"a\", \"b\", \"c\"]\n```\n\nSample3: configuration(`['options' =\u003e ['--diff' =\u003e true]]`)\n\n```diff\n-items = [\"aaa\", \"bbb\", \"ccc\", \"ddd\", \"eee\", \"fff\", \"ggg\", \"hhh\", \"iii\", \"jjj\", \"kkk\"]\n+items = [\n+  \"aaa\",\n+  \"bbb\",\n+  \"ccc\",\n+  \"ddd\",\n+  \"eee\",\n+  \"fff\",\n+  \"ggg\",\n+  \"hhh\",\n+  \"iii\",\n+  \"jjj\",\n+  \"kkk\"\n+]\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eTyposFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `any` files using [`typos`](https://github.com/crate-ci/typos).\n\nRisky: it depends on the configuration of `typos`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['typos']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['*']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n\nSample1: configuration(`default`)\n\n```diff\n-nd\n-numer\n-styl\n+and\n+number\n+style\n```\n\nSample2: configuration(`['options' =\u003e ['--sort' =\u003e true]]`)\n\n```diff\n-nd\n-numer\n-styl\n+and\n+number\n+style\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eXmllintFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `xml` files using [`xmllint`](https://gnome.pages.gitlab.gnome.org/libxml2/xmllint.html).\n\nRisky: it depends on the configuration of `xmllint`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['xmllint']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['xml', 'xml.dist']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n- `wrap_attributes_min_attrs` (`int`): minimum number of xml tag attributes for force wrap attribute options; defaults to `5`\n\nSample1: configuration(`default`)\n\n```diff\n-\u003cphpunit bootstrap=\"vendor/autoload.php\" colors=\"true\" failOnDeprecation=\"true\" failOnRisky=\"true\" failOnWarning=\"true\"\u003e\n+\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n+\u003cphpunit\n+  bootstrap=\"vendor/autoload.php\"\n+  colors=\"true\"\n+  failOnDeprecation=\"true\"\n+  failOnRisky=\"true\"\n+  failOnWarning=\"true\"\n+\u003e\n   \u003cphp\u003e\n-    \u003cini name=\"memory_limit\" value=\"-1\"   /\u003e\n-    \u003cenv name=\"DUMP_LIGHT_ARRAY\" value=\"\"\u003e\u003c/env\u003e\n+    \u003cini name=\"memory_limit\" value=\"-1\"/\u003e\n+    \u003cenv name=\"DUMP_LIGHT_ARRAY\" value=\"\"/\u003e\n   \u003c/php\u003e\n   \u003csource\u003e\n-      \u003cinclude\u003e\n-          \u003cdirectory\u003esrc/\u003c/directory\u003e\n-      \u003c/include\u003e\n+    \u003cinclude\u003e\n+      \u003cdirectory\u003esrc/\u003c/directory\u003e\n+    \u003c/include\u003e\n   \u003c/source\u003e\n \u003c/phpunit\u003e\n```\n\nSample2: configuration(`['options' =\u003e ['--noblanks' =\u003e true]]`)\n\n```diff\n-\u003cphpunit bootstrap=\"vendor/autoload.php\" colors=\"true\" failOnDeprecation=\"true\" failOnRisky=\"true\" failOnWarning=\"true\"\u003e\n+\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e\n+\u003cphpunit\n+  bootstrap=\"vendor/autoload.php\"\n+  colors=\"true\"\n+  failOnDeprecation=\"true\"\n+  failOnRisky=\"true\"\n+  failOnWarning=\"true\"\n+\u003e\n   \u003cphp\u003e\n-    \u003cini name=\"memory_limit\" value=\"-1\"   /\u003e\n-    \u003cenv name=\"DUMP_LIGHT_ARRAY\" value=\"\"\u003e\u003c/env\u003e\n+    \u003cini name=\"memory_limit\" value=\"-1\"/\u003e\n+    \u003cenv name=\"DUMP_LIGHT_ARRAY\" value=\"\"/\u003e\n   \u003c/php\u003e\n   \u003csource\u003e\n-      \u003cinclude\u003e\n-          \u003cdirectory\u003esrc/\u003c/directory\u003e\n-      \u003c/include\u003e\n+    \u003cinclude\u003e\n+      \u003cdirectory\u003esrc/\u003c/directory\u003e\n+    \u003c/include\u003e\n   \u003c/source\u003e\n \u003c/phpunit\u003e\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eYamlfmtFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `yaml` files using [`yamlfmt`](https://github.com/google/yamlfmt).\n\nRisky: it depends on the configuration of `yamlfmt`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['yamlfmt']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['yaml', 'yml']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n\nSample1: configuration(`default`)\n\n```diff\n issues:\n-    types: [ opened ]\n+  types: [opened]\n```\n\nSample2: configuration(`['options' =\u003e ['-verbose' =\u003e true]]`)\n\n```diff\n to_be_merged: \u0026tbm\n   key1: value1\n merged_map:\n-  \u003c\u003c: *tbm\n+  !!merge \u003c\u003c: *tbm\n```\n\nSample3: configuration(`['options' =\u003e ['-verbose' =\u003e true]]`)\n\n```diff\n-commands: \u003e\n+commands: \u003e-\n   [ -f \"/usr/local/bin/foo\" ] \u0026\u0026\n   echo \"skip install\" ||\n   go install github.com/foo/foo@latest\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eZhlintFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `zh_CN.md` files using [`zhlint`](https://github.com/zhlint-project/zhlint).\n\nRisky: it depends on the configuration of `zhlint`.\n\nConfiguration options:\n\n- `command` (`string[]`): the command to run and its arguments listed as separate entries; defaults to `['zhlint']`\n- `cwd` (`string`, `null`): the working directory or null to use the working dir of the current PHP process; defaults to `null`\n- `env` (`array`): the environment variables or null to use the same environment as the current PHP process; defaults to `[]`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['zh_CN.md']`\n- `input` (`string`, `null`): the input as stream resource, scalar or \\Traversable, or null for no input; defaults to `null`\n- `options` (`array`): the command options to run listed as separate entries; defaults to `[]`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `null`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n- `timeout` (`float`, `int`, `null`): the timeout in seconds or null to disable; defaults to `10`\n\nSample1: configuration(`default`)\n\n```diff\n-3 minute(s) left 中文\n+3 minute(s)left 中文\n \n-case-abbr：Pure JavaScript (a.k.a. Vanilla) 中文\n+case-abbr：Pure JavaScript(a.k.a. Vanilla)中文\n \n-case-backslash：a \\# b 中文\\# __中文__ \\# 中文 __\\#__ __中文__\\#中文__\\#__\n+case-backslash：a \\# b 中文\\# __中文__ \\# 中文 __\\#__ __中文__\\#中文 __\\#__\n \n-case-traditional：a「b『c』d」e 中文\n+case-traditional：a “b ‘c’ d” e 中文\n \n-mark-raw：a `b` c `d`e`f` g`h`i 中文\n+mark-raw：a `b` c `d` e `f` g `h` i 中文\n \n-mark-type：a__[b](x)__c__[ d ](y)__e 中文\n+mark-type：a__[b](x)__c__ [d](y) __e 中文\n \n-space-brackets：(x)a(b)c (d )e( f) g ( h ) i（j）k （l） m __( a )__ b( __c__ )d(e) 中文\n+space-brackets：(x)a(b)c(d)e(f)g(h)i(j)k(l)m__(a)__b(__c__)d(e)中文\n \n-space-punctuation：中文 。 中文(中文)中文。中文 . 中文（中文）中文.\n+space-punctuation：中文。中文(中文)中文。中文。中文(中文)中文。\n \n-space-quotations: a \" hello world \" b 中文\n+space-quotations：a “hello world” b 中文\n \n-unify-punctuation：中文,中文 （中文） 中文'中文'中文\"中文\"中文 （中文）（中文）中文 （中文）。\n+unify-punctuation：中文，中文(中文)中文 ‘中文’ 中文 “中文” 中文(中文)(中文)中文(中文)。\n```\n\nSample2: configuration(`['options' =\u003e ['--config' =\u003e null]]`)\n\n```diff\n-3 minute(s) left 中文\n+3 minute(s)left 中文\n \n-case-abbr：Pure JavaScript (a.k.a. Vanilla) 中文\n+case-abbr：Pure JavaScript(a.k.a. Vanilla)中文\n \n-case-backslash：a \\# b 中文\\# __中文__ \\# 中文 __\\#__ __中文__\\#中文__\\#__\n+case-backslash：a \\# b 中文\\# __中文__ \\# 中文 __\\#__ __中文__\\#中文 __\\#__\n \n-case-traditional：a「b『c』d」e 中文\n+case-traditional：a “b ‘c’ d” e 中文\n \n-mark-raw：a `b` c `d`e`f` g`h`i 中文\n+mark-raw：a `b` c `d` e `f` g `h` i 中文\n \n-mark-type：a__[b](x)__c__[ d ](y)__e 中文\n+mark-type：a__[b](x)__c__ [d](y) __e 中文\n \n-space-brackets：(x)a(b)c (d )e( f) g ( h ) i（j）k （l） m __( a )__ b( __c__ )d(e) 中文\n+space-brackets：(x)a(b)c(d)e(f)g(h)i(j)k(l)m__(a)__b(__c__)d(e)中文\n \n-space-punctuation：中文 。 中文(中文)中文。中文 . 中文（中文）中文.\n+space-punctuation：中文。中文(中文)中文。中文。中文(中文)中文。\n \n-space-quotations: a \" hello world \" b 中文\n+space-quotations：a “hello world” b 中文\n \n-unify-punctuation：中文,中文 （中文） 中文'中文'中文\"中文\"中文 （中文）（中文）中文 （中文）。\n+unify-punctuation：中文，中文(中文)中文 ‘中文’ 中文 “中文” 中文(中文)(中文)中文(中文)。\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eJsonFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `json` files.\n\nRisky: it depends on the configuration.\n\nConfiguration options:\n\n- `decode_flags` (`int`): the flags to use when decoding JSON; defaults to `0`\n- `encode_flags` (`int`): the flags to use when encoding JSON; defaults to `7342016`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['json']`\n- `indent_string` (`'  '`, `'    '`, `'\\t'`): the string to use for indentation; defaults to `'    '`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `'\\n'`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n\nSample1: configuration(`default`)\n\n```diff\n {\n-    \"phrase\": \"\\u4f60\\u597d\\uff01\"\n+    \"phrase\": \"你好！\"\n }\n```\n\nSample2: configuration(`['indent_string' =\u003e '  ']`)\n\n```diff\n {\n-    \"name\": \"guanguans/php-cs-fixer-custom-fixers\",\n-    \"keywords\": [\n-        \"dev\",\n-        \"fixer\",\n-        \"standards\"\n-    ],\n-    \"authors\": [\n-        {\n-            \"name\": \"guanguans\",\n-            \"email\": \"ityaozm@gmail.com\",\n-            \"homepage\": \"https://github.com/guanguans\"\n-        }\n-    ]\n+  \"name\": \"guanguans/php-cs-fixer-custom-fixers\",\n+  \"keywords\": [\n+    \"dev\",\n+    \"fixer\",\n+    \"standards\"\n+  ],\n+  \"authors\": [\n+    {\n+      \"name\": \"guanguans\",\n+      \"email\": \"ityaozm@gmail.com\",\n+      \"homepage\": \"https://github.com/guanguans\"\n+    }\n+  ]\n }\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eSqlOfDoctrineSqlFormatterFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `sql` files using [`doctrine/sql-formatter`](https://github.com/doctrine/sql-formatter).\n\nRisky: it depends on the configuration of `doctrine/sql-formatter`.\n\nConfiguration options:\n\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['sql']`\n- `indent_string` (`'  '`, `'    '`, `'\\t'`): the SQL string with HTML styles and formatting wrapped in a \u0026lt;pre\u0026gt; tag; defaults to `'    '`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `'\\n'`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n\nSample1: configuration(`default`)\n\n```diff\n-SELECT customer_id, customer_name, COUNT(order_id) as total\n-FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id\n-GROUP BY customer_id, customer_name\n-HAVING COUNT(order_id) \u003e 5\n-ORDER BY COUNT(order_id) DESC;\n+SELECT\n+    customer_id,\n+    customer_name,\n+    COUNT(order_id) AS total\n+FROM\n+    customers\n+    INNER JOIN orders ON customers.customer_id = orders.customer_id\n+GROUP BY\n+    customer_id,\n+    customer_name\n+HAVING\n+    COUNT(order_id) \u003e 5\n+ORDER BY\n+    COUNT(order_id) DESC;\n```\n\nSample2: configuration(`['indent_string' =\u003e '  ']`)\n\n```diff\n-SELECT customer_id, customer_name, COUNT(order_id) as total\n-FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id\n-GROUP BY customer_id, customer_name\n-HAVING COUNT(order_id) \u003e 5\n-ORDER BY COUNT(order_id) DESC;\n+SELECT\n+  customer_id,\n+  customer_name,\n+  COUNT(order_id) AS total\n+FROM\n+  customers\n+  INNER JOIN orders ON customers.customer_id = orders.customer_id\n+GROUP BY\n+  customer_id,\n+  customer_name\n+HAVING\n+  COUNT(order_id) \u003e 5\n+ORDER BY\n+  COUNT(order_id) DESC;\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003eSqlOfPhpmyadminSqlParserFixer\u003c/b\u003e\u003c/summary\u003e\n\nFormat `sql` files using [`phpmyadmin/sql-parser`](https://github.com/phpmyadmin/sql-parser).\n\nRisky: it depends on the configuration of `phpmyadmin/sql-parser`.\n\nConfiguration options:\n\n- `clause_newline` (`bool`): whether each clause should be on a new line; defaults to `true`\n- `extensions` (`string[]`): the supported file extensions are used for formatting; defaults to `['sql']`\n- `indent_parts` (`bool`): whether each part of each clause should be indented; defaults to `true`\n- `indentation` (`'  '`, `'    '`, `'\\t'`, `null`): the string used for indentation; defaults to `null`\n- `line_ending` (`'\\n'`, `'\\r\\n'`, `null`): the line ending used; defaults to `null`\n- `parts_newline` (`bool`): whether each part should be on a new line; defaults to `true`\n- `remove_comments` (`bool`): whether comments should be removed or not; defaults to `false`\n- `single_blank_line_at_eof` (`'\\n'`, `'\\r\\n'`, `null`): the line ending to use at the end of the file; defaults to `'\\n'`\n- `skip_paths` (`string[]`): list of paths to skip; defaults to `[]`\n\nSample1: configuration(`default`)\n\n```diff\n-SELECT customer_id, customer_name, COUNT(order_id) as total\n-FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id\n-GROUP BY customer_id, customer_name\n-HAVING COUNT(order_id) \u003e 5\n-ORDER BY COUNT(order_id) DESC;\n+SELECT\n+    customer_id,\n+    customer_name,\n+    COUNT(order_id) AS total\n+FROM\n+    customers\n+INNER JOIN orders ON customers.customer_id = orders.customer_id\n+GROUP BY\n+    customer_id,\n+    customer_name\n+HAVING\n+    COUNT(order_id) \u003e 5\n+ORDER BY\n+    COUNT(order_id)\n+DESC\n+    ;\n```\n\nSample2: configuration(`['clause_newline' =\u003e false]`)\n\n```diff\n-SELECT customer_id, customer_name, COUNT(order_id) as total\n-FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id\n-GROUP BY customer_id, customer_name\n-HAVING COUNT(order_id) \u003e 5\n-ORDER BY COUNT(order_id) DESC;\n+SELECT customer_id, customer_name, COUNT(order_id) AS total FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id GROUP BY customer_id, customer_name HAVING COUNT(order_id) \u003e 5 ORDER BY COUNT(order_id)\n+DESC;\n```\n\nSample3: configuration(`['indentation' =\u003e '  ']`)\n\n```diff\n-SELECT customer_id, customer_name, COUNT(order_id) as total\n-FROM customers INNER JOIN orders ON customers.customer_id = orders.customer_id\n-GROUP BY customer_id, customer_name\n-HAVING COUNT(order_id) \u003e 5\n-ORDER BY COUNT(order_id) DESC;\n+SELECT\n+  customer_id,\n+  customer_name,\n+  COUNT(order_id) AS total\n+FROM\n+  customers\n+INNER JOIN orders ON customers.customer_id = orders.customer_id\n+GROUP BY\n+  customer_id,\n+  customer_name\n+HAVING\n+  COUNT(order_id) \u003e 5\n+ORDER BY\n+  COUNT(order_id)\n+DESC\n+  ;\n```\n\u003c/details\u003e\n\u003c!-- fixers-document:end --\u003e\n\n## Composer scripts\n\n```shell\ncomposer checks:required\ncomposer php-cs-fixer-custom-fixers:install-command-line-tools --dry-run\ncomposer php-cs-fixer-custom-fixers:install-command-line-tools -vvv\ncomposer php-cs-fixer-custom-fixers:update-fixers-document\ncomposer php-cs-fixer:fix\ncomposer test\n```\n\n## Changelog\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.\n\n## Contributing\n\nPlease see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.\n\n## Security Vulnerabilities\n\nPlease review [our security policy](../../security/policy) on how to report security vulnerabilities.\n\n## Credits\n\n* [guanguans](https://github.com/guanguans)\n* [All Contributors](../../contributors)\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguanguans%2Fphp-cs-fixer-custom-fixers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fguanguans%2Fphp-cs-fixer-custom-fixers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fguanguans%2Fphp-cs-fixer-custom-fixers/lists"}