ctags-json-output(5) Universal Ctags ctags-json-output(5)

ctags-json-output - خروجی ctags بر پایه قالب JSON

ctags --output-format=json ...

ابزار Universal Ctags از قالب خروجی JSON https://www.json.org (به طور دقیق‌تر JSON Lines https://jsonlines.org) در صورتی که فایل اجرایی ctags با libjansson کامپایل شده باشد پشتیبانی می‌کند. خروجی JSON به طور پیش‌فرض به خروجی استاندارد ارسال می‌شود.

هر سطر JSON نمایانگر یک برچسب (tag) است.

$ ctags --extras=+p --output-format=json --fields=-s input.py
{"_type": "ptag", "name": "JSON_OUTPUT_VERSION", "path": "1.0", "pattern": "in development"}
{"_type": "ptag", "name": "TAG_FILE_SORTED", "path": "1", "pattern": "0=unsorted, 1=sorted, 2=foldcase"}
...
{"_type": "tag", "name": "Klass", "path": "/tmp/input.py", "pattern": "/^class Klass:$/", "language": "Python", "kind": "class"}
{"_type": "tag", "name": "method", "path": "/tmp/input.py", "pattern": "/^    def method(self):$/", "language": "Python", "kind": "member", "scope": "Klass", "scopeKind": "class"}
...

کلیدی که با _ شروع نمی‌شود به یک فیلد از ctags نگاشت می‌شود. گزینه‌های "--output-format=json --list-fields" فهرست این فیلدها را نمایش می‌دهند.

کلیدی که با _ آغاز می‌شود نشان‌دهنده فرا‌داده (متادیتا) مربوط به آن سطر JSON است. در حال حاضر فقط کلید _type استفاده می‌شود. اگر مقدار این کلید tag باشد، سطر JSON نشان‌دهنده یک برچسب معمولی است. اگر مقدار آن ptag باشد، سطر نشان‌دهنده یک شبه‌برچسب (pseudo-tag) است.

قالب خروجی ممکن است در آینده تغییر کند. شبه‌برچسب JSON_OUTPUT_VERSION به ابزارهای کلاینت این امکان را می‌دهد تا تغییرات را مدیریت کنند. نسخه فعلی "1.0" است. یک ابزار کلاینت می‌تواند با استفاده از کلید path، شماره نسخه را از شبه‌برچسب استخراج کند.

قالب خروجی JSON به تازگی طراحی شده و محدودیت‌های موجود در قالب فایل پیش‌فرض برچسب‌ها را ندارد.

  • مقادیر کلید kind در قالب فلگ‌های نام طولانی ارائه می‌شوند و هیچ مقدار تک‌حرفی در اینجا وجود ندارد.
  • نام‌های محدوده (Scope) و انواع محدوده دارای کلیدهای متمایز هستند: scope و scopeKind. این مقادیر در قالب پیش‌فرض فایل tags با یکدیگر ترکیب شده بودند.

مقادیر بیشتر کلیدها در قالب نوع رشته‌ای (string) در JSON نمایش داده می‌شوند. با این حال، برخی از آن‌ها در قالب نوع‌های رشته‌ای، عددی صحیح (integer) یا بولی (boolean) هستند.

گزینه‌های "--output-format=json --list-fields" نشان می‌دهند که چه نوع داده‌ای در فیلدهای JSON به کار رفته است.

$ ctags --output-format=json --list-fields
#LETTER NAME           ENABLED LANGUAGE         JSTYPE FIXED DESCRIPTION
F       input          yes     NONE             s--    no    input file
...
P       pattern        yes     NONE             s-b    no    pattern
...
f       file           yes     NONE             --b    no    File-restricted scoping
...
e       end            no      NONE             -i-    no    end lines of various items
...

ستون JSTYPE نوع داده‌ها را نشان می‌دهد.

's'
رشته (string)
'i'
عدد صحیح (integer)
'b'
بولی (boolean - مقدار true یا false)

به عنوان مثال، مقدار فیلد pattern در ctags یک مقدار رشته‌ای یا بولی می‌گیرد.

•
کلید جدید kindName برای شبه‌برچسب TAG_ROLE_DESCRIPTION

کلید kindName برای ذخیره نام نوع در شبه‌برچسب‌های TAG_ROLE_DESCRIPTION اضافه شده است.

در نسخه 0.0، یک شبه‌برچسب "TAG_ROLE_DESCRIPTION" به این شکل چاپ می‌شد:

{"_type": "ptag", "name": "TAG_ROLE_DESCRIPTION",
                  "parserName": "LANG!KIND", }

در نسخه 1.0، به این شکل چاپ می‌شود:

{"_type": "ptag", "name": "TAG_ROLE_DESCRIPTION",
                  "parserName": "LANG",
                  "kindName": "KIND",  }

ctags(1), tags(5), ctags-client-tools(7)

1.0