کتابخانه‌ی استاندارد · سیستم و ابزار

پیکربندی config

خواندن و نوشتن پرونده‌های تنظیمات INI، env و YAML با کلیدهای نقطه‌دار.

واردسازی پیکربندی
در این صفحه
  1. گونه‌ها
  2. روال‌ها

بسته‌ی پیکربندی تنظیمات را به شکل فهرستی مرتب از کلید و مقدار نگه می‌دارد. کلیدهای بخش‌ها نقطه‌دارند: کلید host در بخش [db] پرونده‌ی INI، یا در YAML زیر db:، می‌شود db.host.

الگوی رایج این است: تنظیمات پیش‌فرض را بخوانید، تنظیمات محیط فعلی را روی آن ادغام کنید و بعد مقدارها را با گونه‌ی درست بگیرید.

گونه‌ها

پیکربندی Config

ساختار پیکربندی
مجموعه‌ای از تنظیمات.
نامانگلیسیگونهتوضیح
mmcollections.OrderedMapنگاشت مرتبی که کلیدها و مقدارها را به ترتیب نگه می‌دارد.
config-Get.salam
واردسازی پیکربندی

روال ریشه:
    ناپایا پ := پیکربندی.جدید()
    دیرکن پیکربندی.آزادسازی(پ)
    پیکربندی.تنظیم(پ، "name"، "سلام")
    پیکربندی.تنظیم(پ، "port"، "8080")
    پیکربندی.تنظیم(پ، "debug"، "yes")
    پیکربندی.تنظیم(پ، "ratio"، "0.5")
    سرچاپ پیکربندی.طول(پ)، پیکربندی.دارد(پ، "port")، پیکربندی.دریافت(پ، "name")
    سرچاپ پیکربندی.دریافت صحیح(پ، "port"، ۸۰)، پیکربندی.دریافت اعشاری(پ، "ratio"، ۱.۰)، پیکربندی.دریافت منطقی(پ، "debug"، نادرست)
    سرچاپ پیکربندی.دریافت با پیش فرض(پ، "host"، "localhost")
    سرچاپ پیکربندی.حذف(پ، "ratio")، پیکربندی.کلیدها(پ)
پایان
خروجی4 true سلام 8080 0.5 true localhost true ["name", "port", "debug"]

روال‌ها

جدید New

روال جدید(): پیکربندی
تنظیمات خالی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-Get.salam

طول Len

روال طول(c &: پیکربندی): صحیح
تعداد کلیدها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-Get.salam

دارد Has

روال دارد(c &: پیکربندی، key: رشته): منطقی
اگر کلید باشد، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-Get.salam

تنظیم Set

روال تنظیم(c &: پیکربندی، key: رشته، val: رشته)
مقدار کلید را می‌گذارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-Get.salam

دریافت Get

روال دریافت(c &: پیکربندی، key: رشته): رشته
مقدار کلید، یا رشته‌ی تهی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-Get.salam

دریافت با پیش فرض GetOr

روال دریافت با پیش فرض(c &: پیکربندی، key: رشته، def: رشته): رشته
مقدار کلید، یا مقدار پیش‌فرض.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-Get.salam

دریافت صحیح GetInt

روال دریافت صحیح(c &: پیکربندی، key: رشته، def: صحیح۶۴): صحیح۶۴
مقدار کلید به شکل عدد صحیح، یا پیش‌فرض.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-Get.salam

دریافت اعشاری GetFloat

روال دریافت اعشاری(c &: پیکربندی، key: رشته، def: اعشار۶۴): اعشار۶۴
مقدار کلید به شکل اعشاری، یا پیش‌فرض.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-Get.salam

دریافت منطقی GetBool

روال دریافت منطقی(c &: پیکربندی، key: رشته، def: منطقی): منطقی
مقدار کلید به شکل منطقی؛ true، 1 و yes درست‌اند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-Get.salam

حذف Remove

روال حذف(c &: پیکربندی، key: رشته): منطقی
کلید را حذف می‌کند؛ اگر نبود، نادرست.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-Get.salam

کلیدها Keys

روال کلیدها(c &: پیکربندی): وکتور<رشته>
همه‌ی کلیدها به ترتیب.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-Get.salam

بخش Section

روال بخش(c &: پیکربندی، name: رشته): پیکربندی
تنظیمات یک بخش را، با کلیدهای بدون پیشوند بخش، جدا برمی‌گرداند.
config-ParseINI.salam
واردسازی پیکربندی
واردسازی ورودی خروجی

روال ریشه:
    متن := "name = سلام\n\n[db]\nhost = localhost\nport = 5432\n"
    ناپایا پ := پیکربندی.تجزیه آی ان آی(متن)
    دیرکن پیکربندی.آزادسازی(پ)
    سرچاپ پیکربندی.کلیدها(پ)
    ناپایا ب := پیکربندی.بخش(پ، "db")
    دیرکن پیکربندی.آزادسازی(ب)
    سرچاپ پیکربندی.دریافت(ب، "port")
    چاپ پیکربندی.قالب آی ان آی(ب)
    ورودی خروجی.نوشتن پرونده("app.ini"، متن)
    ناپایا خوانده := پیکربندی.بارگذاری آی ان آی("app.ini")
    دیرکن پیکربندی.آزادسازی(خوانده)
    سرچاپ پیکربندی.دریافت(خوانده، "db.host")
پایان
خروجی["name", "db.host", "db.port"] 5432 host = localhost port = 5432 localhost

ادغام Merge

روال ادغام(base &: پیکربندی، override &: پیکربندی): پیکربندی
تنظیمات تازه‌ای می‌سازد که کلیدهای override روی base نشسته‌اند.
config-ParseEnv.salam
واردسازی پیکربندی
واردسازی ورودی خروجی

روال ریشه:
    ناپایا پایه := پیکربندی.تجزیه محیط("MODE=dev\nPORT=3000\n")
    ناپایا رو := پیکربندی.تجزیه محیط("PORT=80\nLOG=info\n")
    دیرکن پیکربندی.آزادسازی(پایه)
    دیرکن پیکربندی.آزادسازی(رو)
    ناپایا ادغام := پیکربندی.ادغام(پایه، رو)
    دیرکن پیکربندی.آزادسازی(ادغام)
    چاپ پیکربندی.قالب محیط(ادغام)
    چاپ پیکربندی.قالب محیط صادراتی(رو)
    ورودی خروجی.نوشتن پرونده(".env"، "TOKEN=abc\n")
    ناپایا ف := پیکربندی.بارگذاری محیط(".env")
    دیرکن پیکربندی.آزادسازی(ف)
    سرچاپ پیکربندی.دریافت(ف، "TOKEN")
پایان
خروجیMODE=dev PORT=80 LOG=info export PORT=80 export LOG=info abc

آزادسازی Free

روال آزادسازی(c &: پیکربندی)
حافظه‌ی تنظیمات را آزاد می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-Get.salam

تجزیه آی ان آی ParseINI

روال تجزیه آی ان آی(text: رشته): پیکربندی
متن INI را می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-ParseINI.salam

تجزیه محیط ParseEnv

روال تجزیه محیط(text: رشته): پیکربندی
متن KEY=VALUE را می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-ParseEnv.salam

تجزیه یامل ParseYAML

روال تجزیه یامل(text: رشته): پیکربندی
متن YAML ساده (کلید و مقدار تو در تو) را می‌خواند.
config-ParseYAML.salam
واردسازی پیکربندی
واردسازی ورودی خروجی

روال ریشه:
    متن := "app:\n  name: salam\n  port: 8080\nlog: info\n"
    ناپایا پ := پیکربندی.تجزیه یامل(متن)
    دیرکن پیکربندی.آزادسازی(پ)
    سرچاپ پیکربندی.کلیدها(پ)، پیکربندی.دریافت صحیح(پ، "app.port"، ۰)
    ورودی خروجی.نوشتن پرونده("app.yaml"، متن)
    ناپایا ف := پیکربندی.بارگذاری یامل("app.yaml")
    دیرکن پیکربندی.آزادسازی(ف)
    سرچاپ پیکربندی.دریافت(ف، "log")
پایان
خروجی["app.name", "app.port", "log"] 8080 info

بارگذاری آی ان آی LoadINI

روال بارگذاری آی ان آی(path: رشته): پیکربندی
پرونده‌ی INI را می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-ParseINI.salam

بارگذاری محیط LoadEnv

روال بارگذاری محیط(path: رشته): پیکربندی
پرونده‌ی env را می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-ParseEnv.salam

بارگذاری یامل LoadYAML

روال بارگذاری یامل(path: رشته): پیکربندی
پرونده‌ی YAML را می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-ParseYAML.salam

قالب آی ان آی FormatINI

روال قالب آی ان آی(c &: پیکربندی): رشته
تنظیمات را به شکل متن INI درمی‌آورد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-ParseINI.salam

قالب محیط FormatEnv

روال قالب محیط(c &: پیکربندی): رشته
تنظیمات را به شکل متن KEY=VALUE درمی‌آورد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-ParseEnv.salam

قالب محیط صادراتی FormatEnvExport

روال قالب محیط صادراتی(c &: پیکربندی): رشته
مثل قالب محیط، با export پیش از هر خط؛ برای اجرا در پوسته.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: config-ParseEnv.salam