From 9d5ec5e3bc01c6174dea048e118edee579c36565 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 7 Feb 2026 23:06:23 +0900 Subject: fix(style): fix codeblock style for rouge --- .../reparojson-fix-only-json-formatter/index.html | 107 ++++++++++----------- 1 file changed, 51 insertions(+), 56 deletions(-) (limited to 'services/nuldoc/public/blog/posts/2024-07-19') diff --git a/services/nuldoc/public/blog/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html b/services/nuldoc/public/blog/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html index 4856480e..009ca8f9 100644 --- a/services/nuldoc/public/blog/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html +++ b/services/nuldoc/public/blog/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html @@ -15,7 +15,7 @@ reparojson: 文法エラーを直すだけの JSON フォーマッタを作った|REPL: Rest-Eat-Program Loop - +
@@ -106,18 +106,17 @@ 次のように動作する。

-
$ echo '[ 1 2 ]' | reparojson
-[ 1, 2 ]
-
-$ echo '[ 1, 2, ]' | reparojson
-[ 1, 2 ]
-
-$ echo '{ "foo": 1 "bar": 2 }' | reparojson
-{ "foo": 1, "bar": 2 }
-
-$ echo '{ "foo": 1, "bar": 2, }' | reparojson
-{ "foo": 1, "bar": 2 }
-
+
$ echo '[ 1 2 ]' | reparojson +
[ 1, 2 ] +
+
$ echo '[ 1, 2, ]' | reparojson +
[ 1, 2 ] +
+
$ echo '{ "foo": 1 "bar": 2 }' | reparojson +
{ "foo": 1, "bar": 2 } +
+
$ echo '{ "foo": 1, "bar": 2, }' | reparojson +
{ "foo": 1, "bar": 2 }

バージョン 0.1.1 時点で修正対象の文法エラーは次のとおり: @@ -149,34 +148,33 @@ $ echo '{ "foo": 1, "bar": 2, }' | reparojson ここでは、 nvim-lspconfigefm-langserver を用いた設定例を紹介する。

-
   local lspconfig = require('lspconfig')
-
-   lspconfig.efm.setup({
-      init_options = { documentFormatting = true },
-      settings = {
-         rootMarkers = {".git/"},
-         languages = {
-            json = {
-               {
-                  formatCommand = "reparojson -q",
-                  formatStdin = true,
-               },
-            },
-         },
-      }
-   })
-
-   vim.api.nvim_create_autocmd('LspAttach', {
-      callback = function(e)
-         vim.api.nvim_create_autocmd('BufWritePre', {
-            buffer = e.buf,
-            callback = function()
-               vim.lsp.buf.format({ async = false })
-            end
-         })
-      end,
-   })
-
+
local lspconfig = require('lspconfig') +
+
lspconfig.efm.setup({ +
init_options = { documentFormatting = true }, +
settings = { +
rootMarkers = {".git/"}, +
languages = { +
json = { +
{ +
formatCommand = "reparojson -q", +
formatStdin = true, +
}, +
}, +
}, +
} +
}) +
+
vim.api.nvim_create_autocmd('LspAttach', { +
callback = function(e) +
vim.api.nvim_create_autocmd('BufWritePre', { +
buffer = e.buf, +
callback = function() +
vim.lsp.buf.format({ async = false }) +
end +
}) +
end, +
})

ほとんどは nvim-lspconfig と efm-langserver を使う際のボイラープレートだが、formatCommand-q フラグを指定していることに注意してほしい。このツールは、デフォルトでは JSON が修正された場合 exit code 1 で終了する。これは、入力が最初から正しかった場合と修正して正しくなった場合を区別するためだが、異常終了してしまうと置き換えが発生しない。そのため、-q フラグを指定して、修正されたときも exit code 0 で終了するようにしている。 @@ -188,31 +186,28 @@ $ echo '{ "foo": 1, "bar": 2, }' | reparojson このツールが威力を発揮するのは、行の入れ換え時である。次のような JSON があり、

-
   {
-      "a": true,
-      "b": false
-   }
-
+
{ +
"a": true, +
"b": false +
}

2行目と3行目を入れ換えて以下のように編集した。

-
   {
-      "b": false
-      "a": true,
-   }
-
+
{ +
"b": false +
"a": true, +
}

これは不正な JSON だが、このツールを通せば次のようになる。

-
   {
-      "b": false,
-      "a": true
-   }
-
+
{ +
"b": false, +
"a": true +
}

もちろん、このような操作を文法を壊さずにおこなう Vim プラグインは存在する。しかし、単なる行の入れ換えであれば ddp の3ストロークでおこなうことができ、専用のキーバインドを覚える必要もない。このツールを用いることで、より Vimmer-friendly な JSON 編集が可能となる。 -- cgit v1.3-1-g0d28