sublime插件——json5格式化工具


前言

最近工作中使用 yapi 做接口定義,其中有 json5 格式定義接口參數和返回值的功能,認為特別方便,相對於在界面填寫或 json-schema各字段而言:

  • 能夠完全實現json 定義數據結構並且包含注釋。
  • 在對同一個資源的 CRUD 接口中,能靈活復用已定義結構。

在對 json5 編寫過程中,經常需要格式化(處理縮進等),普通 json 格式化工具(無論網頁版還是 sublime、idea 插件)無法對 json5 標准文檔格式化。

但是,搜遍全網 json5格式化的庫少之又少,並且基本是對 json5格式的字符串格式化為 json,不能保留注釋,不能滿足要求。唯一找到的基本滿足要求的是rust語言實現的json5format,故利用其命令,實現了 sublime 格式化 json5 的插件——json5。

基本思路即為 sublime 插件邏輯作粘合劑,調用 json5format 命令進行格式化並替換原文。

本人非 Python 技術棧,所以,插件編寫基本是用啥查啥,代碼也許不夠優雅,勿噴。

參考

SUBLIME TEXT 3 中文文檔之插件擴展API參考

初識python 文件讀取 保存

「Python」6種python中執行shell命令方法

版本

  • sublime 4(build 4087)
  • macos Big Sur 11.0.1

其他版本可以嘗試,應該沒啥兼容性問題。

正文

Mac安裝 json5format命令

  • clonejson5format 項目
  • 構建可執行程序
  • mv 到 /usr/local/bin/
  • 賦予執行權限
(base)  ~  cd ~/RustProject
(base)  ~/RustProject  git clone https://github.com/google/json5format.git
(base)  ~/RustProject  cd json5format
(base)  ~/RustProject/json5format  cargo build --examples
   Compiling json5format v0.1.4 (/Users/wangbaoshan/RustProject/json5format)
    Finished dev [unoptimized + debuginfo] target(s) in 3.15s
(base)  ~/RustProject/json5format  mv ./target/debug/examples/formatjson5 /usr/local/bin/

sublime安裝 json5 插件

新建用戶自定義插件

保存以下代碼為 json5.py 文件,並放到 /Users/yourusername/Library/Application Support/Sublime Text/Packages/User/ 下:

import sublime
import sublime_plugin
import os

class Json5Command(sublime_plugin.TextCommand):
	def run(self, edit):
		# 獲取全文
		contents = self.view.substr(sublime.Region(0, self.view.size()))
		# 創建中間文件夾
		os.mkdir('/var/tmp/json5/')
		# 創建中間文件並寫入全文
		fw = open('/var/tmp/json5/format.json','w')
		fw.write(contents)
		fw.close()
		# 調用format命令格式化 json5 並且重寫中間文件
		os.system("formatjson5 -r /var/tmp/json5/format.json")
		# 讀取中間文件
		fr = open('/var/tmp/json5/format.json','r')
		formatContents = fr.read()
		# 刪除中間文件
		os.remove('/var/tmp/json5/format.json')
		# 刪除中間文件夾
		os.rmdir('/var/tmp/json5/')
		# 刪除全文
		self.view.erase(edit, sublime.Region(0, self.view.size()))
		# 插入全文
		self.view.insert(edit, 0,  formatContents)

設置快捷鍵

sublime窗口下:首選項-快捷鍵設置

在調出窗口右側文件填寫如下文本(可以設置你自己想要的快捷鍵)保存即可。

[
	{ "keys": ["ctrl+command+5"], "command": "json5" },
]

使用

在正在編輯的tab 下,按ctrl+command+5對正在編輯的 json5 進行格式化,效果如下:

json5

插件邏輯非常簡單,容錯能力非常有限

TODO


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM