A configlet elsődleges használata a lintelés: annak ellenőrzése, hogy egy kurzus konfigurációs fájljai megfelelően strukturáltak-e, szintaktikailag és szemantikailag egyaránt. A hibásan beállított kurzusok nem feltétlenül szinkronizálódnak megfelelően, hibásan jelenhetnek meg a weboldalon, vagy nem optimális felhasználói élményt nyújthatnak, ezért a configlet ellenőrzései fontos szerepet játszanak az Exercism integritásának megőrzésében.
A lint parancs egy kurzus lintelésére használható.
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]
Ezek az ellenőrzött lintelési szabályok.
A lintelőnek ellenőriznie kell, hogy minden kötelező fájl jelen van-e. A nem feladatspecifikus fájlok, amelyeknek jelen kell lenniük:
config.jsondocs/ABOUT.mddocs/INSTALLATION.mddocs/LEARNING.mddocs/RESOURCES.mddocs/SNIPPET.txtdocs/TESTS.mdexercises/shared/.docs/help.mdexercises/shared/.docs/tests.mdA tanulófeladatra jellemző fájlok, amelyeknek jelen kell lenniük:
exercises/concept/<slug>/.docs/hints.mdexercises/concept/<slug>/.docs/instructions.mdexercises/concept/<slug>/.docs/introduction.mdexercises/concept/<slug>/.meta/config.jsonHasonló lista készül majd a gyakorlófeladatokhoz is, de annak a specifikációját még nem határoztuk meg.
A config.json-ban felsorolt minden fogalomhoz a következő fájloknak kell tartozniuk:
concepts/<slug>/about.mdconcepts/<slug>/introduction.mdconcepts/<slug>/links.jsonA config.json fájlnál a következő ellenőrzéseket kell elvégezni:
"language" kulcs kötelező"language" értékének nem üres string¹-nek kell lennie, legfeljebb 255 karakter hosszúsággal"slug" kulcs kötelező"slug" értékének kebab-case string²-nek kell lennie, legfeljebb 255 karakter hosszúsággal"active" kulcs kötelező"active" értékének booleannak kell lennie"blurb" kulcs kötelező"blurb" értékének nem üres string¹-nek kell lennie, legfeljebb 400 karakter hosszúsággal"version" kulcs kötelező"version" értékének a 3 egész számnak kell lennie"status.concept_exercises" kulcs kötelező"status.concept_exercises" értékének booleannak kell lennie"status.test_runner" kulcs kötelező"status.test_runner" értékének booleannak kell lennie"status.representer" kulcs kötelező"status.representer" értékének booleannak kell lennie"status.analyzer" kulcs kötelező"status.analyzer" értékének booleannak kell lennie"online_editor.indent_style" kulcs kötelező"online_editor.indent_style" értékének a space vagy tab stringnek kell lennie"online_editor.indent_size" kulcs kötelező"online_editor.indent_size" értékének olyan egész számnak kell lennie, amely >= 0 és <= 8"online_editor.highlightjs_language" kulcs opcionális"online_editor.highlightjs_language" értékének nem üres string¹-nek kell lennie"files" kulcs opcionális"files" értékének objektumnak kell lennie"files.solution" kulcs opcionális"files.solution" értékének tömbnek kell lennie"files.solution" értékeinek érvényes mintáknak⁵ kell lenniük"files.solution" értékei nem ismétlődhetnek"files.test" kulcs opcionális"files.test" értékének tömbnek kell lennie"files.test" értékeinek érvényes mintáknak⁵ kell lenniük"files.test" értékei nem ismétlődhetnek"files.example" kulcs opcionális"files.example" értékének tömbnek kell lennie"files.example" értékeinek érvényes mintáknak⁵ kell lenniük"files.example" értékei nem ismétlődhetnek"files.exemplar" kulcs opcionális"files.exemplar" értékének tömbnek kell lennie"files.exemplar" értékeinek érvényes mintáknak⁵ kell lenniük"files.exemplar" értékei nem ismétlődhetnek"files.editor" kulcs opcionális"files.editor" értékének tömbnek kell lennie"files.editor" értékeinek érvényes mintáknak⁵ kell lenniük"files.editor" értékei nem ismétlődhetnek"files.invalidator" kulcs opcionális"files.invalidator" értékének tömbnek kell lennie"files.invalidator" értékeinek érvényes mintáknak⁵ kell lenniük"files.invalidator" értékei nem ismétlődhetnek"files.solution", "files.test", "files.example", "files.exemplar", "files.editor" vagy "files.invalidator" tömbök egyikében szerepelhetnek (átfedés nem megengedett)
d vagy plsql, a "files.solution" és "files.test" fájlok átfedhetik egymást
"files.example és "files.exemplar" fájlok átfedhetik egymást
"test_runner.average_run_time" kulcs kötelező, ha a "status.test_runner" értéke true
"test_runner.average_run_time" értékének olyan egész számnak kell lennie, amely > 0"approaches.snippet_extension" kulcs kötelező, ha a kurzusnak egy vagy több megközelítése van"approaches.snippet_extension" értékének nem üres string¹-nek kell lennie"exercises" kulcs kötelező"exercises.concept" kulcs kötelező"exercises.concept" értékének tömbnek kell lennie"exercises.concept[].slug" kulcs kötelező"exercises.concept[].slug" értékének kebab-case string²-nek kell lennie, legfeljebb 255 karakter hosszúsággal"exercises.concept[].slug" értékének egyedinek kell lennie az "exercises.concept[].slug" mezőn belül, és nem szerepelhet az "exercises.practice[].slug" mezőben"exercises.concept[].name" kulcs kötelező"exercises.concept[].name" értékének Title Case string³-nek kell lennie, legfeljebb 255 karakter hosszúsággal"exercises.concept[].uuid" kulcs kötelező"exercises.concept[].uuid" értékének egyedi, 4-es verziójú UUID stringnek⁶ kell lennie"exercises.concept[].uuid" értéke feladatonként soha nem változhat"exercises.concept[].concepts" kulcs kötelező"exercises.concept[].concepts" értékének nem üres stringtömbnek kell lennie, ha az "exercises.concept[].status" értéke nem deprecated
"exercises.concept[].concepts" értékének üres tömbnek kell lennie, ha az "exercises.concept[].status" értéke deprecated
"exercises.concept[].concepts" értékeinek kebab-case stringeknek² kell lenniük"exercises.concept[].concepts" értékei nem ismétlődhetnek"exercises.concept[].concepts" értékei nem szerepelhetnek egyetlen más tanulófeladat "concepts" tulajdonságában sem"exercises.concept[].concepts" értékeinek meg kell egyezniük valamelyik fogalom "concepts.slug" tulajdonságával"exercises.concept[].prerequisites" kulcs kötelező"exercises.concept[].prerequisites" értékének nem üres stringtömbnek kell lennie, ha az "exercises.concept[].status" értéke nem deprecated, kivéve pontosan egy feladatot, amelynek lehet üres tömb az értéke"exercises.concept[].prerequisites" értékének üres tömbnek kell lennie, ha az "exercises.concept[].status" értéke deprecated
"exercises.concept[].prerequisites" értékeinek kebab-case stringeknek² kell lenniük"exercises.concept[].prerequisites" értékei nem ismétlődhetnek"exercises.concept[].prerequisites" értékeinek meg kell egyezniük bármely más tanulófeladat "concepts" tulajdonságának értékeivel"exercises.concept[].prerequisites" értékei nem egyezhetnek meg a feladat "exercises.concept[].concepts" tulajdonságában szereplő egyetlen értékkel sem"exercises.concept[].prerequisites" értékeinek meg kell egyezniük valamelyik fogalom "concepts.slug" tulajdonságával"exercises.concept[].concepts" és az "exercises.concept[].prerequisites" között"exercises.concept[].status" kulcs opcionális"exercises.concept[].status" értékének a wip, beta, active vagy deprecated stringnek kell lennie"exercises.practice" kulcs kötelező"exercises.practice" értékének tömbnek kell lennie"exercises.practice[].slug" kulcs kötelező"exercises.practice[].slug" értékének kebab-case string²-nek kell lennie, legfeljebb 255 karakter hosszúsággal"exercises.practice[].slug" értékének egyedinek kell lennie az "exercises.practice[].slug" mezőn belül, és nem szerepelhet az "exercises.concept[].slug" mezőben"exercises.practice[].slug" értéknek kell lennie, amely a hello-world string"exercises.practice[].name" kulcs kötelező"exercises.practice[].name" értékének Title Case string³-nek kell lennie, legfeljebb 255 karakter hosszúsággal"exercises.practice[].uuid" kulcs kötelező"exercises.practice[].uuid" értékének egyedi, 4-es verziójú UUID stringnek⁶ kell lennie"exercises.practice[].uuid" értéke feladatonként soha nem változhat"exercises.practice[].difficulty" kulcs kötelező"exercises.practice[].difficulty" értékének olyan egész számnak kell lennie, amely >= 1 és <= 10"exercises.practice[].practices" kulcs kötelező"exercises.practice[].practices" értékének nem üres stringtömbnek kell lennie, ha az "exercises.practice[].status" értéke nem deprecated
"exercises.practice[].practices" értékének üres tömbnek kell lennie, ha az "exercises.practice[].status" értéke deprecated
"exercises.practice[].practices" értékeinek kebab-case stringeknek² kell lenniük"exercises.practice[].practices" értékei nem ismétlődhetnek"exercises.practice[].practices" értékeinek meg kell egyezniük valamelyik fogalom "concepts[].slug" tulajdonságával"exercises.practice[].practices" értékei legfeljebb 10 alkalommal hivatkozhatnak egy adott fogalom slugjára (az összes feladatot együttvéve)"exercises.practice[].prerequisites" kulcs kötelező"exercises.practice[].prerequisites" értékének nem üres stringtömbnek kell lennie, ha az "exercises.practice[].status" értéke nem deprecated
"exercises.practice[].prerequisites" értékének üres tömbnek kell lennie, ha az "exercises.practice[].status" értéke deprecated
"exercises.practice[].prerequisites" értékének üres tömbnek kell lennie, ha az "exercises.practice[].slug" értéke hello-world
"exercises.practice[].prerequisites" értékeinek kebab-case stringeknek² kell lenniük"exercises.practice[].prerequisites" értékei nem ismétlődhetnek"exercises.practice[].prerequisites" értékeinek meg kell egyezniük bármely tanulófeladat "exercises.concept[].concepts" értékeivel"exercises.practice[].prerequisites" értékeinek meg kell egyezniük valamelyik fogalom "concepts[].slug" tulajdonságával"exercises.practice[].status" kulcs opcionális"exercises.practice[].status" értékének a wip, beta, active vagy deprecated stringnek kell lennie"exercises.practice[].status" értékét, ha az "exercises.practice[].slug" értéke hello-world, vagy el kell hagyni, vagy az active stringnek kell lennie"exercises.foregone" kulcs opcionális"exercises.foregone" értékének tömbnek kell lennie"exercises.foregone" értékeinek kebab-case stringeknek² kell lenniük"exercises.foregone" értékei nem ismétlődhetnek"exercises.foregone" értékei nem egyezhetnek meg egyetlen tanuló- vagy gyakorlófeladat slugjával sem"concepts" kulcs kötelező"concepts" értékének tömbnek kell lennie"concepts[].uuid" kulcs kötelező"concepts[].uuid" értékének egyedi, 4-es verziójú UUID stringnek⁶ kell lennie"concepts[].uuid" értéke fogalmonként soha nem változhat"concepts[].slug" kulcs kötelező"concepts[].slug" értékének kebab-case string²-nek kell lennie, legfeljebb 255 karakter hosszúsággal"concepts[].name" kulcs kötelező"concepts[].name" értékének Title Case string³-nek kell lennie, legfeljebb 255 karakter hosszúsággal"concepts[].tags" kulcs opcionális"concepts[].tags.all" kulcs opcionális, kivéve, ha a "concepts[].tags.any" üres"concepts[].tags.all" értékének tömbnek kell lennie"concepts[].tags.all" értékeinek nem üres tag⁷ stringeknek kell lenniük, legfeljebb 255 karakter hosszúsággal"concepts[].tags.all" értékei nem ismétlődhetnek"concepts[].tags.any" kulcs opcionális, kivéve, ha a "concepts[].tags.all" üres"concepts[].tags.any" értékének tömbnek kell lennie"concepts[].tags.any" értékeinek nem üres tag⁷ stringeknek kell lenniük, legfeljebb 255 karakter hosszúsággal"concepts[].tags.any" értékei nem ismétlődhetnek"concepts[].tags.not" kulcs opcionális"concepts[].tags.not" értékének tömbnek kell lennie"concepts[].tags.not" értékeinek nem üres tag⁷ stringeknek kell lenniük, legfeljebb 255 karakter hosszúsággal"concepts[].tags.not" értékei nem ismétlődhetnek"concepts" értékhez tartoznia kell egy concept/<concepts.slug>/about.md fájlnak. A fájlra vonatkozó lintelési szabályok alább találhatók."concepts" értékhez tartoznia kell egy concept/<concepts.slug>/introduction.md fájlnak. A fájlra vonatkozó lintelési szabályok alább találhatók."concepts" értékhez tartoznia kell egy concept/<concepts.slug>/links.json fájlnak. A fájlra vonatkozó lintelési szabályok alább találhatók."key_features" kulcs opcionális"key_features" értékének olyan tömbnek kell lennie, amelynek hossza = 6"key_features[].icon" kulcs kötelező"key_features[].icon" értékének az előre definiált ikonértékek egyikét kell használnia"key_features[].title" kulcs kötelező"key_features[].title" értékének Sentence Case string⁴-nek kell lennie, legfeljebb 25 karakter hosszúsággal"key_features[].content" kulcs kötelező"key_features[].content" értékének nem üres string¹-nek kell lennie, legfeljebb 100 karakter hosszúsággal"tags" kulcs kötelező"tags" értékének stringtömbnek kell lennie"tags" értékei nem ismétlődhetnek"tags" értékeinek az előre definiált tagértékek egyikét kell használniuk"blurb" kulcs kötelező"blurb" értékének nem üres string¹-nek kell lennie, legfeljebb 350 karakter hosszúsággal"source" kulcs opcionális"source" értékének nem üres string¹-nek kell lennie"source_url" kulcs opcionális"source_url" értékének URL-nek kell lennie"authors" kulcs kötelező"authors" értékének nem üres tömbnek kell lennie"authors" értékeinek nem üres stringeknek¹ kell lenniük"authors" értékei nem ismétlődhetnek"authors" értékeit a rendszer kis- és nagybetűtől függetlenül kezeli"contributors" kulcs opcionális"contributors" értékének tömbnek kell lennie"contributors" értékeinek nem üres stringeknek¹ kell lenniük"contributors" értékei nem ismétlődhetnek"contributors" értékeit a rendszer kis- és nagybetűtől függetlenül kezeli"authors" vagy a "contributors" tömb egyikében szerepelhetnek (átfedés nem megengedett)"files.solution" kulcs kötelező"files.solution" értékének nem üres tömbnek kell lennie"files.solution" értékei nem ismétlődhetnek"files.test" kulcs kötelező"files.test" értékének nem üres tömbnek kell lennie"files.test" értékei nem ismétlődhetnek"files.exemplar" kulcs kötelező"files.exemplar" értékének nem üres tömbnek kell lennie"files.exemplar" értékei nem ismétlődhetnek"files.editor" kulcs opcionális"files.editor" értékének tömbnek kell lennie"files.editor" értékei nem ismétlődhetnek"files.invalidator" kulcs opcionális"files.invalidator" értékének tömbnek kell lennie"files.invalidator" értékei nem ismétlődhetnek"files.solution"-ban felsorolt fájloknak létezniük kell"files.test"-ban felsorolt fájloknak létezniük kell"files.exemplar"-ban felsorolt fájloknak létezniük kell"files.editor"-ban felsorolt fájloknak létezniük kell"files.invalidator"-ban felsorolt fájloknak létezniük kell"files.solution", "files.test", "files.exemplar" vagy "files.invalidator" tömbök egyikében szerepelhetnek (átfedés nem megengedett)
d vagy plsql, a "files.solution" és "files.test" fájlok átfedhetik egymást
"forked_from" kulcs opcionális"forked_from" értékének tömbnek kell lennie"forked_from" értékeinek <track-slug>/<exercise-slug> formátumú stringeknek kell lenniük (pl. fsharp/bird-watcher)"forked_from" értékeinek ténylegesen megvalósított feladatokra kell hivatkozniuk"forked_from" értékei nem ismétlődhetnek"language_versions" kulcs opcionális"language_versions" értékének stringnek kell lennie"representer.version" kulcs opcionális"representer.version" értékének olyan egész számnak kell lennie, amely >= 1"icon" kulcs opcionális"icon" értékének kebab-case string²-nek kell lennie## General, vagy ## X. <task> formátumúnak kell lennie, ahol az X megegyezik az instructions.md-ben szereplő feladatszám-címsorral## 1. Do X
config.json-jában szereplő valamelyik fogalom "concepts.slug" tulajdonságával."blurb" kulcs kötelező"blurb" értékének nem üres string¹-nek kell lennie, legfeljebb 350 karakter hosszúsággal"source" kulcs opcionális"source" értékének nem üres string¹-nek kell lennie"source_url" kulcs opcionális"source_url" értékének URL-nek kell lennie"authors" kulcs opcionális"authors" értékének tömbnek kell lennie"authors" értékeinek nem üres stringeknek¹ kell lenniük"authors" értékei nem ismétlődhetnek"authors" értékeit a rendszer kis- és nagybetűtől függetlenül kezeli"contributors" kulcs opcionális"contributors" értékének tömbnek kell lennie"contributors" értékeinek nem üres stringeknek¹ kell lenniük"contributors" értékei nem ismétlődhetnek"contributors" értékeit a rendszer kis- és nagybetűtől függetlenül kezeli"authors" vagy a "contributors" tömb egyikében szerepelhetnek (átfedés nem megengedett)"files.solution" kulcs kötelező"files.solution" értékének nem üres tömbnek kell lennie"files.solution" értékei nem ismétlődhetnek"files.test" kulcs kötelező"files.test" értékének nem üres tömbnek kell lennie"files.test" értékei nem ismétlődhetnek"files.example" kulcs kötelező"files.example" értékének nem üres tömbnek kell lennie"files.example" értékei nem ismétlődhetnek"files.editor" kulcs opcionális"files.editor" értékének tömbnek kell lennie"files.editor" értékei nem ismétlődhetnek"files.invalidator" kulcs opcionális"files.invalidator" értékének tömbnek kell lennie"files.invalidator" értékei nem ismétlődhetnek"files.solution"-ban felsorolt fájloknak létezniük kell"files.test"-ban felsorolt fájloknak létezniük kell"files.example"-ban felsorolt fájloknak létezniük kell"files.editor"-ban felsorolt fájloknak létezniük kell"files.invalidator"-ban felsorolt fájloknak létezniük kell"files.solution", "files.test", "files.example vagy "files.invalidator" tömbök egyikében szerepelhetnek (átfedés nem megengedett)
d vagy plsql, a "files.solution" és "files.test" fájlok átfedhetik egymást
"language_versions" kulcs opcionális"language_versions" értékének stringnek kell lennie"test_runner" kulcs opcionális"test_runner" értékének booleannak kell lennie"representer.version" kulcs opcionális"representer.version" értékének olyan egész számnak kell lennie, amely >= 1"icon" kulcs opcionális"icon" értékének kebab-case string²-nek kell lennieintroduction.md vagy egy testvérkönyvtár"introduction.authors" kulcs opcionális"introduction.authors" értékének tömbnek kell lennie"introduction.authors" értékeinek nem üres stringeknek¹ kell lenniük"introduction.authors" értékei nem ismétlődhetnek"introduction.authors" értékeit a rendszer kis- és nagybetűtől függetlenül kezeli"introduction.authors" tömb nem üres, akkor lennie kell egy nem üres introduction.md fájlnak"introduction.contributors" kulcs opcionális"introduction.contributors" értékének tömbnek kell lennie"introduction.contributors" értékeinek nem üres stringeknek¹ kell lenniük"introduction.contributors" értékei nem ismétlődhetnek"introduction.contributors" értékeit a rendszer kis- és nagybetűtől függetlenül kezeli"introduction.contributors" tömb nem üres, akkor lennie kell egy nem üres introduction.md fájlnak"introduction.authors" vagy az "introduction.contributors" tömb egyikében szerepelhetnek (átfedés nem megengedett)"approaches" kulcs opcionális, kivéve, ha jelen van egy testvérkönyvtár (amely a megközelítés fájljait tartalmazza)"approaches" értékének objektumok tömbjének kell lennie"approaches[].uuid" kulcs kötelező"approaches[].uuid" értékének egyedi, 4-es verziójú UUID stringnek⁶ kell lennie"approaches[].uuid" értéke fogalmonként soha nem változhat"approaches[].slug" kulcs kötelező"approaches[].slug" értékének kebab-case string²-nek kell lennie, legfeljebb 255 karakter hosszúsággal"approaches[].slug" értékéhez tartoznia kell egy megfelelő, nem üres <slug>/content.md fájlnak"approaches[].slug" értékéhez tartoznia kell egy megfelelő, nem üres <slug>/snippet.txt fájlnak"approaches[].title" kulcs kötelező"approaches[].title" értékének Title Case string³-nek kell lennie, legfeljebb 255 karakter hosszúsággal"approaches[].blurb" kulcs kötelező"approaches[].blurb" értékének nem üres string¹-nek kell lennie, legfeljebb 350 karakter hosszúsággal"approaches[].authors" kulcs kötelező"approaches[].authors" értékének nem üres tömbnek kell lennie"approaches[].authors" értékeinek nem üres stringeknek¹ kell lenniük"approaches[].authors" értékei nem ismétlődhetnek"approaches[].authors" értékeit a rendszer kis- és nagybetűtől függetlenül kezeli"approaches[].contributors" kulcs opcionális"approaches[].contributors" értékének tömbnek kell lennie"approaches[].contributors" értékeinek nem üres stringeknek¹ kell lenniük"approaches[].contributors" értékei nem ismétlődhetnek"approaches[].contributors" értékeit a rendszer kis- és nagybetűtől függetlenül kezeli"approaches[].authors" vagy az "approaches[].contributors" tömb egyikében szerepelhetnek (átfedés nem megengedett)"approaches[].tags" kulcs opcionális"approaches[].tags.all" kulcs opcionális, kivéve, ha az "approaches[].tags.any" üres"approaches[].tags.all" értékének tömbnek kell lennie"approaches[].tags.all" értékeinek nem üres tag⁷ stringeknek kell lenniük, legfeljebb 255 karakter hosszúsággal"approaches[].tags.all" értékei nem ismétlődhetnek"approaches[].tags.any" kulcs opcionális, kivéve, ha az "approaches[].tags.all" üres"approaches[].tags.any" értékének tömbnek kell lennie"approaches[].tags.any" értékeinek nem üres tag⁷ stringeknek kell lenniük, legfeljebb 255 karakter hosszúsággal"approaches[].tags.any" értékei nem ismétlődhetnek"approaches[].tags.not" kulcs opcionális"approaches[].tags.not" értékének tömbnek kell lennie"approaches[].tags.not" értékeinek nem üres tag⁷ stringeknek kell lenniük, legfeljebb 255 karakter hosszúsággal"approaches[].tags.not" értékei nem ismétlődhetnek"approaches[].slug" bejegyzés a .approaches/config.json fájlban"approaches[].slug" bejegyzés a .approaches/config.json fájlbanconfig.json fájljában található approaches.snippet_extension értéke adja"articles" kulcs opcionális, kivéve, ha jelen van egy testvérkönyvtár (amely a cikk fájljait tartalmazza)"articles" értékének objektumok tömbjének kell lennie"articles[].uuid" kulcs kötelező"articles[].uuid" értékének egyedi, 4-es verziójú UUID stringnek⁶ kell lennie"articles[].uuid" értéke fogalmonként soha nem változhat"articles[].slug" kulcs kötelező"articles[].slug" értékének kebab-case string²-nek kell lennie, legfeljebb 255 karakter hosszúsággal"articles[].slug" értékéhez tartoznia kell egy megfelelő, nem üres <slug>/content.md fájlnak"articles[].slug" értékéhez tartoznia kell egy megfelelő, nem üres <slug>/snippet.md fájlnak"articles[].title" kulcs kötelező"articles[].title" értékének Title Case string³-nek kell lennie, legfeljebb 255 karakter hosszúsággal"articles[].blurb" kulcs kötelező"articles[].blurb" értékének nem üres string¹-nek kell lennie, legfeljebb 350 karakter hosszúsággal"articles[].authors" kulcs kötelező"articles[].authors" értékének nem üres tömbnek kell lennie"articles[].authors" értékeinek nem üres stringeknek¹ kell lenniük"articles[].authors" értékei nem ismétlődhetnek"articles[].authors" értékeit a rendszer kis- és nagybetűtől függetlenül kezeli"articles[].contributors" kulcs opcionális"articles[].contributors" értékének tömbnek kell lennie"articles[].contributors" értékeinek nem üres stringeknek¹ kell lenniük"articles[].contributors" értékei nem ismétlődhetnek"articles[].contributors" értékeit a rendszer kis- és nagybetűtől függetlenül kezeli"articles[].authors" vagy az "articles[].contributors" tömb egyikében szerepelhetnek (átfedés nem megengedett)"articles[].slug" bejegyzés a .articles/config.json fájlban"articles[].slug" bejegyzés a .articles/config.json fájlban"[].url" tulajdonság kötelező"[].url" értékének URL-nek kell lennie"[].description" tulajdonság kötelező"[].description" értékének nem üres string¹-nek kell lennie"[].icon_url" tulajdonság opcionális"[].icon_url" értékének URL-nek kell lennie"blurb" kulcs kötelező"blurb" értékének nem üres string¹-nek kell lennie, legfeljebb 350 karakter hosszúsággal"authors" kulcs kötelező"authors" értékének tömbnek kell lennie"authors" értékeinek nem üres stringeknek¹ kell lenniük"authors" értékei nem ismétlődhetnek"authors" értékeit a rendszer kis- és nagybetűtől függetlenül kezeli"contributors" kulcs opcionális"contributors" értékének tömbnek kell lennie"contributors" értékeinek nem üres stringeknek¹ kell lenniük"contributors" értékei nem ismétlődhetnek"contributors" értékeit a rendszer kis- és nagybetűtől függetlenül kezeli"authors" vagy a "contributors" tömb egyikében szerepelhetnek (átfedés nem megengedett)Nem üres string: olyan string, amely legalább egy nem szóköz karaktert tartalmaz.
kebab-case string: olyan string, amely csak az [a-z0-9] tartományba eső karaktereket tartalmazza, amelyeket opcionálisan kötőjelek választanak el (pl. „two-fer”). Meg kell felelnie a következő reguláris kifejezésnek: ^[a-z0-9]+(-[a-z0-9]+)*$
Title Case string: nem üres string, amely megfelel az alábbi Chicago Manual of Style irányelveinek:
Sentence Case string: nem üres string, amely megfelel az alábbi irányelveknek:
Érvényes files minta: nem üres string¹, amely egy feladatban használt fájl helyét adja meg a feladat könyvtárához képest. A minta a következő helyőrzők egyikét használhatja:
%{kebab_slug}: a feladat kebab-case slugja (pl. bit-manipulation)%{snake_slug}: a feladat snake_case slugja (pl. bit_manipulation)%{camel_slug}: a feladat camelCase slugja (pl. bitManipulation)%{pascal_slug}: a feladat PascalCase slugja (pl. BitManipulation)Egyedi, 4-es verziójú UUID string: olyan string, amely az alábbi feltételek mindegyikének megfelel:
config.json fájljában csak egyszer fordul előconfig.json fájljában semcanonical-data.json fájljában sem^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
Például az alábbi UUID formátuma megfelelő:
d334ffe3-657e-4725-a950-290b284b6d9f
Megfelelő UUID generálásához futtathatod a configlet uuid parancsot.
Érvényes elemző tag: nem üres string¹, amely <category>:<thing> formátumban van megadva.
A <category> értékének a következők egyikének kell lennie:
paradigm (pl. paradigm:functional)technique (pl. technique:recursion)construct (pl. construct:bitwise-and)uses (pl. uses:DateTime.add_seconds)A <thing> értékének nem üres string¹-nek kell lennie.