کاربرد اصلی configlet لینت کردن است: بررسی اینکه فایلهای پیکربندی یک ترک، هم از نظر نحوهی نگارش و هم از نظر معنا، درست ساختاربندی شدهاند. ترکهایی که پیکربندی نادرست دارند ممکن است درست همگامسازی نشوند، در وبسایت اشتباه به نظر برسند یا تجربهی کاربری نامناسبی ایجاد کنند؛ به همین دلیل محافظهای configlet نقش مهمی در حفظ یکپارچگی Exercism دارند.
از دستور lint میتوان برای لینت کردن یک ترک استفاده کرد.
configlet [global-options] lint [command-options]
Global options:
-h, --help Show this help message and exit
--version Show this tool's version information and exit
-t, --track-dir <dir> Specify a track directory to use instead of the current directory
-v, --verbosity <verbosity> The verbosity of output. Allowed values: q[uiet], n[ormal], d[etailed]
اینها قواعد لینتی هستند که بررسی میشوند.
لینتر باید بررسی کند که همهی فایلهای الزامی وجود دارند. فایلهای غیرمربوط به تمرین که باید وجود داشته باشند عبارتاند از:
config.jsondocs/ABOUT.mddocs/INSTALLATION.mddocs/LEARNING.mddocs/RESOURCES.mddocs/SNIPPET.txtdocs/TESTS.mdexercises/shared/.docs/help.mdexercises/shared/.docs/tests.mdفایلهای مخصوص تمرین مفهومی که باید وجود داشته باشند عبارتاند از:
exercises/concept/<slug>/.docs/hints.mdexercises/concept/<slug>/.docs/instructions.mdexercises/concept/<slug>/.docs/introduction.mdexercises/concept/<slug>/.meta/config.jsonبرای تمرینهای عملی هم فهرست مشابهی وجود خواهد داشت، اما هنوز مشخصات آن را تعریف نکردهایم.
هر مفهومی که در config.json فهرست شده است باید فایلهای زیر را داشته باشد:
concepts/<slug>/about.mdconcepts/<slug>/introduction.mdconcepts/<slug>/links.jsonفایل config.json باید شرایط زیر را رعایت کند:
"language" الزامی است"language" باید یک رشتهی ناتهی¹ با طول کمتر از یا برابر ۲۵۵ باشد"slug" الزامی است"slug" باید یک رشتهی کیبابکیس² با طول کمتر از یا برابر ۲۵۵ باشد"active" الزامی است"active" باید منطقی باشد"blurb" الزامی است"blurb" باید یک رشتهی ناتهی¹ با طول کمتر از یا برابر ۴۰۰ باشد"version" الزامی است"version" باید عدد صحیح 3 باشد"status.concept_exercises" الزامی است"status.concept_exercises" باید منطقی باشد"status.test_runner" الزامی است"status.test_runner" باید منطقی باشد"status.representer" الزامی است"status.representer" باید منطقی باشد"status.analyzer" الزامی است"status.analyzer" باید منطقی باشد"online_editor.indent_style" الزامی است"online_editor.indent_style" باید رشتهی space یا tab باشد"online_editor.indent_size" الزامی است"online_editor.indent_size" باید عدد صحیحی بزرگتر از یا برابر ۰ و کوچکتر از یا برابر ۸ باشد"online_editor.highlightjs_language" اختیاری است"online_editor.highlightjs_language" باید یک رشتهی ناتهی¹ باشد"files" اختیاری است"files" باید یک شیء باشد"files.solution" اختیاری است"files.solution" باید یک آرایه باشد"files.solution" باید الگوهای معتبر⁵ باشند"files.solution" نباید تکراری باشند"files.test" اختیاری است"files.test" باید یک آرایه باشد"files.test" باید الگوهای معتبر⁵ باشند"files.test" نباید تکراری باشند"files.example" اختیاری است"files.example" باید یک آرایه باشد"files.example" باید الگوهای معتبر⁵ باشند"files.example" نباید تکراری باشند"files.exemplar" اختیاری است"files.exemplar" باید یک آرایه باشد"files.exemplar" باید الگوهای معتبر⁵ باشند"files.exemplar" نباید تکراری باشند"files.editor" اختیاری است"files.editor" باید یک آرایه باشد"files.editor" باید الگوهای معتبر⁵ باشند"files.editor" نباید تکراری باشند"files.invalidator" اختیاری است"files.invalidator" باید یک آرایه باشد"files.invalidator" باید الگوهای معتبر⁵ باشند"files.invalidator" نباید تکراری باشند"files.solution"، "files.test"، "files.example"، "files.exemplar"، "files.editor" یا "files.invalidator" فهرست کرد (بدون همپوشانی)
d یا plsql باشد، فایلهای "files.solution" و "files.test" میتوانند همپوشانی داشته باشند"files.example و "files.exemplar" میتوانند همپوشانی داشته باشند"test_runner.average_run_time" الزامی است اگر "status.test_runner" برابر با true باشد"test_runner.average_run_time" باید عدد صحیحی بزرگتر از ۰ باشد"approaches.snippet_extension" الزامی است اگر ترک یک رویکرد یا بیشتر داشته باشد"approaches.snippet_extension" باید یک رشتهی ناتهی¹ باشد"exercises" الزامی است"exercises.concept" الزامی است"exercises.concept" باید یک آرایه باشد"exercises.concept[].slug" الزامی است"exercises.concept[].slug" باید یک رشتهی کیبابکیس² با طول کمتر از یا برابر ۲۵۵ باشد"exercises.concept[].slug" باید در "exercises.concept[].slug" یکتا باشد و نباید در "exercises.practice[].slug" وجود داشته باشد"exercises.concept[].name" الزامی است"exercises.concept[].name" باید یک رشتهی تایتلکیس³ با طول کمتر از یا برابر ۲۵۵ باشد"exercises.concept[].uuid" الزامی است"exercises.concept[].uuid" باید یک رشتهی UUID یکتای نسخهی ۴ باشد⁶"exercises.concept[].uuid" برای هر تمرین هرگز نباید تغییر کند"exercises.concept[].concepts" الزامی است"exercises.concept[].status" برابر با deprecated نباشد، مقدار "exercises.concept[].concepts" باید آرایهای ناتهی از رشتهها باشد"exercises.concept[].status" برابر با deprecated باشد، مقدار "exercises.concept[].concepts" باید آرایهی خالی باشد"exercises.concept[].concepts" باید رشتههای کیبابکیس² باشند"exercises.concept[].concepts" نباید تکراری باشند"exercises.concept[].concepts" نباید در ویژگی "concepts" هیچ تمرین مفهومی دیگری باشند"exercises.concept[].concepts" باید با ویژگی "concepts.slug" یکی از مفاهیم مطابقت داشته باشند"exercises.concept[].prerequisites" الزامی است"exercises.concept[].status" برابر با deprecated نباشد، مقدار "exercises.concept[].prerequisites" باید آرایهای ناتهی از رشتهها باشد؛ بهجز دقیقاً یک تمرین که مجاز است آرایهی خالی را به عنوان مقدار خود داشته باشد"exercises.concept[].status" برابر با deprecated باشد، مقدار "exercises.concept[].prerequisites" باید آرایهی خالی باشد"exercises.concept[].prerequisites" باید رشتههای کیبابکیس² باشند"exercises.concept[].prerequisites" نباید تکراری باشند"exercises.concept[].prerequisites" باید با مقادیر ویژگی "concepts" یک تمرین مفهومی دیگر مطابقت داشته باشند"exercises.concept[].prerequisites" نباید با هیچیک از مقادیر ویژگی "exercises.concept[].concepts" خود تمرین مطابقت داشته باشند"exercises.concept[].prerequisites" باید با ویژگی "concepts.slug" یکی از مفاهیم مطابقت داشته باشند"exercises.concept[].concepts" و "exercises.concept[].prerequisites" وجود داشته باشد"exercises.concept[].status" اختیاری است"exercises.concept[].status" باید رشتهی wip، beta، active یا deprecated باشد"exercises.practice" الزامی است"exercises.practice" باید یک آرایه باشد"exercises.practice[].slug" الزامی است"exercises.practice[].slug" باید یک رشتهی کیبابکیس² با طول کمتر از یا برابر ۲۵۵ باشد"exercises.practice[].slug" باید در "exercises.practice[].slug" یکتا باشد و نباید در "exercises.concept[].slug" وجود داشته باشد"exercises.practice[].slug" وجود داشته باشد که رشتهی hello-world است"exercises.practice[].name" الزامی است"exercises.practice[].name" باید یک رشتهی تایتلکیس³ با طول کمتر از یا برابر ۲۵۵ باشد"exercises.practice[].uuid" الزامی است"exercises.practice[].uuid" باید یک رشتهی UUID یکتای نسخهی ۴ باشد⁶"exercises.practice[].uuid" برای هر تمرین هرگز نباید تغییر کند"exercises.practice[].difficulty" الزامی است"exercises.practice[].difficulty" باید عدد صحیحی بزرگتر از یا برابر ۱ و کوچکتر از یا برابر ۱۰ باشد"exercises.practice[].practices" الزامی است"exercises.practice[].status" برابر با deprecated نباشد، مقدار "exercises.practice[].practices" باید آرایهای ناتهی از رشتهها باشد"exercises.practice[].status" برابر با deprecated باشد، مقدار "exercises.practice[].practices" باید آرایهی خالی باشد"exercises.practice[].practices" باید رشتههای کیبابکیس² باشند"exercises.practice[].practices" نباید تکراری باشند"exercises.practice[].practices" باید با ویژگی "concepts[].slug" یکی از مفاهیم مطابقت داشته باشند"exercises.practice[].practices" باید حداکثر ۱۰ بار (در مجموع همهی تمرینها) به اسلاگ یک مفهوم منفرد اشاره کنند"exercises.practice[].prerequisites" الزامی است"exercises.practice[].status" برابر با deprecated نباشد، مقدار "exercises.practice[].prerequisites" باید آرایهای ناتهی از رشتهها باشد"exercises.practice[].status" برابر با deprecated باشد، مقدار "exercises.practice[].prerequisites" باید آرایهی خالی باشد"exercises.practice[].slug" برابر با hello-world باشد، مقدار "exercises.practice[].prerequisites" باید آرایهی خالی باشد"exercises.practice[].prerequisites" باید رشتههای کیبابکیس² باشند"exercises.practice[].prerequisites" نباید تکراری باشند"exercises.practice[].prerequisites" باید با مقادیر "exercises.concept[].concepts" یکی از تمرینهای مفهومی مطابقت داشته باشند"exercises.practice[].prerequisites" باید با ویژگی "concepts[].slug" یکی از مفاهیم مطابقت داشته باشند"exercises.practice[].status" اختیاری است"exercises.practice[].status" باید رشتهی wip، beta، active یا deprecated باشد"exercises.practice[].slug" برابر با hello-world باشد، مقدار "exercises.practice[].status" باید یا حذف شده باشد یا رشتهی active باشد"exercises.foregone" اختیاری است"exercises.foregone" باید یک آرایه باشد"exercises.foregone" باید رشتههای کیبابکیس² باشند"exercises.foregone" نباید تکراری باشند"exercises.foregone" نباید با هیچیک از اسلاگهای تمرین مفهومی یا عملی مطابقت داشته باشند"concepts" الزامی است"concepts" باید یک آرایه باشد"concepts[].uuid" الزامی است"concepts[].uuid" باید یک رشتهی UUID یکتای نسخهی ۴ باشد⁶"concepts[].uuid" برای هر مفهوم هرگز نباید تغییر کند"concepts[].slug" الزامی است"concepts[].slug" باید یک رشتهی کیبابکیس² با طول کمتر از یا برابر ۲۵۵ باشد"concepts[].name" الزامی است"concepts[].name" باید یک رشتهی تایتلکیس³ با طول کمتر از یا برابر ۲۵۵ باشد"concepts[].tags" اختیاری است"concepts[].tags.all" اختیاری است، مگر اینکه "concepts[].tags.any" خالی باشد"concepts[].tags.all" باید یک آرایه باشد"concepts[].tags.all" باید رشتههای برچسب⁷ ناتهی با طول کمتر از یا برابر ۲۵۵ باشند"concepts[].tags.all" نباید تکراری باشند"concepts[].tags.any" اختیاری است، مگر اینکه "concepts[].tags.all" خالی باشد"concepts[].tags.any" باید یک آرایه باشد"concepts[].tags.any" باید رشتههای برچسب⁷ ناتهی با طول کمتر از یا برابر ۲۵۵ باشند"concepts[].tags.any" نباید تکراری باشند"concepts[].tags.not" اختیاری است"concepts[].tags.not" باید یک آرایه باشد"concepts[].tags.not" باید رشتههای برچسب⁷ ناتهی با طول کمتر از یا برابر ۲۵۵ باشند"concepts[].tags.not" نباید تکراری باشند"concepts" باید یک فایل concept/<concepts.slug>/about.md داشته باشد. قواعد لینت این فایل در ادامه مشخص شده است."concepts" باید یک فایل concept/<concepts.slug>/introduction.md داشته باشد. قواعد لینت این فایل در ادامه مشخص شده است."concepts" باید یک فایل concept/<concepts.slug>/links.json داشته باشد. قواعد لینت این فایل در ادامه مشخص شده است."key_features" اختیاری است"key_features" باید آرایهای با طول برابر ۶ باشد"key_features[].icon" الزامی است"key_features[].icon" باید از یکی از مقادیر نماد از پیش تعریفشده استفاده کند"key_features[].title" الزامی است"key_features[].title" باید یک رشتهی سنتنسکیس⁴ با طول کمتر از یا برابر ۲۵ باشد"key_features[].content" الزامی است"key_features[].content" باید یک رشتهی ناتهی¹ با طول کمتر از یا برابر ۱۰۰ باشد"tags" الزامی است"tags" باید آرایهای از رشتهها باشد"tags" نباید تکراری باشند"tags" باید از یکی از مقادیر برچسب از پیش تعریفشده استفاده کنند"blurb" الزامی است"blurb" باید یک رشتهی ناتهی¹ با طول کمتر از یا برابر ۳۵۰ باشد"source" اختیاری است"source" باید یک رشتهی ناتهی¹ باشد"source_url" اختیاری است"source_url" باید یک URL باشد"authors" الزامی است"authors" باید آرایهای ناتهی باشد"authors" باید رشتههای ناتهی¹ باشند"authors" نباید تکراری باشند"authors" بدون توجه به بزرگی و کوچکی حروف در نظر گرفته میشوند"contributors" اختیاری است"contributors" باید یک آرایه باشد"contributors" باید رشتههای ناتهی¹ باشند"contributors" نباید تکراری باشند"contributors" بدون توجه به بزرگی و کوچکی حروف در نظر گرفته میشوند"authors" یا "contributors" فهرست کرد (بدون همپوشانی)"files.solution" الزامی است"files.solution" باید آرایهای ناتهی باشد"files.solution" نباید تکراری باشند"files.test" الزامی است"files.test" باید آرایهای ناتهی باشد"files.test" نباید تکراری باشند"files.exemplar" الزامی است"files.exemplar" باید آرایهای ناتهی باشد"files.exemplar" نباید تکراری باشند"files.editor" اختیاری است"files.editor" باید یک آرایه باشد"files.editor" نباید تکراری باشند"files.invalidator" اختیاری است"files.invalidator" باید یک آرایه باشد"files.invalidator" نباید تکراری باشند"files.solution" باید وجود داشته باشند"files.test" باید وجود داشته باشند"files.exemplar" باید وجود داشته باشند"files.editor" باید وجود داشته باشند"files.invalidator" باید وجود داشته باشند"files.solution"، "files.test"، "files.exemplar" یا "files.invalidator" فهرست کرد (بدون همپوشانی)
d یا plsql باشد، فایلهای "files.solution" و "files.test" میتوانند همپوشانی داشته باشند"forked_from" اختیاری است"forked_from" باید یک آرایه باشد"forked_from" باید رشتههایی به شکل <track-slug>/<exercise-slug> باشند (مثلاً fsharp/bird-watcher)"forked_from" باید به تمرینهایی اشاره کنند که واقعاً پیادهسازی شدهاند"forked_from" نباید تکراری باشند"language_versions" اختیاری است"language_versions" باید یک رشته باشد"representer.version" اختیاری است"representer.version" باید عدد صحیحی بزرگتر از یا برابر ۱ باشد"icon" اختیاری است"icon" باید یک رشتهی کیبابکیس² باشد## General باشند یا ## X. <task>، که در آن X با شمارهی سرتیتر کار در instructions.md مطابقت داشته باشد## 1. Do X
"concepts.slug" یکی از مفاهیم موجود در config.json ترک مطابقت داشته باشد."blurb" الزامی است"blurb" باید یک رشتهی ناتهی¹ با طول کمتر از یا برابر ۳۵۰ باشد"source" اختیاری است"source" باید یک رشتهی ناتهی¹ باشد"source_url" اختیاری است"source_url" باید یک URL باشد"authors" اختیاری است"authors" باید یک آرایه باشد"authors" باید رشتههای ناتهی¹ باشند"authors" نباید تکراری باشند"authors" بدون توجه به بزرگی و کوچکی حروف در نظر گرفته میشوند"contributors" اختیاری است"contributors" باید یک آرایه باشد"contributors" باید رشتههای ناتهی¹ باشند"contributors" نباید تکراری باشند"contributors" بدون توجه به بزرگی و کوچکی حروف در نظر گرفته میشوند"authors" یا "contributors" فهرست کرد (بدون همپوشانی)"files.solution" الزامی است"files.solution" باید آرایهای ناتهی باشد"files.solution" نباید تکراری باشند"files.test" الزامی است"files.test" باید آرایهای ناتهی باشد"files.test" نباید تکراری باشند"files.example" الزامی است"files.example" باید آرایهای ناتهی باشد"files.example" نباید تکراری باشند"files.editor" اختیاری است"files.editor" باید یک آرایه باشد"files.editor" نباید تکراری باشند"files.invalidator" اختیاری است"files.invalidator" باید یک آرایه باشد"files.invalidator" نباید تکراری باشند"files.solution" باید وجود داشته باشند"files.test" باید وجود داشته باشند"files.example" باید وجود داشته باشند"files.editor" باید وجود داشته باشند"files.invalidator" باید وجود داشته باشند"files.solution"، "files.test"، "files.example یا "files.invalidator" فهرست کرد (بدون همپوشانی)
d یا plsql باشد، فایلهای "files.solution" و "files.test" میتوانند همپوشانی داشته باشند"language_versions" اختیاری است"language_versions" باید یک رشته باشد"test_runner" اختیاری است"test_runner" باید منطقی باشد"representer.version" اختیاری است"representer.version" باید عدد صحیحی بزرگتر از یا برابر ۱ باشد"icon" اختیاری است"icon" باید یک رشتهی کیبابکیس² باشدintroduction.md یا یک پوشهی همسطح وجود داشته باشد"introduction.authors" اختیاری است"introduction.authors" باید یک آرایه باشد"introduction.authors" باید رشتههای ناتهی¹ باشند"introduction.authors" نباید تکراری باشند"introduction.authors" بدون توجه به بزرگی و کوچکی حروف در نظر گرفته میشوند"introduction.authors" ناتهی باشد، باید یک فایل introduction.md ناتهی وجود داشته باشد"introduction.contributors" اختیاری است"introduction.contributors" باید یک آرایه باشد"introduction.contributors" باید رشتههای ناتهی¹ باشند"introduction.contributors" نباید تکراری باشند"introduction.contributors" بدون توجه به بزرگی و کوچکی حروف در نظر گرفته میشوند"introduction.contributors" ناتهی باشد، باید یک فایل introduction.md ناتهی وجود داشته باشد"introduction.authors" یا "introduction.contributors" فهرست کرد (بدون همپوشانی)"approaches" اختیاری است، مگر اینکه یک پوشهی همسطح وجود داشته باشد (که فایلهای رویکرد را در خود دارد)"approaches" باید آرایهای از شیءها باشد"approaches[].uuid" الزامی است"approaches[].uuid" باید یک رشتهی UUID یکتای نسخهی ۴ باشد⁶"approaches[].uuid" برای هر مفهوم هرگز نباید تغییر کند"approaches[].slug" الزامی است"approaches[].slug" باید یک رشتهی کیبابکیس² با طول کمتر از یا برابر ۲۵۵ باشد"approaches[].slug" باید یک فایل <slug>/content.md ناتهی متناظر داشته باشد"approaches[].slug" باید یک فایل <slug>/snippet.txt ناتهی متناظر داشته باشد"approaches[].title" الزامی است"approaches[].title" باید یک رشتهی تایتلکیس³ با طول کمتر از یا برابر ۲۵۵ باشد"approaches[].blurb" الزامی است"approaches[].blurb" باید یک رشتهی ناتهی¹ با طول کمتر از یا برابر ۳۵۰ باشد"approaches[].authors" الزامی است"approaches[].authors" باید آرایهای ناتهی باشد"approaches[].authors" باید رشتههای ناتهی¹ باشند"approaches[].authors" نباید تکراری باشند"approaches[].authors" بدون توجه به بزرگی و کوچکی حروف در نظر گرفته میشوند"approaches[].contributors" اختیاری است"approaches[].contributors" باید یک آرایه باشد"approaches[].contributors" باید رشتههای ناتهی¹ باشند"approaches[].contributors" نباید تکراری باشند"approaches[].contributors" بدون توجه به بزرگی و کوچکی حروف در نظر گرفته میشوند"approaches[].authors" یا "approaches[].contributors" فهرست کرد (بدون همپوشانی)"approaches[].tags" اختیاری است"approaches[].tags.all" اختیاری است، مگر اینکه "approaches[].tags.any" خالی باشد"approaches[].tags.all" باید یک آرایه باشد"approaches[].tags.all" باید رشتههای برچسب⁷ ناتهی با طول کمتر از یا برابر ۲۵۵ باشند"approaches[].tags.all" نباید تکراری باشند"approaches[].tags.any" اختیاری است، مگر اینکه "approaches[].tags.all" خالی باشد"approaches[].tags.any" باید یک آرایه باشد"approaches[].tags.any" باید رشتههای برچسب⁷ ناتهی با طول کمتر از یا برابر ۲۵۵ باشند"approaches[].tags.any" نباید تکراری باشند"approaches[].tags.not" اختیاری است"approaches[].tags.not" باید یک آرایه باشد"approaches[].tags.not" باید رشتههای برچسب⁷ ناتهی با طول کمتر از یا برابر ۲۵۵ باشند"approaches[].tags.not" نباید تکراری باشند"approaches[].slug" در فایل .approaches/config.json وجود داشته باشد، حضور این فایل الزامی است"approaches[].slug" در فایل .approaches/config.json وجود داشته باشد، حضور این فایل الزامی استapproaches.snippet_extension در فایل config.json ترک گرفته میشود"articles" اختیاری است، مگر اینکه یک پوشهی همسطح وجود داشته باشد (که فایلهای مقاله را در خود دارد)"articles" باید آرایهای از شیءها باشد"articles[].uuid" الزامی است"articles[].uuid" باید یک رشتهی UUID یکتای نسخهی ۴ باشد⁶"articles[].uuid" برای هر مفهوم هرگز نباید تغییر کند"articles[].slug" الزامی است"articles[].slug" باید یک رشتهی کیبابکیس² با طول کمتر از یا برابر ۲۵۵ باشد"articles[].slug" باید یک فایل <slug>/content.md ناتهی متناظر داشته باشد"articles[].slug" باید یک فایل <slug>/snippet.md ناتهی متناظر داشته باشد"articles[].title" الزامی است"articles[].title" باید یک رشتهی تایتلکیس³ با طول کمتر از یا برابر ۲۵۵ باشد"articles[].blurb" الزامی است"articles[].blurb" باید یک رشتهی ناتهی¹ با طول کمتر از یا برابر ۳۵۰ باشد"articles[].authors" الزامی است"articles[].authors" باید آرایهای ناتهی باشد"articles[].authors" باید رشتههای ناتهی¹ باشند"articles[].authors" نباید تکراری باشند"articles[].authors" بدون توجه به بزرگی و کوچکی حروف در نظر گرفته میشوند"articles[].contributors" اختیاری است"articles[].contributors" باید یک آرایه باشد"articles[].contributors" باید رشتههای ناتهی¹ باشند"articles[].contributors" نباید تکراری باشند"articles[].contributors" بدون توجه به بزرگی و کوچکی حروف در نظر گرفته میشوند"articles[].authors" یا "articles[].contributors" فهرست کرد (بدون همپوشانی)"articles[].slug" در فایل .articles/config.json وجود داشته باشد، حضور این فایل الزامی است"articles[].slug" در فایل .articles/config.json وجود داشته باشد، حضور این فایل الزامی است"[].url" الزامی است"[].url" باید یک URL باشد"[].description" الزامی است"[].description" باید یک رشتهی ناتهی¹ باشد"[].icon_url" اختیاری است"[].icon_url" باید یک URL باشد"blurb" الزامی است"blurb" باید یک رشتهی ناتهی¹ با طول کمتر از یا برابر ۳۵۰ باشد"authors" الزامی است"authors" باید یک آرایه باشد"authors" باید رشتههای ناتهی¹ باشند"authors" نباید تکراری باشند"authors" بدون توجه به بزرگی و کوچکی حروف در نظر گرفته میشوند"contributors" اختیاری است"contributors" باید یک آرایه باشد"contributors" باید رشتههای ناتهی¹ باشند"contributors" نباید تکراری باشند"contributors" بدون توجه به بزرگی و کوچکی حروف در نظر گرفته میشوند"authors" یا "contributors" فهرست کرد (بدون همپوشانی)رشتهی ناتهی: رشتهای که دستکم یک نویسهی غیرفاصله داشته باشد.
رشتهی کیبابکیس: رشتهای که فقط شامل نویسههایی در بازهی [a-z0-9] است، که بهصورت اختیاری با خط تیره جدا شدهاند (مثلاً «two-fer»). باید با این عبارت باقاعده مطابقت داشته باشد: ^[a-z0-9]+(-[a-z0-9]+)*$
رشتهی تایتلکیس: یک رشتهی ناتهی که از رهنمودهای زیر از شیوهنامهی Chicago پیروی میکند:
رشتهی سنتنسکیس: یک رشتهی ناتهی که از رهنمودهای زیر پیروی میکند:
الگوی معتبر files: یک رشتهی ناتهی¹ که مکان فایلی را که در یک تمرین استفاده میشود، نسبت به پوشهی تمرین مشخص میکند. یک الگو میتواند از یکی از جانگهدارهای زیر استفاده کند:
%{kebab_slug}: اسلاگ تمرین به قالب kebab-case (مثلاً bit-manipulation)%{snake_slug}: اسلاگ تمرین به قالب snake_case (مثلاً bit_manipulation)%{camel_slug}: اسلاگ تمرین به قالب camelCase (مثلاً bitManipulation)%{pascal_slug}: اسلاگ تمرین به قالب PascalCase (مثلاً BitManipulation)رشتهی UUID یکتای نسخهی ۴: رشتهای که همهی این شرطها را برآورده میکند:
config.json سطح ترک یک ترک Exercism مشخص وجود داردconfig.json سطح ترک هیچ ترک Exercism دیگری وجود نداردcanonical-data.json در https://github.com/exercism/problem-specifications وجود ندارد^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
برای نمونه، UUID زیر شکل درست را دارد:
d334ffe3-657e-4725-a950-290b284b6d9f
میتوانید برای تولید یک UUID مناسب دستور configlet uuid را اجرا کنید.
tag معتبر تحلیلگر: یک رشتهی ناتهی¹ که به شکل <category>:<thing> قالببندی شده است.
مقدار <category> باید یکی از اینها باشد:
paradigm (مثلاً paradigm:functional)technique (مثلاً technique:recursion)construct (مثلاً construct:bitwise-and)uses (مثلاً uses:DateTime.add_seconds)مقدار <thing> باید یک رشتهی ناتهی¹ باشد.