RINK-DEFS(5) Rink Manual RINK-DEFS(5)

rink-defs - قالب `definition.units` در ابزار Rink

پایگاه‌داده واحدها یک سند متنی حاوی تعاریف واحدها، پیشوندها، واحدهای پایه، کمیت‌ها و مواد است.

توضیحات (کامنت‌ها) با # شروع شده و تا پایان خط ادامه می‌یابند. خطوط خالی نادیده گرفته می‌شوند. کامنت‌ها را می‌توان در همان خط واحدها و در انتهای آن قرار داد.

# This line is a comment
# And so is this

واحدها با نام و تعریفشان که با فاصله (whitespace) از هم جدا شده‌اند، تعریف می‌شوند. در صورت نیاز می‌توان یک تعریف را با استفاده از \ در چندین خط شکست.

foot                    12 inch

کامنت‌های مستندسازی خطوطی هستند که با ?? شروع می‌شوند. آن‌ها روی تعریف بعدی که پس از آن‌ها می‌آید اعمال می‌شوند و زمانی که در Rink یک تعریف را استعلام می‌کنید، به کاربران نهایی نمایش داده می‌شوند.

?? International yard and pound, since July 1, 1959.
?? Documentation comments can be broken over
?? multiple lines.
foot                    12 inch

مواد می‌توانند نمایانگر یک جرم یا جسم مشخص (مانند زمین یا خورشید)، ماده‌ای مانند آب یا بتن، یک مولکول شیمیایی، عنصری از جدول تناوبی، یا یک ذره بنیادی باشند.

یک ماده دارای نام، یک نماد اختیاری (مورد استفاده در فرمول‌های شیمیایی)، و حاوی فهرستی از ویژگی‌ها درون یک بلوک {} است.

ویژگی‌ها می‌توانند ثابت (“const”) باشند که عمدتاً برای اشیاء شمارش‌پذیر مانند ذرات استفاده می‌شود، یا می‌توانند یک نسبت باشند، مانند چگالی یک ماده.

neutron {
    mass                const neutron_mass          1.00866491588 u
    wavelength          const neutron_wavelength    planck_constant / mass c
    magnetic_moment     const neutron_moment        -0.96623650e-26 J/T
}

دو حالت ساختاری برای ویژگی‌ها عبارتند از:

[name] const [output name] [expression]
[name] [input name] [input expression] / [output name] [output expression]

نام ورودی و نام خروجی ممکن است گیج‌کننده به نظر برسد. ایده این است که ویژگی‌های وابسته به زمینه بتوانند از نسبت‌هایی مانند چگالی محاسبه شوند؛ برای نمونه، mass of 1ml water (جرم ۱ میلی‌لیتر آب). برای کارکرد این قابلیت، density (جرم تقسیم بر حجم) با ۳ نام تعریف می‌شود: density (خود نسبت)، mass (جرم)، و volume (حجم).

density mass 1g / volume cm^3

این تبدیل‌ها در جهت عکس نیز کار می‌کنند: volume of 1g water (حجم ۱ گرم آب).

واحدهای درون یک دسته، در رابط کاربری هنگام جستجو و سایر عملیات با یکدیگر گروه‌بندی می‌شوند. یک دسته با استفاده از عملگر !category آغاز می‌شود که یک شناسه (lower_snake_case) و یک نام نمایشی به صورت رشته متنی دریافت می‌کند.

!category us_survey "US survey measures"

واحدهای پایه را نمی‌توان بر حسب واحدی دیگر بدون ایجاد یک چرخه تعریف کرد. آن‌ها نمایانگر کمیت‌های فیزیکی بنیادین مانند زمان، طول، دما و غیره هستند.

نام یک فرم کوتاه است که هنگام نمایش ابعاد استفاده می‌شود (برای نمونه، بعد acceleration برابر است با m / s^2)، در حالی که شکل بلند برای اهداف نمایشی به کار می‌رود.

واحدهای پایه جدید فقط زمانی باید اضافه شوند که ارزش روشنی برای این کار وجود داشته باشد؛ مانند رادیان و بیت.

?? Equal to the mass of the international prototype of the
?? kilogram. 3rd CGPM (1901, CR, 70).
kg        !kilogram

کمیت‌ها هر زمان که rink یک واحد را نمایش می‌دهد درون پرانتز نشان داده می‌شوند. آن‌ها برای تحلیل ابعادی بسیار مفید هستند، زیرا به خاطر سپردن اینکه kg m^2 / s^2 به معنای کمیت فیزیکی انرژی است می‌تواند دشوار باشد.

کمیت‌ها مشابه واحدها تعریف می‌شوند، اما تعریف آن‌ها با نویسه ? شروع می‌شود. کمیت‌ها در فضانامی جداگانه از واحدها قرار دارند، بنابراین تنها نام‌های معتبری که می‌توان استفاده کرد واحدهای پایه و سایر کمیت‌ها هستند.

برخلاف واحدها، کمیت‌ها فاقد مقدار عددی هستند (حتی مقداری مانند ۱ مانند واحدهای مشتق SI ندارند).

length                  ? meter
area                    ? length^2

پیشوندها امکان ورود واحدهایی مانند gigabytes، megameters، kiloseconds را بدون نیاز به تعریف صریح تک‌تک آن‌ها در پایگاه‌داده واحدها فراهم می‌کنند. پیشوندها همیشه بدون بعد هستند.

این موارد نباید به صورت مکرر اضافه شوند، بلکه فقط زمانی که مربوط به یک سامانه شمارش خاص باشند؛ مانند پیشوندهای بایت در مبنای دو (MiB، GiB و غیره) و پیشوندهای دوازده‌تایی (Dozenal).

پیشوندها به دو دسته پیشوندهای “بلند” و پیشوندهای “کوتاه” تقسیم می‌شوند. پیشوندهای کوتاه معمولاً باید تنها ۱ حرف باشند و به طور معمول نام مستعار پیشوند بلند متناظر خود هستند.

پیشوندها مشابه سایر واحدها تعریف می‌شوند، اما نام آن‌ها با پسوند - (پیشوندهای بلند) یا -- (پیشوندهای کوتاه) خاتمه می‌یابد.

پیشوندها از فضانام اختصاصی خود استفاده می‌کنند. تعاریف آن‌ها فقط می‌تواند به پیشوندهای دیگر ارجاع دهد و نه به واحدها.

kilo-                   1e3
k--                     kilo

یک عملگر خاص به نام !dependency وجود دارد که در currency.units برای اعلام وابستگی به داده‌های زنده نرخ ارز استفاده می‌شود. این عملگر را می‌توان هنگام افزودن ارز جدید یا منبع داده با به‌روزرسانی زنده به کار برد.

این رهنمودها عمدتاً هنگام مشارکت در فایل بالادستی definitions.units اعمال می‌شوند.

پایگاه‌داده واحدها برای خوانایی بهتر باید طوری تنظیم شود که درون ۸۰ ستون جا بگیرد. به‌طور مشابه، تعاریف واحدها معمولاً باید به صورت عمودی با استفاده از فاصله‌ها تراز شوند.

تعاریف معمولاً به میزان ۲۰ ستون، و گاهی ۲۵ ستون تورفتگی دارند. نکته مهم تراز بودن واحدهای مجاور است. فایل تعاریف برای تورفتگی از فاصله استفاده می‌کند، بنابراین به جای ترکیب آنها، یکدستی را حفظ کنید.

واحدهایی که معنا و مبدا آنها از تعریفشان آشکار نیست باید کامنت مستندسازی داشته باشند. این کامنت می‌تواند معنای واحد، حاشیه خطا (در صورت وجود)، و همچنین منبعی برای مقدار آن را توضیح دهد.

اگر روش‌های متعددی برای تفسیر نحوه تعریف یک واحد وجود دارد، ذکر کنید که کدام تفسیر استفاده شده است، مگر اینکه از نام آن استنباط شود (مانند siderealyear). نمونه‌هایی که واحدها تعابیر متعددی دارند عبارتند از:

•واحدهای سنتی و عرفی ممکن است بر پایه کشور متفاوت باشند و حتی بسته به سال در آن کشور تغییر کنند؛ مانند تعاریف آمریکایی، بریتانیایی، استرالیایی و بین‌المللی برای فوت (foot).
•واحدهایی که ذاتاً مبهم هستند یا منابع متعددی را نشان می‌دهند؛ شامل روزها (تقویمی، نجومی)، سال‌ها (تقویمی، نجومی، مداری) و موارد دیگر.

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

پیوندهای خارجی باید بخش پروتکل (https://، http://) را شامل شوند و درون علامت‌های قلاب احاطه گردند، مانند https://example.com.

تاریخ‌ها باید به قالب کامل مانند July 5th, 1982 نوشته شوند. از قالب‌های مبهم مانند 2/3/99 استفاده نکنید؛ ذکر سال به‌تنهایی اغلب کافی است.

کامنت‌های درون فایل تعاریف به منظور بهره‌مندی سایر نگه‌دارندگان نوشته می‌شوند. آن‌ها می‌توانند شامل توضیحاتی درباره چرایی تعریف یک واحد به شیوه‌ای خاص باشند یا مشخص کنند که واحدهایی معین بخشی از یک گروه یا مجموعه هستند.

تمامی واحدها باید درون یک بلوک !category / !endcategory قرار گیرند. بلوک‌های دسته‌بندی باید کامنت‌های مربوط به آن دسته را نیز در بر گیرند، و عملگر !category باید بلافاصله پس از !endcategory دسته پیشین بیاید. این امر برای مرور آسان فایل با استفاده از تاخوردگی‌های Vim (Vim folds) است. نام نمایشی دسته باید در قالب حروف بزرگ جمله (sentence case) بوده و با ستون ۷۰‌ام تراز شود.

نام‌های انگلیسی باید با حروف کوچک و بدون جداکننده باشند. در صورتی که به وضوح کمک کند، کلمات را می‌توان با زیرخط (underscore) جدا کرد؛ نمونه‌ها شامل foot، olympiccubit، usgallon.

در صورت موجود بودن فرم کوتاه، باید به عنوان نام مستعار برای نام طولانی‌تر اضافه شود؛ مانند ft برای foot، B برای byte، و Ω برای ohm.

ft                      foot

برخی واحدها معمولاً با خط غیرلاتین نوشته می‌شوند. از نام غیرلاتین به عنوان نام استاندارد (canonical) استفاده کنید و نام مبتنی بر ASCII را به عنوان مستعار اضافه نمایید؛ نمونه‌ها شامل золотник، 分地.

برخی واحدها به طور معمول با یک نماد نوشته می‌شوند. با این موارد مشابه نام‌های با خط غیرلاتین رفتار کنید؛ مانند π (پی)، τ (تاو).

نمادهای قدیمی یونیکد تنها باید به عنوان مستعار برای نام‌های استانداردتر استفاده شوند؛ از جمله نمادهای کم‌کاربرد مانند ㎒ (نماد یونیکد مگاهرتز).

اگر چندین نام برای یک واحد وجود دارد، نامی که متداول‌تر است باید “نام استاندارد” باشد. نسخه استاندارد باید تعریف کامل را داشته باشد و سایر نام‌ها به عنوان مستعارهایی به نسخه استاندارد ارجاع دهند؛ از تکرار تعریف بپرهیزید.

واحدها در صورت امکان باید بر حسب سایر واحدهای مرتبط تعریف شوند. عبارتی که برای تعریف واحد استفاده می‌کنید به کاربر نهایی نمایش داده خواهد شد. برای نمونه، فوت به عنوان 12 inch تعریف می‌شود نه 304.8 mm، زیرا پیشاپیش مدخل جداگانه‌ای برای inch وجود دارد که به عنوان 2.54 mm تعریف شده است. هنگام نمایش تعریف یک واحد، Rink هم تعریف اصلی و هم مقدار مطلق را نشان می‌دهد؛ بنابراین برای foot نشان می‌دهد که به صورت 12 inch تعریف شده که برابر با 304.8 millimeter است.

ابزار Rink می‌تواند اعداد گویای با دقت دلخواه را نشان دهد و تنها محدودیت، حافظه در دسترس است. در نتیجه، اعداد گنگ مانند عدد پی یا ثابت اویلر باید حداقل تا ۲۰ رقم اعشار تعریف شوند.

ثابت‌های جهان‌شمول که به طور تجربی اندازه‌گیری می‌شوند باید تا جای ممکن ارقام بااهمیت شناخته‌شده داشته باشند. برای نمونه، اگر عددی تا ۰٫۰۰۰۰۰۳± شناخته شده باشد، باید تا ۶ رقم بعد از اعشار درج گردد.

بهترین منابع، اسناد استاندارد مانند اسناد منتشرشده توسط CGPM، ISO و NIST هستند.

برگه‌های اطلاعاتی (fact sheets) منتشرشده توسط سازمان‌های معتبر مانند NASA و ESA نیز مناسب هستند.

منابع و پایگاه‌های داده باکیفیت مانند Engineering Toolbox برای مقادیری که به صورت تجربی مشخص شده‌اند خوب هستند.

کتاب‌ها برای واحدهای تاریخی مناسبند، اما بهتر است به مواردی بسنده شود که به صورت آنلاین از طریق سایت‌هایی چون Google Books قابل مشاهده و راستی‌آزمایی باشند.

از ارجاع مستقیم به ویکی‌پدیا در صورت امکان باید خودداری شود؛ در عوض بررسی کنید ویکی‌پدیا به چه منبعی ارجاع داده و از همان منبع استفاده کنید.

ابزار Rink فایل‌های تعاریف را در این مسیرها جستجو می‌کند:

•./definitions.units
•$XDG_CONFIG_DIR/rink/definitions.units
•/usr/share/rink/definitions.units

تمامی فایل‌های یافت‌شده بارگذاری خواهند شد. فایل‌ها می‌توانند به تعاریف یکدیگر ارجاع دهند. از این ویژگی می‌توان برای تعاریف سفارشی ساخته‌شده بر روی پایگاه‌داده پیش‌فرض واحدها استفاده کرد.

هنگامی که دریافت زنده نرخ ارز فعال باشد، Rink همچنین در این مسیرها به دنبال فایل ارزها می‌گردد:

•./currency.units
•$XDG_CONFIG_DIR/rink/currency.units
•/usr/share/rink/currency.units

پایگاه‌داده واحدهای Rink در اصل بر پایه GNU Units بود و بخش عمده‌ای از نحو خود را از آن به ارث برده است.

تفاوت‌های عمده عبارتند از:

•حذف عملگرهای !locale، !set، !utf8 و سایر دستوراتی که توسط Rink استفاده نمی‌شوند.
•افزودن !category و !endcategory.
•افزودن کامنت‌های مستندسازی که با ?? شروع می‌شوند.
•افزودن مواد (substances).

rink(1), rink(5), rink(7), rink-dates(5)

2026-08-30 Rink Manual