From 6dedddc545e2f1930bdc2256784eb1551bd4231d Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 1 Feb 2026 00:49:15 +0900 Subject: feat(nuldoc): rewrite nuldoc in Ruby --- .../reparojson-fix-only-json-formatter/index.html | 105 +++++++++++---------- 1 file changed, 55 insertions(+), 50 deletions(-) (limited to 'services/nuldoc/public/blog/posts/2024-07-19/reparojson-fix-only-json-formatter/index.html') 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 50bbf5ee..bf60bb52 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 @@ -106,17 +106,18 @@ 次のように動作する。

-
$ 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 時点で修正対象の文法エラーは次のとおり: @@ -148,33 +149,34 @@ ここでは、 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 で終了するようにしている。 @@ -186,28 +188,31 @@ このツールが威力を発揮するのは、行の入れ換え時である。次のような 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