ToolDeck

TOML

2 ابزار

ابزارهای TOML در ToolDeck به شما امکان می‌دهند فایل‌های پیکربندی TOML را مستقیماً در مرورگر خود فرمت‌بندی، اعتبارسنجی و تبدیل کنید — بدون نصب، بدون حساب کاربری، و بدون ارسال هیچ داده‌ای به هیچ سروری. TOML Formatter ورودی TOML شما را تجزیه کرده و با تورفتگی یکنواخت، مرتب‌سازی استاندارد کلیدها و خطاهای اعتبارسنجی درون‌خطی که مشکلات نحوی را دقیقاً مشخص می‌کند، دوباره سریال‌سازی می‌کند. TOML to JSON Converter اسناد TOML را به معادل‌های JSON تبدیل می‌کند و انواع داده از جمله datetime، جداول درون‌خطی و آرایه‌ای از جداول را حفظ می‌کند. هر دو ابزار کاملاً در سمت کلاینت اجرا می‌شوند، بنابراین فایل‌های پیکربندی شما — که اغلب حاوی اعتبارنامه‌های پایگاه داده، آدرس‌های API و رمزهای استقرار هستند — روی دستگاه شما باقی می‌مانند. اگر به تبدیل معکوس نیاز دارید، JSON to TOML Converter در دسته JSON آن تبدیل را انجام می‌دهد.

ابزارهای TOML چیستند؟

TOML (مخفف Tom's Obvious, Minimal Language) یک قالب فایل پیکربندی است که بر پایه نحو صریح و بدون ابهام ساخته شده است. این قالب توسط Tom Preston-Werner، یکی از بنیان‌گذاران GitHub، ایجاد شد، در سال ۲۰۱۳ اولین بار منتشر شد و در ژانویه ۲۰۲۱ به مشخصات نسخه ۱.۰ رسید. این قالب مستقیماً به یک جدول هش نگاشت می‌شود: هر فایل TOML یک درخت از جفت‌های کلید-مقدار تعریف می‌کند که در جداول (بخش‌هایی که با [brackets] مشخص می‌شوند) سازماندهی شده‌اند. برخلاف YAML، TOML برای ساختار به تورفتگی متکی نیست، که این امر یک دسته کامل از اشکالات تجزیه مرتبط با فضای خالی را از بین می‌برد. برخلاف JSON، TOML از نظرات، انواع بومی تاریخ/زمان و رشته‌های چند خطی پشتیبانی می‌کند — ویژگی‌هایی که فایل‌های پیکربندی به آن‌ها نیاز دارند اما JSON هرگز برای ارائه آن‌ها طراحی نشده بود.

ابزارهای TOML خواندن، اعتبارسنجی و تبدیل فایل‌های TOML را خودکار می‌کنند. ابزارهای فرمت‌بندی، تورفتگی و مرتب‌سازی کلیدها را استاندارد می‌کنند تا فایل‌های پیکربندی در میان یک تیم خوانا بمانند، حتی زمانی که چندین مشارکت‌کننده همان فایل را ویرایش می‌کنند. ابزارهای تبدیل بین TOML و JSON ترجمه می‌کنند، که زمانی مفید است که یک کتابخانه یا API ورودی JSON انتظار دارد اما منبع اصلی شما یک پیکربندی TOML است. اعتبارسنجی خطاهای نحوی را می‌گیرد — یک براکت بسته از دست رفته، یک کلید تکراری، یا یک مقدار datetime نامعتبر — قبل از اینکه در هنگام راه‌اندازی برنامه باعث شکست شوند.

این وظایف در پروژه‌های Rust (که Cargo.toml مانیفست بسته است)، بسته‌بندی Python (که pyproject.toml جایگزین setup.py به عنوان پیکربندی استاندارد ساخت در PEP 518 و PEP 621 شده است)، سایت‌های استاتیک Hugo (که به‌طور پیش‌فرض از TOML برای پیکربندی سایت استفاده می‌کنند) و هر راه‌اندازی زیرساخت که پیکربندی را در فایل‌های TOML ذخیره می‌کند، به‌طور مکرر پیش می‌آیند. مشخصات TOML در toml.io نگهداری می‌شود و تجزیه‌کننده‌ها برای هر زبان برنامه‌نویسی اصلی وجود دارند.

چرا از ابزارهای TOML در ToolDeck استفاده کنیم؟

ابزارهای TOML در ToolDeck همه چیز را درون تب مرورگر شما با استفاده از JavaScript تجزیه و پردازش می‌کنند. هیچ داده پیکربندی‌ای به سرور منتقل نمی‌شود، نیازی به حساب کاربری نیست و ابزارها پس از بارگذاری اولیه صفحه به‌صورت آفلاین نیز کار می‌کنند.

🔒
حریم خصوصی به‌صورت پیش‌فرض
فایل‌های پیکربندی اغلب حاوی مقادیر حساس هستند — URL های پایگاه داده، کلیدهای API، اهداف استقرار. ToolDeck پردازش TOML را کاملاً در سمت کلاینت انجام می‌دهد، پس هیچ چیزی مرورگر شما را ترک نمی‌کند. برای پروژه‌های اختصاصی و پیکربندی‌های زیرساخت داخلی ایمن است.
بازخورد آنی
TOML را بچسبانید، فوراً خروجی فرمت‌بندی‌شده یا JSON را ببینید. خطاهای نحوی با شماره خط و توضیحات گزارش می‌شوند. نیازی به انتظار برای نصب یک ابزار CLI یا تکمیل یک مرحله ساخت نیست.
🔄
تبدیل دقیق انواع داده
مبدل TOML به JSON انواع خاص TOML مانند datetime با افست، تاریخ محلی و زمان محلی را به عنوان رشته‌های ISO 8601 حفظ می‌کند. دقت اعداد صحیح و اعشاری حفظ می‌شود. آرایه‌ای از جداول به درستی به آرایه‌های JSON از اشیاء نگاشت می‌شوند.
🌐
بدون نیاز به نصب
روی هر دستگاهی با یک مرورگر مدرن کار می‌کند. زمانی مفید است که در حال بررسی یک pull request روی دستگاهی هستید که محیط توسعه معمول شما را ندارد، یا زمانی که باید فایل TOML یک همکار را سریعاً اعتبارسنجی کنید.

موارد استفاده ابزارهای TOML

فرمت‌بندی، اعتبارسنجی و تبدیل TOML در نقش‌ها و انواع پروژه‌های مختلف پیش می‌آید. توسعه‌دهندگان Rust روزانه با Cargo.toml کار می‌کنند. توسعه‌دهندگان Python ساخت و ابزارها را از طریق pyproject.toml پیکربندی می‌کنند. مهندسان DevOps پیکربندی برنامه‌هایی را مدیریت می‌کنند که به‌صورت TOML ارسال می‌شوند. وظایف زیر نشان می‌دهد که ابزارهای TOML مبتنی بر مرورگر در مقایسه با نوشتن یک اسکریپت یک‌بار مصرف یا نصب یک ابزار CLI چه زمانی صرفه‌جویی می‌کنند.

پاک‌سازی Cargo.toml
پس از ادغام چندین افزودن وابستگی، فایل Cargo.toml یک پروژه Rust فرمت‌بندی ناسازگاری دارد. آن را از طریق TOML Formatter اجرا کنید تا قبل از commit، تورفتگی و ترتیب کلید استاندارد شود.
pyproject.toml به JSON
یک خط لوله CI به متادیتای ساخت در قالب JSON نیاز دارد، اما منبع اصلی pyproject.toml است. از TOML to JSON Converter برای تولید نمایش JSON استفاده کنید و نگاشت را قبل از اسکریپت‌نویسی تبدیل در خط لوله خود تأیید کنید.
مهاجرت پیکربندی
انتقال یک برنامه از پیکربندی مبتنی بر JSON به TOML (یا برعکس). TOML to JSON Converter به شما امکان می‌دهد دو نمایش را کنار هم مقایسه کنید تا تأیید کنید که انواع داده، ساختارهای تو در تو و معناشناسی آرایه حفظ شده‌اند.
رفع اشکال نحوی
یک فایل پیکربندی TOML در هنگام راه‌اندازی برنامه با یک پیام خطای مبهم تجزیه نمی‌شود. آن را در TOML Formatter بچسبانید تا شماره‌های خط و ستون دقیق برای خطای نحوی دریافت کنید، به علاوه توضیحی از آنچه تجزیه‌کننده انتظار داشت.
تولید مستندات
نوشتن مستنداتی که شامل مثال‌های پیکربندی در هر دو قالب TOML و JSON است. مثال TOML معیار را از طریق TOML to JSON Converter تبدیل کنید تا هر دو نسخه بدون رونویسی دستی همگام بمانند.
یادگیری نحو TOML
توسعه‌دهندگانی که با TOML آشنا نیستند می‌توانند با نوشتن TOML در TOML Formatter، مشاهده خطاهای اعتبارسنجی در زمان واقعی و مقایسه ساختار با خروجی فرمت‌بندی‌شده، با قالب آشنا شوند. این روش از خواندن مشخصات به تنهایی سریع‌تر است.

مرجع انواع داده TOML

TOML نسخه ۱.۰ انواع داده زیر را تعریف می‌کند. هر نوع هنگام تبدیل به JSON به یک نمایش خاص نگاشت می‌شود. جدول زیر نحو، مثال‌ها و رفتار تبدیل را برای هر نوع TOML پوشش می‌دهد.

نوعنحومثالنگاشت JSON
رشته"..." یا '...'name = "TOML"رشته JSON. رشته‌های پایه از دنباله‌های escape پشتیبانی می‌کنند (\n، \t، \u). رشته‌های تحت‌اللفظی ('...') بک‌اسلش را به عنوان کاراکتر تحت‌اللفظی در نظر می‌گیرند.
عدد صحیحارقام، 0x، 0o، 0bport = 8080عدد JSON. از هگزادسیمال (0xDEAD)، اکتال (0o755)، باینری (0b1010) و جداکننده‌های زیرخط (1_000) پشتیبانی می‌کند.
عدد اعشاریارقام با . یا epi = 3.14159عدد JSON. از inf، -inf و nan پشتیبانی می‌کند (در JSON به null یا رشته نگاشت می‌شود، چون JSON NaN ندارد).
بولیtrue / falseenabled = trueبولی JSON. فقط true و false با حروف کوچک معتبر هستند.
تاریخ-زمان با افستRFC 33392024-01-15T09:30:00Zرشته JSON (ISO 8601). شامل افست منطقه زمانی. هیچ نوع datetime بومی در JSON وجود ندارد.
تاریخ-زمان محلیdate T time2024-01-15T09:30:00رشته JSON. بدون اطلاعات منطقه زمانی. برای زمان‌های ساعت دیواری مفید است.
تاریخ محلیYYYY-MM-DD2024-01-15رشته JSON. تاریخ بدون مؤلفه زمان.
زمان محلیHH:MM:SS09:30:00رشته JSON. زمان بدون تاریخ یا منطقه زمانی.
آرایه[value, ...]ports = [8080, 8443]آرایه JSON. آرایه‌های TOML در نسخه ۱.۰ می‌توانند ناهمگن باشند اما در نسخه ۰.۵ باید همگن باشند.
جدولtomlCategoryContent.r10Syntax[database]شیء JSON. جداول استاندارد از [brackets] استفاده می‌کنند. جداول درون‌خطی از آکولاد در یک خط واحد استفاده می‌کنند.

مشخصات TOML نسخه ۱.۰.۰ (toml.io) نسخه پایدار فعلی است. آرایه‌ای از جداول از [[double brackets]] برای تعریف ورودی‌های جدول تکراری استفاده می‌کنند که به آرایه‌های JSON از اشیاء نگاشت می‌شوند.

چگونه ابزار TOML مناسب را انتخاب کنیم

ToolDeck سه ابزار دارد که با فایل‌های TOML کار می‌کنند. دو ابزار در دسته TOML هستند و یکی در دسته JSON برای جهت تبدیل معکوس قرار دارد. ابزاری را انتخاب کنید که با وظیفه شما مطابقت دارد.

  1. 1
    اگر نیاز دارید یک فایل TOML را مجدداً تورفتگی دهید، ترتیب کلید را استاندارد کنید، یا نحو TOML را با گزارش خطا در سطح خط اعتبارسنجی کنیدTOML Formatter
  2. 2
    اگر نیاز دارید یک فایل پیکربندی TOML را به JSON تبدیل کنید تا در APIها، اسکریپت‌ها یا ابزارهایی که ورودی JSON انتظار دارند استفاده شودTOML to JSON Converter
  3. 3
    اگر نیاز دارید یک سند JSON را به قالب TOML تبدیل کنید برای پروژه‌هایی که از TOML به عنوان استاندارد پیکربندی خود استفاده می‌کنندJSON to TOML Converter

برای کار روزمره با TOML، TOML Formatter فرمت‌بندی و اعتبارسنجی را در یک مرحله انجام می‌دهد — TOML خود را بچسبانید و یا خروجی تمیز دریافت می‌کنید یا دقیقاً می‌فهمید خطای نحوی کجاست. وقتی نیاز دارید TOML و JSON را به هم متصل کنید، TOML to JSON Converter تمام انواع داده TOML از جمله datetime و جداول تو در تو را حفظ می‌کند. برای جهت معکوس (JSON به TOML)، از JSON to TOML Converter در دسته JSON استفاده کنید. اگر در حال رفع اشکال یک پیکربندی هستید که تجزیه نمی‌شود، با TOML Formatter شروع کنید: پیام‌های خطای آن شامل شماره‌های خط و توضیحات توکن مورد انتظار هستند که از آنچه اکثر تجزیه‌کننده‌های TOML در سطح برنامه گزارش می‌دهند دقیق‌تر است.

سؤالات متداول

تفاوت بین TOML و YAML چیست؟
TOML از نحو براکت صریح برای جداول استفاده می‌کند و برای ساختار به تورفتگی متکی نیست. YAML برای تعریف سلسله مراتب از تورفتگی استفاده می‌کند، که آن را نسبت به خطاهای فضای خالی حساس می‌کند — یک فاصله اشتباه می‌تواند ساختار تجزیه‌شده را کاملاً تغییر دهد. TOML همچنین دارای انواع بومی تاریخ/زمان است و کلیدهای تکراری را ممنوع می‌کند، در حالی که YAML بدون هیچ هشداری آخرین مقدار را هنگامی که یک کلید دو بار ظاهر می‌شود استفاده می‌کند. TOML معمولاً برای پیکربندی برنامه ترجیح داده می‌شود، در حالی که YAML در منیفست‌های Kubernetes و تعریف‌های خط لوله CI/CD که پشتیبانی چند سند و لنگرها/نام‌مستعار آن مفید است رایج‌تر است.
تفاوت بین TOML و JSON چیست؟
JSON یک قالب تبادل داده است که برای ارتباط ماشین به ماشین طراحی شده. TOML یک قالب پیکربندی است که برای خواندن و ویرایش توسط انسان طراحی شده. TOML از نظرات (خطوطی که با # شروع می‌شوند)، انواع بومی datetime، رشته‌های چند خطی و جداولی که عمق تو در تو را کاهش می‌دهند پشتیبانی می‌کند. JSON از نظرات پشتیبانی نمی‌کند، هیچ نوع تاریخی ندارد و به تو در تو کردن صریح با آکولاد نیاز دارد. JSON انتخاب مناسب برای بارهای API و ذخیره داده است؛ TOML انتخاب مناسب برای فایل‌های پیکربندی است که انسان‌ها به‌صورت دستی ویرایش می‌کنند.
آیا TOML می‌تواند همه ساختارهای داده JSON را نمایش دهد؟
TOML می‌تواند اکثر ساختارهای JSON را نمایش دهد، اما موارد حاشیه‌ای وجود دارند. TOML از مقادیر null پشتیبانی نمی‌کند — هیچ معادل TOML برای null در JSON وجود ندارد. کلیدهای TOML باید رشته باشند، که با کلیدهای اشیاء JSON مطابقت دارد. آرایه‌های TOML در نسخه ۰.۵ به انواع همگن محدود بودند، اما TOML نسخه ۱.۰ آرایه‌های با انواع مختلط را مجاز می‌داند. اشیاء JSON به شدت تو در تو ممکن است در TOML طولانی شوند زیرا هر سطح تو در تو نیاز به یک هدر جدول جداگانه دارد.
کدام پروژه‌ها از TOML برای پیکربندی استفاده می‌کنند؟
سیستم ساخت Cargo در Rust از Cargo.toml به عنوان مانیفست بسته استفاده می‌کند. Python از pyproject.toml به عنوان فایل استاندارد پیکربندی ساخت از طریق PEP 518 (2016) و PEP 621 (2020) اتخاذ کرد. Hugo، مولد سایت استاتیک، به‌طور پیش‌فرض از TOML برای پیکربندی سایت استفاده می‌کند. InfluxDB از TOML برای پیکربندی سرور خود استفاده می‌کند. سیستم ماژول Go TOML را در نظر گرفت اما قالب خودش را انتخاب کرد؛ با این حال، بسیاری از پروژه‌های Go هنوز از TOML برای پیکربندی در سطح برنامه از طریق کتابخانه‌هایی مثل BurntSushi/toml و pelletier/go-toml استفاده می‌کنند.
TOML چطور با نظرات برخورد می‌کند؟
TOML از نظرات کامل خط و نظرات پایان خط با استفاده از کاراکتر # پشتیبانی می‌کند. همه چیز از # تا پایان خط توسط تجزیه‌کننده نادیده گرفته می‌شود. نظرات نمی‌توانند داخل رشته‌های پایه چند خطی یا رشته‌های تحت‌اللفظی چند خطی ظاهر شوند. هنگام تبدیل TOML به JSON، نظرات حذف می‌شوند زیرا JSON هیچ نحو نظری ندارد. این به این معناست که یک رفت و برگشت از TOML به JSON و برگشت به TOML تمام نظرات از فایل اصلی را از دست می‌دهد.
آرایه‌ای از جداول در TOML چیست؟
آرایه‌ای از جداول از نحو [[double bracket]] برای تعریف ورودی‌های تکراری از همان ساختار جدول استفاده می‌کنند. به عنوان مثال، [[servers]] که دو بار ظاهر می‌شود یک آرایه با دو شیء سرور ایجاد می‌کند. در JSON، این به یک آرایه از اشیاء نگاشت می‌شود. آرایه‌ای از جداول معمولاً برای فهرست وابستگی‌ها، تعاریف سرور یا پیکربندی‌های افزونه استفاده می‌شوند که هر ورودی همان مجموعه کلیدها را دارد.
آیا TOML به فضای خالی حساس است؟
TOML به تورفتگی حساس نیست. تورفتگی صرفاً آرایشی است و تأثیری بر تجزیه ندارد. با این حال، TOML برای جداسازی جفت‌های کلید-مقدار به خط جدید نیاز دارد — نمی‌توانید دو جفت کلید-مقدار را در همان خط قرار دهید (به جز داخل جداول درون‌خطی). جداول درون‌خطی باید در یک خط واحد جا بشوند و نمی‌توانند حاوی خط جدید باشند. این طراحی از اشکالات مبتنی بر تورفتگی که در فایل‌های YAML رایج هستند جلوگیری می‌کند.
هنگام تبدیل به JSON چه اتفاقی برای مقادیر datetime در TOML می‌افتد؟
JSON هیچ نوع datetime بومی ندارد، بنابراین datetime های TOML به رشته‌های ISO 8601 تبدیل می‌شوند. datetime های با افست (مثل 2024-01-15T09:30:00Z) افست منطقه زمانی خود را در نمایش رشته حفظ می‌کنند. datetime های محلی، تاریخ‌های محلی و زمان‌های محلی هر کدام بدون اطلاعات منطقه زمانی به عنوان رشته سریال‌سازی می‌شوند. تبدیل به این معنا بدون اتلاف است که مقدار اصلی می‌تواند از رشته دوباره تجزیه شود، اما مصرف‌کننده JSON باید بداند که این رشته‌ها را به عنوان تاریخ و نه متن دلخواه در نظر بگیرد.