کتابخانه‌ی استاندارد · کدگذاری و داده

پرونده محیط encoding/envfile

خواندن و نوشتن پرونده‌های .env با جایگذاری متغیرها.

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

پرونده‌ی .env متغیرهای محیطی برنامه را، هر کدام در یک خط KEY=value، نگه می‌دارد. این بسته خط‌های خالی و توضیح‌های # را رد می‌کند، export پیش از کلید را می‌پذیرد، نقل‌قول‌ها را برمی‌دارد و ترتیب کلیدها را حفظ می‌کند.

تجزیه ارجاع‌هایی مثل ${HOST} را با مقدار همان پرونده جایگذاری می‌کند؛ تجزیه خام آن‌ها را دست‌نخورده نگه می‌دارد. متغیرهای محیطی سیستم‌عامل خوانده نمی‌شوند؛ برای آن‌ها بسته‌ی محیط را ببینید.

گونه‌ها

سند Doc

ساختار سند
محتوای یک پرونده‌ی محیط.
نامانگلیسیگونهتوضیح
mmcollections.OrderedMapکلیدها و مقدارها به ترتیب.
flagsflagsوکتور<صحیح>برای هر کلید، آیا مقدارش جایگذاری‌پذیر است (نقل‌قول تکی جایگذاری را غیرفعال می‌کند).
encoding-envfile-Parse.salam
واردسازی کدگذاری.پرونده محیط
واردسازی کدگذاری.خطای کدگذاری

روال ریشه:
    متن := "# تنظیمات\nHOST=localhost\nPORT=8080\nexport NAME=\"سلام دنیا\"\nURL=http://${HOST}:${PORT}/\n"
    ناپایا س := پرونده محیط.تجزیه(متن)
    سرچاپ پرونده محیط.طول(س)، پرونده محیط.کلیدها(س)
    سرچاپ پرونده محیط.دریافت(س، "NAME")، پرونده محیط.دارد(س، "DEBUG")، پرونده محیط.دریافت با پیش فرض(س، "DEBUG"، "false")
    سرچاپ پرونده محیط.کلید در(س، ۰)، پرونده محیط.مقدار در(س، ۱)
    سرچاپ پرونده محیط.دریافت(س، "URL")
    خام := پرونده محیط.تجزیه خام(متن)
    سرچاپ پرونده محیط.دریافت(خام، "URL")، پرونده محیط.نام‌های ارجاع(خام)
    ناپایا پایه := پرونده محیط.جدید()
    گسترده := پرونده محیط.گسترش سند(خام، پایه)
    سرچاپ پرونده محیط.دریافت(گسترده، "URL")
    سرچاپ پرونده محیط.گسترش("${HOST}/api"، س، پایه)، پرونده محیط.نام‌های ارجاع در("$A و ${B}")
    پرونده محیط.تنظیم(س، "DEBUG"، "true")
    سرچاپ پرونده محیط.حذف(س، "URL")
    سرچاپ پرونده محیط.قالب(س)
    سرچاپ پرونده محیط.قالب صادراتی(پایه) == ""، پرونده محیط.نقل قول("a b")
    ناپایا دیگر := پرونده محیط.تجزیه("PORT=9090\nMODE=prod\n")
    پرونده محیط.ادغام در(س، دیگر)
    سرچاپ پرونده محیط.دریافت(س، "PORT")، پرونده محیط.دریافت(س، "MODE")
    ناپایا خ := خطای کدگذاری.بدون خطا()
    _ := پرونده محیط.تجزیه سخت گیرانه("=بی‌کلید\n"، خ)
    سرچاپ خطای کدگذاری.خطا است(خ)، پرونده محیط.معتبر("A=1\n")
    سرچاپ پرونده محیط.تجزیه مقدار(`"a\tb"`)، پرونده محیط.تجزیه مقدار گسترده("x ; comment"، درست)
    پرونده محیط.آزادسازی(س)
    پرونده محیط.آزادسازی(خام)
    پرونده محیط.آزادسازی(پایه)
    پرونده محیط.آزادسازی(گسترده)
    پرونده محیط.آزادسازی(دیگر)
پایان
خروجی4 ["HOST", "PORT", "NAME", "URL"] سلام دنیا false false HOST 8080 http://localhost:8080/ http://${HOST}:${PORT}/ ["HOST", "PORT"] http://localhost:8080/ localhost/api ["A", "B"] true HOST=localhost PORT=8080 NAME="سلام دنیا" DEBUG=true true "a b" 9090 prod true true a b x

روال‌ها

نقل قول Quote

روال نقل قول(v: رشته): رشته
مقدار را، اگر لازم باشد، در نقل‌قول دوتایی می‌گذارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

قالب Format

روال قالب(d &: سند): رشته
سند را دوباره به متن پرونده‌ی محیط تبدیل می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

قالب صادراتی FormatExport

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

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

جدید New

روال جدید(): سند
سند خالی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

طول Len

روال طول(d &: سند): صحیح
تعداد کلیدها.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

دارد Has

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

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

دریافت Get

روال دریافت(d &: سند، key: رشته): رشته
مقدار یک کلید؛ اگر نباشد، رشته‌ی خالی.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

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

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

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

تنظیم Set

روال تنظیم(d &: سند، key: رشته، val: رشته)
مقدار کلید را تنظیم می‌کند؛ کلید تازه به انتها می‌رود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

حذف Remove

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

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

کلید در KeyAt

روال کلید در(d &: سند، i: صحیح): رشته
کلید شماره‌ی i.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

مقدار در ValueAt

روال مقدار در(d &: سند، i: صحیح): رشته
مقدار شماره‌ی i.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

کلیدها Keys

روال کلیدها(d &: سند): وکتور<رشته>
کلیدها به ترتیب.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

ادغام در MergeInto

روال ادغام در(dst &: سند، src &: سند)
کلیدهای src را در dst می‌ریزد؛ کلیدهای تکراری جایگزین می‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

آزادسازی Free

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

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

تجزیه خام ParseRaw

روال تجزیه خام(text: رشته): سند
پرونده را بدون جایگذاری ارجاع‌ها می‌خواند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

تجزیه Parse

روال تجزیه(text: رشته): سند
پرونده را می‌خواند و ارجاع‌ها را جایگذاری می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

تجزیه سخت گیرانه ParseStrict

روال تجزیه سخت گیرانه(text: رشته، err &: encerr.EncodingError): سند
مثل تجزیه، ولی خط نادرست خطا دارد و err پر می‌شود.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

معتبر Valid

روال معتبر(text: رشته): منطقی
اگر همه‌ی خط‌ها درست باشند، درست برمی‌گرداند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

تجزیه مقدار ParseScalar

روال تجزیه مقدار(raw: رشته): رشته
یک مقدار تنها را مثل سمت راست = می‌خواند: نقل‌قول و اسکیپ را برمی‌دارد.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

تجزیه مقدار گسترده ParseScalarEx

روال تجزیه مقدار گسترده(raw: رشته، semi: منطقی): رشته
مثل تجزیه مقدار؛ اگر semi درست باشد، ; هم مثل # آغاز توضیح است.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

گسترش سند ExpandDoc

روال گسترش سند(d &: سند، base &: سند): سند
سند تازه‌ای با ارجاع‌های جایگذاری‌شده می‌سازد. نام‌ها اول در همان سند و بعد در base جستجو می‌شوند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

گسترش Expand

روال گسترش(raw: رشته، d &: سند، base &: سند): رشته
ارجاع‌های یک رشته را با مقدارهای سند و base جایگذاری می‌کند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

نام‌های ارجاع RefNames

روال نام‌های ارجاع(d &: سند): وکتور<رشته>
نام متغیرهایی که مقدارهای سند به آن‌ها ارجاع می‌دهند.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam

نام‌های ارجاع در RefNamesIn

روال نام‌های ارجاع در(raw: رشته): وکتور<رشته>
نام متغیرهای ارجاع‌شده در یک رشته؛ هر دو شکل $A و ${A}.

نمونه‌ی این مورد همراه با موارد بالاتر آمده است: encoding-envfile-Parse.salam