From faeb1ec6e47f9b9c485c2c11a0373d51c44e024e Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Tue, 24 Aug 2021 17:00:52 +0200 Subject: [PATCH 01/23] using/legal: fix links --- using/legal/README.md | 8 ++++---- using/legal/accessibility.md | 2 +- using/legal/privacy-policy.md | 8 ++++---- using/legal/terms-of-service.md | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/using/legal/README.md b/using/legal/README.md index 7f649f75..80ab5143 100644 --- a/using/legal/README.md +++ b/using/legal/README.md @@ -2,7 +2,7 @@ The following pages contain important information that explains your rights and responsibilities when using Exercism. -- [Terms of Service](./legal/terms-of-service) -- [Privacy Policy](./legal/privacy-policy) -- [Cookie Policy](./legal/cookie-policy) -- [Accessibility Statement](./legal/accessibility) +- [Terms of Service](/docs/using/legal/terms-of-service) +- [Privacy Policy](/docs/using/legal/privacy-policy) +- [Cookie Policy](/docs/using/legal/cookie-policy) +- [Accessibility Statement](/docs/using/legal/accessibility) diff --git a/using/legal/accessibility.md b/using/legal/accessibility.md index 85b78444..7c20f915 100644 --- a/using/legal/accessibility.md +++ b/using/legal/accessibility.md @@ -1,6 +1,6 @@ # Accessibility -Exercism’s mission is to help as many people as possible. We want everyone to be able to use our services and strive to ensure that our content meets accessibility standards. +Exercism’s missionnn is to help as many people as possible. We want everyone to be able to use our services and strive to ensure that our content meets accessibility standards. We’ve created our website with the following aims: diff --git a/using/legal/privacy-policy.md b/using/legal/privacy-policy.md index 9612d3fb..30715c13 100644 --- a/using/legal/privacy-policy.md +++ b/using/legal/privacy-policy.md @@ -13,9 +13,9 @@ software coding skills. Exercism is run and managed by Exercism ("We", "Us"), a not-profit-company registered in the UK with Company Number 11733062. You might also want to read: -- Our [Terms of Service](../terms-of-service) -- Our community [Code of Conduct](../code-of-conduct) -- Our [Cookie Policy](../cookie-policy) +- Our [Terms of Service](/docs/using/legal/terms-of-service) +- Our community [Code of Conduct](/docs/using/legal/code-of-conduct) +- Our [Cookie Policy](/docs/using/legal/cookie-policy) Our approach to your privacy is very straightforward to understand. @@ -64,7 +64,7 @@ It is important to note that any content you upload to the site (including, but ### Cookies -Please refer to our [Cookie Policy](../cookie-policy) for details on the cookies we store. +Please refer to our [Cookie Policy](/docs/using/legal/cookie-policy) for details on the cookies we store. ## How we use the information we've collected diff --git a/using/legal/terms-of-service.md b/using/legal/terms-of-service.md index e434163f..f6674cfc 100644 --- a/using/legal/terms-of-service.md +++ b/using/legal/terms-of-service.md @@ -13,8 +13,8 @@ The following Terms of Service (these **Terms**) are an agreement between **Exer You might also want to read: -- Our [Privacy Policy](https://exercism.io/privacy) -- Our community [Code of Conduct](https://exercism.io/code-of-conduct) +- Our [Privacy Policy](/docs/using/legal/privacy-policy) +- Our community [Code of Conduct](/docs/using/legal/code-of-conduct) Our general approach should be fairly straightforward to understand: @@ -37,7 +37,7 @@ If any provision of these Terms is found to be illegal, void or unenforceable, t We reserve the right to modify these Terms at any time by posting revised Terms on https://exercism.io. These Terms apply to all who access or use our Platform, registered or otherwise. -Any personal information submitted to our Platform is subject to our [Privacy Policy](https://exercism.io/privacy). +Any personal information submitted to our Platform is subject to our [Privacy Policy](/docs/using/legal/privacy-policy). ### Definitions From 16114c5f2f43e8ece478b7f6e0ade9fef92c692d Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 09:50:49 +0200 Subject: [PATCH 02/23] Test --- using/legal/accessibility.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/using/legal/accessibility.md b/using/legal/accessibility.md index 7c20f915..4f5b2978 100644 --- a/using/legal/accessibility.md +++ b/using/legal/accessibility.md @@ -1,6 +1,6 @@ # Accessibility -Exercism’s missionnn is to help as many people as possible. We want everyone to be able to use our services and strive to ensure that our content meets accessibility standards. +Exercism’s missionnnnn is to help as many people as possible. We want everyone to be able to use our services and strive to ensure that our content meets accessibility standards. We’ve created our website with the following aims: From 62ef5be94fefadaaec668731d2299c3dc61622cb Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 10:07:15 +0200 Subject: [PATCH 03/23] Test --- using/legal/accessibility.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/using/legal/accessibility.md b/using/legal/accessibility.md index 4f5b2978..85b78444 100644 --- a/using/legal/accessibility.md +++ b/using/legal/accessibility.md @@ -1,6 +1,6 @@ # Accessibility -Exercism’s missionnnnn is to help as many people as possible. We want everyone to be able to use our services and strive to ensure that our content meets accessibility standards. +Exercism’s mission is to help as many people as possible. We want everyone to be able to use our services and strive to ensure that our content meets accessibility standards. We’ve created our website with the following aims: From b447055be846b966a8c1312434be5e0d7f2f3028 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 10:10:58 +0200 Subject: [PATCH 04/23] Test --- using/legal/accessibility.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/using/legal/accessibility.md b/using/legal/accessibility.md index 85b78444..7e0bd010 100644 --- a/using/legal/accessibility.md +++ b/using/legal/accessibility.md @@ -1,6 +1,6 @@ # Accessibility -Exercism’s mission is to help as many people as possible. We want everyone to be able to use our services and strive to ensure that our content meets accessibility standards. +My mission is to help as many people as possible. We want everyone to be able to use our services and strive to ensure that our content meets accessibility standards. We’ve created our website with the following aims: From 90b74521839920a078735b48eda4d4c40c679e24 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 10:14:12 +0200 Subject: [PATCH 05/23] Fix broken link --- using/legal/accessibility.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/using/legal/accessibility.md b/using/legal/accessibility.md index 7e0bd010..346ed88f 100644 --- a/using/legal/accessibility.md +++ b/using/legal/accessibility.md @@ -1,6 +1,6 @@ # Accessibility -My mission is to help as many people as possible. We want everyone to be able to use our services and strive to ensure that our content meets accessibility standards. +Exercism’s mission is to help as many people as possible. We want everyone to be able to use our services and strive to ensure that our content meets accessibility standards. We’ve created our website with the following aims: @@ -16,4 +16,4 @@ Our website is compliant with the Web Content Accessibility Guidelines version 2 ## Improving accessibility We are always keen to know if parts of our websites are not accessible. -If you find something that's not good enough, please open an issue on our [issue tracker](https://github.com/exercism/exercise) explaining what we need to improve. +If you find something that's not good enough, please open an issue on our [issue tracker](https://github.com/exercism/exercism/issues) explaining what we need to improve. From 8229c2f16d6c7f38d23d6e72357687758dfece3b Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 10:17:32 +0200 Subject: [PATCH 06/23] Test --- using/README.md | 4 ++-- using/feedback/README.md | 4 ++-- using/legal/README.md | 1 + using/report-abuse.md | 2 +- using/solving-exercises/README.md | 4 ++-- using/solving-exercises/working-locally.md | 2 +- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/using/README.md b/using/README.md index 7975f164..5b6c410a 100644 --- a/using/README.md +++ b/using/README.md @@ -2,5 +2,5 @@ These documents describe how to make the most of your experience on Exercism. -- [Getting Feedback](./feedback/README) -- [Solving Exercises](./solving-exercises/README) +- [Getting Feedback](/docs/using/feedback) +- [Solving Exercises](/docs/using/solving-exercises) diff --git a/using/feedback/README.md b/using/feedback/README.md index 4ae1467a..22a6fafd 100644 --- a/using/feedback/README.md +++ b/using/feedback/README.md @@ -2,8 +2,8 @@ There are two types of feedback you can get on a solution: -1. [Automated Feedback](./feedback/automated) -2. [Mentor Feedback](./feedback/mentor) +1. [Automated Feedback](/docs/using/feedback/automated) +2. [Mentor Feedback](/docs/using/feedback/mentor) ## What is the difference between Automated Feedback and Mentor Feedback? diff --git a/using/legal/README.md b/using/legal/README.md index 80ab5143..69fdb453 100644 --- a/using/legal/README.md +++ b/using/legal/README.md @@ -6,3 +6,4 @@ The following pages contain important information that explains your rights and - [Privacy Policy](/docs/using/legal/privacy-policy) - [Cookie Policy](/docs/using/legal/cookie-policy) - [Accessibility Statement](/docs/using/legal/accessibility) +- [Code of Conduct](/docs/using/legal/code-of-conduct) diff --git a/using/report-abuse.md b/using/report-abuse.md index 90495bbb..c8ed5b51 100644 --- a/using/report-abuse.md +++ b/using/report-abuse.md @@ -4,5 +4,5 @@ Feeling uncomfortable? Had a worrying or uncomfortable interaction with someone Please reach out to us and we will try to fix or resolve the issue respecting both you and your privacy. The best way to contact us is to email us at [abuse@exercism.io](mailto:abuse@exercism.io). -In addition to reporting abuse, community members are welcome to refer users to the [Code of Conduct](https://exercism.io/code-of-conduct) if they feel safe doing so. +In addittion to reporting abuse community members are welcome to refer users to the [Code of Conduct](/docs/using/legal/code-of-conduct) if they feel safe doing so. Keep in mind that this type of action is meant to resolve issues. As such, it is better to pose it as a question, eg. "Do you feel like that comment is aligned to Exercism's COC" rather than "You're in violation of the COC" diff --git a/using/solving-exercises/README.md b/using/solving-exercises/README.md index 52d463d7..aced45ac 100644 --- a/using/solving-exercises/README.md +++ b/using/solving-exercises/README.md @@ -4,8 +4,8 @@ The primary way in which Exercism helps you learn is by solving exercises. There are two ways to solve exercises on Exercism: -1. [Online via the website's in-browser editor](./solving-exercises/using-the-online-editor) -2. [On your local machine via the CLI](./solving-exercises/working-locally) +1. [Online via the website's in-browser editor](/docs/using/solving-exercises/using-the-online-editor) +2. [On your local machine via the CLI](/docs/using/solving-exercises/working-locally) ## Which option should I choose? diff --git a/using/solving-exercises/working-locally.md b/using/solving-exercises/working-locally.md index 00080548..52ef43fa 100644 --- a/using/solving-exercises/working-locally.md +++ b/using/solving-exercises/working-locally.md @@ -94,4 +94,4 @@ If you are still having trouble open an issue in exercism/cli on GitHub with the exercism troubleshoot ``` -You can open issues on [our issue tracker](https://github.com/exercism/exercism.io) and the community will try to help you. **Please ensure you have worked through the [Interactive Walkthrough](https://exercism.io/cli-walkthrough) before opening any issues.** +You can open issues on [our issue tracker](https://github.com/exercism/exercism/issues) and the community will try to help you. **Please ensure you have worked through the [Interactive Walkthrough](https://exercism.io/cli-walkthrough) before opening any issues.** From 2eaae7eefc7fd548031eefe850950bc8ccffa954 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 10:20:51 +0200 Subject: [PATCH 07/23] Test --- mentoring/README.md | 3 +++ mentoring/how_to_give_great_feedback.md | 2 +- using/legal/README.md | 6 +++--- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/mentoring/README.md b/mentoring/README.md index 468998e5..b5880e5f 100644 --- a/mentoring/README.md +++ b/mentoring/README.md @@ -1 +1,4 @@ # Mentoring on Exercism + +- [Choosing a Solution](/docs/mentoring/choosing-a-solution) +- [How to give great feedback](/docs/mentoring/how-to-give-great-feedback) diff --git a/mentoring/how_to_give_great_feedback.md b/mentoring/how_to_give_great_feedback.md index 88de1583..61a1f744 100644 --- a/mentoring/how_to_give_great_feedback.md +++ b/mentoring/how_to_give_great_feedback.md @@ -1,7 +1,7 @@ # How to give great feedback At this stage you should have chosen a solution to mentor. -If you haven't, work your way through [Choosing a solution to mentor](./choosing-a-solution) first, then come back here. +If you haven't, work your way through [Choosing a solution to mentor](/docs/mentoring/choosing-a-solution) first, then come back here. ## Your first feedback diff --git a/using/legal/README.md b/using/legal/README.md index 69fdb453..7c6a195a 100644 --- a/using/legal/README.md +++ b/using/legal/README.md @@ -2,8 +2,8 @@ The following pages contain important information that explains your rights and responsibilities when using Exercism. -- [Terms of Service](/docs/using/legal/terms-of-service) -- [Privacy Policy](/docs/using/legal/privacy-policy) -- [Cookie Policy](/docs/using/legal/cookie-policy) - [Accessibility Statement](/docs/using/legal/accessibility) - [Code of Conduct](/docs/using/legal/code-of-conduct) +- [Cookie Policy](/docs/using/legal/cookie-policy) +- [Privacy Policy](/docs/using/legal/privacy-policy) +- [Terms of Service](/docs/using/legal/terms-of-service) From fec7c6b62cc3808d40f1efee31712cb1724af9ff Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 11:02:55 +0200 Subject: [PATCH 08/23] Test --- building/configlet/README.md | 14 ++++----- building/configlet/generating-documents.md | 6 ++-- building/configlet/lint.md | 30 +++++++++---------- building/configlet/uuid.md | 2 +- building/markdown/README.md | 6 ++++ building/markdown/internal-linking.md | 2 +- building/markdown/widgets.md | 2 +- building/tooling/README.md | 6 ++-- building/tooling/analyzers/README.md | 8 ++--- .../analyzers/creating-from-scratch.md | 2 +- building/tooling/analyzers/docker.md | 4 +-- building/tooling/analyzers/interface.md | 2 +- building/tooling/representers/README.md | 10 +++---- .../representers/creating-from-scratch.md | 2 +- building/tooling/representers/docker.md | 4 +-- building/tooling/representers/interface.md | 4 +-- .../tooling/representers/normalization.md | 4 +-- building/tooling/test-runners/README.md | 6 ++-- .../test-runners/creating-from-scratch.md | 2 +- building/tooling/test-runners/docker.md | 4 +-- building/tooling/test-runners/interface.md | 6 ++-- building/tracks/concept-exercises.md | 12 ++++---- building/tracks/concepts.md | 6 ++-- building/tracks/config-json.md | 14 ++++----- 24 files changed, 82 insertions(+), 76 deletions(-) diff --git a/building/configlet/README.md b/building/configlet/README.md index e0f8f929..263cbaaa 100644 --- a/building/configlet/README.md +++ b/building/configlet/README.md @@ -4,28 +4,28 @@ ## Linting -The primary function of configlet is to do _linting_: checking if a track's configuration files are properly structured - both syntactically and semantically. Misconfigured tracks may not sync correctly, may look wrong on the website, or may present a suboptimal user experience, so configlet's guards play an important part in maintaining the integrity of Exercism. The full list of rules that are checked by the linter can be found [here](./lint). +The primary function of configlet is to do _linting_: checking if a track's configuration files are properly structured - both syntactically and semantically. Misconfigured tracks may not sync correctly, may look wrong on the website, or may present a suboptimal user experience, so configlet's guards play an important part in maintaining the integrity of Exercism. The full list of rules that are checked by the linter can be found [here](/docs/building/configlet/lint). ## Generating documents The secondary function of configlet is to generate documents. There are two types of documents that configlet can generate: -1. A Concept Exercise's [`introduction.md` file](./generating-documents#document-concept-exercises-introductionmd-file). -1. A Practice Exercise's [`instructions.md` file](./generating-documents#document-practice-exercises-instructionsmd-file). +1. A Concept Exercise's [`introduction.md` file](/docs/building/configlet/generating-documents#document-concept-exercises-introductionmd-file). +1. A Practice Exercise's [`instructions.md` file](/docs/building/configlet/generating-documents#document-practice-exercises-instructionsmd-file). -How these documents are generated can be found [here](./generating-documents). +How these documents are generated can be found [here](/docs/building/configlet/generating-documents). ## Syncing test data -The tertiary function of configlet is to sync test data. Each implemented [Practice Exercise](./tracks/practice-exercises) for which test data exists in the [problem-specifications repo](https://github.com/exercism/problem-specifications) _must_ contain a `.meta/tests.toml` file. The goal of this file is to keep track of which tests are implemented by the exercise. Tests in this file are identified by their UUID and each test has a boolean value that indicates if it is implemented by that exercise. +The tertiary function of configlet is to sync test data. Each implemented [Practice Exercise](/docs/building/tracks/practice-exercises) for which test data exists in the [problem-specifications repo](https://github.com/exercism/problem-specifications) _must_ contain a `.meta/tests.toml` file. The goal of this file is to keep track of which tests are implemented by the exercise. Tests in this file are identified by their UUID and each test has a boolean value that indicates if it is implemented by that exercise. -How to sync the contents of the `.meta/tests.toml` can be found [here](./sync) +How to sync the contents of the `.meta/tests.toml` can be found [here](/docs/building/configlet/sync) ## Generating UUIDs Exercises, tracks and concepts are identified by a UUID. -How to generate UUIDs can be found [here](./uuid). +How to generate UUIDs can be found [here](/docs/building/configlet/uuid). ## Usage diff --git a/building/configlet/generating-documents.md b/building/configlet/generating-documents.md index 62bd27fe..ef80bd6f 100644 --- a/building/configlet/generating-documents.md +++ b/building/configlet/generating-documents.md @@ -1,6 +1,6 @@ # Configlet generating documents -The secondary use of [configlet](../) is generating documents. +The secondary use of [configlet](/docs/building/configlet) is generating documents. ## Usage @@ -12,11 +12,11 @@ These are the documents that configlet can generate. ### Document: Concept Exercise's introduction.md file -Each [Concept Exercise](../concept-exercises.md) has an [`introduction.md` file](../concept-exercises.md#docsintroductionmd). Each exercise can have an optional [`introduction.md.tpl` file](../concept-exercises.md#docsintroductionmdtploptional). +Each [Concept Exercise](/docs/building/tracks/concept-exercises.md) has an [`introduction.md` file](/docs/building/tracks/concept-exercises.md#docsintroductionmd). Each exercise can have an optional [`introduction.md.tpl` file](/docs/building/tracks/concept-exercises.md#docsintroductionmdtploptional). The template file should be treated like a regular Markdown file but with one addition: the ability to specify placeholders. The following placeholders are supported: -- `%{concept:}`: refers to the concept's [`introduction.md` document](../concepts.md#fileintroductionmd) +- `%{concept:}`: refers to the concept's [`introduction.md` document](/docs/building/tracks/concepts#fileintroductionmd) When configlet detects that a Concept Exercise has an `introduction.md.tpl` file, it will generate a `introduction.md` file from it. The generated introduction will have the same contents as the template, expect for the placeholders, which will be replaced with the contents of the documents they refer to. diff --git a/building/configlet/lint.md b/building/configlet/lint.md index 1e5b38ce..5a47960a 100644 --- a/building/configlet/lint.md +++ b/building/configlet/lint.md @@ -1,6 +1,6 @@ # Linting -The primary use of [configlet](./) is linting: checking if a track's configuration files are properly structured - both syntactically and semantically. Misconfigured tracks may not sync correctly, may look wrong on the website, or may present a suboptimal user experience, so configlet's guards play an important part in maintaining the integrity of Exercism. +The primary use of [configlet](/docs/building/configlet) is linting: checking if a track's configuration files are properly structured - both syntactically and semantically. Misconfigured tracks may not sync correctly, may look wrong on the website, or may present a suboptimal user experience, so configlet's guards play an important part in maintaining the integrity of Exercism. ## Usage @@ -244,24 +244,24 @@ The `config.json` file should have the following checks: ### Rule: exercises/concept/<slug>/.docs/hints.md is valid -- The Markdown must conform to the [Markdown standards](../markdown/markdown.md) +- The Markdown must conform to the [Markdown standards](/docs/building/markdown/markdown) - All headings must be either `## General` or `## X. ` where `X` matches the task number heading in the `instructions.md` - All hints must be specified as Markdown list items - Links must be absolute (relative links are not allowed) ### Rule: exercises/concept/<slug>/.docs/instructions.md is valid -- The Markdown must conform to the [Markdown standards](../markdown/markdown.md) +- The Markdown must conform to the [Markdown standards](/docs/building/markdown/markdown) - All tasks must start with a level two heading that starts with a number followed by a dot: `## 1. Do X` - Links must be absolute (relative links are not allowed) ### Rule: exercises/concept/<slug>/.docs/instructions.md.tpl is valid (if present) -- Each [concept placeholders](../tracks/concept-exercises.md#file-docsintroductionmdtpl)'s concept must match the `"concepts.slug"` property of one of the concepts in the track's `config.json`. +- Each [concept placeholders](/docs/building/tracks/concept-exercises#file-docsintroductionmdtpl)'s concept must match the `"concepts.slug"` property of one of the concepts in the track's `config.json`. ### Rule: exercises/concept/<slug>/.docs/introduction.md is valid -- The Markdown must conform to the [Markdown standards](../markdown/markdown.md) +- The Markdown must conform to the [Markdown standards](/docs/building/markdown/markdown) - Links must be absolute (relative links are not allowed) ### Rule: exercises/practice/<slug>/.meta/config.json is valid @@ -310,29 +310,29 @@ The `config.json` file should have the following checks: ### Rule: exercises/shared/.docs/debug.md is valid - The file's presence is optional -- The Markdown must conform to the [Markdown standards](../markdown/markdown.md) +- The Markdown must conform to the [Markdown standards](/docs/building/markdown/markdown) - Links must be absolute (relative links are not allowed) ### Rule: exercises/shared/.docs/help.md is valid - The file's presence is required -- The Markdown must conform to the [Markdown standards](../markdown/markdown.md) +- The Markdown must conform to the [Markdown standards](/docs/building/markdown/markdown) - Links must be absolute (relative links are not allowed) ### Rule: exercises/shared/.docs/tests.md is valid - The file's presence is required -- The Markdown must conform to the [Markdown standards](../markdown/markdown.md) +- The Markdown must conform to the [Markdown standards](/docs/building/markdown/markdown) - Links must be absolute (relative links are not allowed) ### Rule: concepts/<slug>/about.md is valid -- The Markdown must conform to the [Markdown standards](../markdown/markdown.md) +- The Markdown must conform to the [Markdown standards](/docs/building/markdown/markdown) - Links must be absolute (relative links are not allowed) ### Rule: concepts/<slug>/introduction.md is valid -- The Markdown must conform to the [Markdown standards](../markdown/markdown.md) +- The Markdown must conform to the [Markdown standards](/docs/building/markdown/markdown) - Links must be absolute (relative links are not allowed) ### Rule: concept/<slug>/links.json is valid @@ -368,28 +368,28 @@ The `config.json` file should have the following checks: - The file's presence is required - The file's contents must be non-blank -- The Markdown must conform to the [Markdown standards](../markdown/markdown.md) +- The Markdown must conform to the [Markdown standards](/docs/building/markdown/markdown) - Links must be absolute (relative links are not allowed) ### Rule: docs/INSTALLATION.md is valid - The file's presence is required - The file's contents must be non-blank -- The Markdown must conform to the [Markdown standards](../markdown/markdown.md) +- The Markdown must conform to the [Markdown standards](/docs/building/markdown/markdown) - Links must be absolute (relative links are not allowed) ### Rule: docs/LEARNING.md is valid - The file's presence is required - The file's contents must be non-blank -- The Markdown must conform to the [Markdown standards](../markdown/markdown.md) +- The Markdown must conform to the [Markdown standards](/docs/building/markdown/markdown) - Links must be absolute (relative links are not allowed) ### Rule: docs/RESOURCES.md is valid - The file's presence is required - The file's contents must be non-blank -- The Markdown must conform to the [Markdown standards](../markdown/markdown.md) +- The Markdown must conform to the [Markdown standards](/docs/building/markdown/markdown) - Links must be absolute (relative links are not allowed) ### Rule: docs/SNIPPET.txt is valid @@ -401,7 +401,7 @@ The `config.json` file should have the following checks: - The file's presence is required - The file's contents must be non-blank -- The Markdown must conform to the [Markdown standards](../markdown/markdown.md) +- The Markdown must conform to the [Markdown standards](/docs/building/markdown/markdown) - Links must be absolute (relative links are not allowed) ## Glossary diff --git a/building/configlet/uuid.md b/building/configlet/uuid.md index 138e17ce..4cdf14bd 100644 --- a/building/configlet/uuid.md +++ b/building/configlet/uuid.md @@ -1,6 +1,6 @@ # Generating UUIDs -Exercises, tracks and concepts are identified by a UUID. [configlet](./) can generate new, valid UUIDs. +Exercises, tracks and concepts are identified by a UUID. [configlet](/docs/building/configlet) can generate new, valid UUIDs. ## Usage diff --git a/building/markdown/README.md b/building/markdown/README.md index e69de29b..38bc446c 100644 --- a/building/markdown/README.md +++ b/building/markdown/README.md @@ -0,0 +1,6 @@ +# Markdown + +- [Internal Linking](/docs/building/markdown/internal-linking) +- [Markdown Specification](/docs/building/markdown/markdown) +- [Exercism's Style Guide](/docs/building/markdown/style-guide) +- [Widgets](/docs/building/markdown/widgets) diff --git a/building/markdown/internal-linking.md b/building/markdown/internal-linking.md index e5cde236..8830fd33 100644 --- a/building/markdown/internal-linking.md +++ b/building/markdown/internal-linking.md @@ -21,4 +21,4 @@ We do not currently support relative URLs (e.g. those beginning with `./` or `.. Rather than using normal links, you might like to render Widgets. These are generally used at the end of a document to suggest extra reading or good exercises to learn something from. -See [the Widgets documentation](./widgets.md) for more details. +See [the Widgets documentation](/docs/building/markdown/widgets) for more details. diff --git a/building/markdown/widgets.md b/building/markdown/widgets.md index cac7ab2f..8a1b36ec 100644 --- a/building/markdown/widgets.md +++ b/building/markdown/widgets.md @@ -12,7 +12,7 @@ They also have user-contextual tooltips such as this: You may like to render these widgets yourself in Markdown documents, for example at the end of a document to suggest extra reading or good exercises to learn something from. -**Note:** You can also use normal links for inline text, which will have the tooltips added. See [the Internal Linking documentation](./internal-linking.md) for more details. +**Note:** You can also use normal links for inline text, which will have the tooltips added. See [the Internal Linking documentation](/docs/building/markdown/internal-linking) for more details. ## Usage diff --git a/building/tooling/README.md b/building/tooling/README.md index 88e89e19..3fbeb749 100644 --- a/building/tooling/README.md +++ b/building/tooling/README.md @@ -9,6 +9,6 @@ All tooling is deployed using the same Docker workflow. There are currently three pieces of tooling: -- **[Test Runners](./test-runners)** -- **[Representers](./representers)** -- **[Analyzers](./analyzers)** +- **[Test Runners](/docs/building/tooling/test-runners)** +- **[Representers](/docs/building/tooling/representers)** +- **[Analyzers](/docs/building/tooling/analyzers)** diff --git a/building/tooling/analyzers/README.md b/building/tooling/analyzers/README.md index e9358678..303ebd14 100644 --- a/building/tooling/analyzers/README.md +++ b/building/tooling/analyzers/README.md @@ -11,10 +11,10 @@ Each Analyzer lives in the Exercism GitHub organization in a repository named `$ You can explore the different Analyzers [here](https://github.com/exercism?q=-analyzer). If you would like to get involved in helping with an existing Analyzer, please open an issue in its repository asking if there is somewhere you can help. -If you would like to create an Analyzer for a language that currently does not have one, please follow the [creating a Analyzer](creating-from-scratch.md) instructions. +If you would like to create an Analyzer for a language that currently does not have one, please follow the [creating a Analyzer](/docs/building/tooling/analyzers/creating-from-scratch) instructions. This directory contains the following information: -- **[`creating-from-scratch.md`](./creating-from-scratch.md):** Information on creating a Analyzer from scratch. -- **[`interface.md`](./interface.md):** The Analyzer interface. -- **[`docker.md`](./docker.md):** How to build a Docker image with Docker for local testing and deployment. +- **[`creating-from-scratch.md`](/docs/building/tooling/analyzers/creating-from-scratch):** Information on creating a Analyzer from scratch. +- **[`interface.md`](/docs/building/tooling/analyzers/interface):** The Analyzer interface. +- **[`docker.md`](/docs/building/tooling/analyzers/docker):** How to build a Docker image with Docker for local testing and deployment. diff --git a/building/tooling/analyzers/creating-from-scratch.md b/building/tooling/analyzers/creating-from-scratch.md index 97f207da..485f55d7 100644 --- a/building/tooling/analyzers/creating-from-scratch.md +++ b/building/tooling/analyzers/creating-from-scratch.md @@ -5,7 +5,7 @@ Firstly, thank you for your interest in creating an Analyzer! These are the steps to get going: 1. Check [our repository list for an existing `...-analyzer`](https://github.com/exercism?q=-analyzer) to ensure that one doesn't already exist. -2. Scan the [contents of this directory](./) to ensure you are comfortable with the idea of creating an Analyzer. +2. Scan the [contents of this directory](/docs/building/tooling/analyzers) to ensure you are comfortable with the idea of creating an Analyzer. 3. Open an issue at [exercism/exercism][exercism-repo] introducing yourself and telling us which language you'd like to create a Analyzer for. We have an incredibly friendly and supportive community who will be happy to help you as you work through this! If you get stuck, please speak to us on Slack or create new issues at [exercism/exercism][exercism-repo] as needed 🙂 diff --git a/building/tooling/analyzers/docker.md b/building/tooling/analyzers/docker.md index 19e92867..c6872b83 100644 --- a/building/tooling/analyzers/docker.md +++ b/building/tooling/analyzers/docker.md @@ -2,7 +2,7 @@ Our Analyzers are deployed as Docker images. -Please read the [general Tooling docker information](../docker.md) to familiarize yourself with how these work. +Please read the [general Tooling docker information](/docs/building/tooling/analyzers/docker) to familiarize yourself with how these work. When we run the Analyzer's container we execute a `run.sh` script. To ensure this works properly the following rules must be following: @@ -10,4 +10,4 @@ To ensure this works properly the following rules must be following: - The working directory should be `/opt/analyzer`. - There should be a `/opt/analyzer/bin/run.sh` script that can be called with 3 parameters: the `exercise slug`, the path to the `solution folder`, and the path to the `output folder`. - For more information see [The Interface](./interface.md). + For more information see [The Interface](/docs/building/tooling/analyzers/interface). diff --git a/building/tooling/analyzers/interface.md b/building/tooling/analyzers/interface.md index 54276036..ec6575cb 100644 --- a/building/tooling/analyzers/interface.md +++ b/building/tooling/analyzers/interface.md @@ -4,7 +4,7 @@ All interactions with the Exercism website are handled automatically. Analyzers ## Execution -- An Analyzer should provide an executable script. You can find more information in the [docker.md](../docker.md) file. +- An Analyzer should provide an executable script. You can find more information in the [docker.md](/docs/building/tooling/analyzers/docker) file. - The script will receive three parameters: - The slug of the exercise (e.g. `two-fer`). - A path to a directory containing the submitted file(s) (with a trailing slash). diff --git a/building/tooling/representers/README.md b/building/tooling/representers/README.md index ce9c6fd1..2fea8030 100644 --- a/building/tooling/representers/README.md +++ b/building/tooling/representers/README.md @@ -14,7 +14,7 @@ A _Representer_ is a bit of code that has the single responsibility of taking a A _representation_ is an extraction of a solution to its essence with normalized names, comments, spacing, etc. but still uniquely identifying the approach taken. Two different ways of solving the same exercise must not have the same representation. The simplest Representer is one that merely returns the solution's source code. -However, as our goal is to have the same representation for solutions only differing in non-essential details, the Representer should apply one or more [normalizations](./normalization.md). +However, as our goal is to have the same representation for solutions only differing in non-essential details, the Representer should apply one or more [normalizations](/docs/building/tooling/representers/normalization). Once we have a normalized representation for a solution, a team of vetted mentors will look at the solution and comment on it (if needed). These comments will then automatically be submitted to each new solution with the same representation. @@ -33,7 +33,7 @@ If you would like to create a Representer for a language that currently does not This directory contains the following information: -- **[`creating-from-scratch.md`](./creating-from-scratch.md):** Information on creating a Representer from scratch. -- **[`interface.md`](./interface.md):** The Representer interface. -- **[`normalization.md`](./normalization.md):** Information on how to normalize representations for the highest efficiency. -- **[`docker.md`](./docker.md):** How to build a Docker image with Docker for local testing and deployment. +- **[`creating-from-scratch.md`](/docs/building/tooling/representers/creating-from-scratch):** Information on creating a Representer from scratch. +- **[`interface.md`](/docs/building/tooling/representers/interface):** The Representer interface. +- **[`normalization.md`](/docs/building/tooling/representers/normalization):** Information on how to normalize representations for the highest efficiency. +- **[`docker.md`](/docs/building/tooling/representers/docker):** How to build a Docker image with Docker for local testing and deployment. diff --git a/building/tooling/representers/creating-from-scratch.md b/building/tooling/representers/creating-from-scratch.md index 9871fb5c..8e9fdf64 100644 --- a/building/tooling/representers/creating-from-scratch.md +++ b/building/tooling/representers/creating-from-scratch.md @@ -5,7 +5,7 @@ Firstly, thank you for your interest in creating a Representer! These are the steps to get going: 1. Check [our repository list for an existing `...-representer`](https://github.com/exercism?q=-representer) to ensure that one doesn't already exist. -2. Scan the [contents of this directory](./) to ensure you are comfortable with the idea of creating an Representer. +2. Scan the [contents of this directory](/docs/building/tooling/representers) to ensure you are comfortable with the idea of creating an Representer. 3. Open an issue at [exercism/exercism][exercism-repo] introducing yourself and telling us which language you'd like to create a Representer for. We have an incredibly friendly and supportive community who will be happy to help you as you work through this! If you get stuck, please speak to us on Slack or create new issues at [exercism/exercism][exercism-repo] as needed 🙂 diff --git a/building/tooling/representers/docker.md b/building/tooling/representers/docker.md index 7e06fc29..92af5ac5 100644 --- a/building/tooling/representers/docker.md +++ b/building/tooling/representers/docker.md @@ -2,7 +2,7 @@ Our Representers are deployed as Docker images. -Please read the [general Tooling docker information](../docker.md) to familiarize yourself with how these work. +Please read the [general Tooling docker information](/docs/building/tooling/representers/docker) to familiarize yourself with how these work. When we run the Representer's container we execute a `run.sh` script. To ensure this works properly the following rules must be following: @@ -10,4 +10,4 @@ To ensure this works properly the following rules must be following: - The working directory should be `/opt/representer`. - There should be a `/opt/representer/bin/run.sh` script that can be called with 3 parameters: the `exercise slug`, the path to the `solution folder`, and the path to the `output folder`. - For more information see [The Interface](./interface.md). + For more information see [The Interface](/docs/building/tooling/representers/interface). diff --git a/building/tooling/representers/interface.md b/building/tooling/representers/interface.md index 1f31ff6c..127d9afc 100644 --- a/building/tooling/representers/interface.md +++ b/building/tooling/representers/interface.md @@ -1,10 +1,10 @@ # The Representer Interface -All interactions with the Exercism website are handled automatically. Representers have the single responsibility of taking a solution and returning a representation of it. See the [introduction](./introduction.md) for more information. +All interactions with the Exercism website are handled automatically. Representers have the single responsibility of taking a solution and returning a representation of it. See the [introduction](/docs/building/tooling/representers#introduction) for more information. ## Execution -- A Representer should provide an executable script. You can find more information in the [docker.md](../docker.md) file. +- A Representer should provide an executable script. You can find more information in the [docker.md](/docs/building/tooling/representers/docker) file. - The script will receive three parameters: - The slug of the exercise (e.g. `two-fer`). - A path to a directory containing the submitted file(s) (with a trailing slash). diff --git a/building/tooling/representers/normalization.md b/building/tooling/representers/normalization.md index 30647b51..ef9cafcf 100644 --- a/building/tooling/representers/normalization.md +++ b/building/tooling/representers/normalization.md @@ -5,7 +5,7 @@ To have solutions with non-essential differences have the same representation, t - Parse the solution's code into an Abstract Syntax Tree (AST) - Apply normalizations to the AST - Convert the normalized AST to a string -- Write the normalized AST string to a file named `representation.txt` (see [the interface](./interface)) +- Write the normalized AST string to a file named `representation.txt` (see [the interface](/docs/building/tooling/representers/interface)) Note though, that the representation doesn't _have_ to be an AST, it could be regular (normalized) code, whichever works best for your track. @@ -17,7 +17,7 @@ Note 2: the code for these guidelines will be in C#, but the guidelines are lang ## Normalize identifiers -To allow for representations to be naming-agnostic, user-defined names (such as variables, functions, etc) can be replaced with placeholders. In this case, a `mapping.json` should be produced (see [the interface](./interface.md)). +To allow for representations to be naming-agnostic, user-defined names (such as variables, functions, etc) can be replaced with placeholders. In this case, a `mapping.json` should be produced (see [the interface](/docs/building/tooling/representers/interface)). It is important to note that all identical names must be replaced with the same placeholder, irrespective of scope. diff --git a/building/tooling/test-runners/README.md b/building/tooling/test-runners/README.md index 86118ac9..6ab2abc8 100644 --- a/building/tooling/test-runners/README.md +++ b/building/tooling/test-runners/README.md @@ -20,6 +20,6 @@ If you would like to create a Test Runner for a language that currently does not This directory contains the following information: -- **[`creating-from-scratch.md`](./creating-from-scratch.md):** Information on creating a Test Runner from scratch. -- **[`interface.md`](./interface.md):** The Test Runner interface. -- **[`docker.md`](./docker.md):** How to build a Docker image with Docker for local testing and deployment. +- **[`creating-from-scratch.md`](/docs/building/tooling/test-runners/creating-from-scratch):** Information on creating a Test Runner from scratch. +- **[`interface.md`](/docs/building/tooling/test-runners/interface):** The Test Runner interface. +- **[`docker.md`](/docs/building/tooling/test-runners/docker):** How to build a Docker image with Docker for local testing and deployment. diff --git a/building/tooling/test-runners/creating-from-scratch.md b/building/tooling/test-runners/creating-from-scratch.md index 7a407e4c..896df8e6 100644 --- a/building/tooling/test-runners/creating-from-scratch.md +++ b/building/tooling/test-runners/creating-from-scratch.md @@ -5,7 +5,7 @@ Firstly, thank you for your interest in creating a Test Runner! These are the steps to get going: 1. Check [our repository list for an existing `...-test-runner`](https://github.com/exercism?q=-test-runner) to ensure that one doesn't already exist. -2. Scan the [contents of this directory](./) to ensure you are comfortable with the idea of creating an Test Runner. +2. Scan the [contents of this directory](/docs/building/tooling/test-runners) to ensure you are comfortable with the idea of creating an Test Runner. 3. Open an issue at [exercism/exercism][exercism-repo] introducing yourself and telling us which language you'd like to create a Test Runner for. We have an incredibly friendly and supportive community who will be happy to help you as you work through this! If you get stuck, please speak to us on Slack or create new issues at [exercism/exercism][exercism-repo] as needed 🙂 diff --git a/building/tooling/test-runners/docker.md b/building/tooling/test-runners/docker.md index 31734cc0..48eaadf3 100644 --- a/building/tooling/test-runners/docker.md +++ b/building/tooling/test-runners/docker.md @@ -2,7 +2,7 @@ Our Test Runners are deployed as Docker images. -Please read the [general Tooling docker information](../docker.md) to familiarize yourself with how these work. +Please read the [general Tooling docker information](/docs/building/tooling/test-runners/docker) to familiarize yourself with how these work. When we run the Test Runner's container we execute a `run.sh` script. To ensure this works properly the following rules must be following: @@ -10,4 +10,4 @@ To ensure this works properly the following rules must be following: - The working directory should be `/opt/test-runner`. - There should be a `/opt/test-runner/bin/run.sh` script that can be called with 3 parameters: the `exercise slug`, the path to the `solution folder`, and the path to the `output folder`. - For more information see [The Interface](./interface.md). + For more information see [The Interface](/docs/building/tooling/test-runners/interface). diff --git a/building/tooling/test-runners/interface.md b/building/tooling/test-runners/interface.md index 36eb8880..a771b601 100644 --- a/building/tooling/test-runners/interface.md +++ b/building/tooling/test-runners/interface.md @@ -5,7 +5,7 @@ All interactions with the Exercism website are handled automatically and are not ## Execution -- A Test Runner should provide an executable script. You can find more information in the [docker.md](./docker.md) file. +- A Test Runner should provide an executable script. You can find more information in the [docker.md](/docs/building/tooling/test-runners/docker) file. - The script will receive three parameters: - The slug of the exercise (e.g. `two-fer`). - A path to an input directory (with a trailing slash) containing the submitted solution file(s) and any other exercise file(s). This directory should be considered as read-only. It's technically possible to write into it but it's better to use `/tmp` for temporary files (e.g. for compiling sources). @@ -154,7 +154,7 @@ At the moment, only Concept Exercises have well-defined tasks that you can link For example, consider the following `instructions.md` file: -```` +``` # Instructions You're going to write some code to help Lucian cook an exquisite lasagna from his favorite cook book. @@ -166,7 +166,7 @@ You're going to write some code to help Lucian cook an exquisite lasagna from hi ## 2. Calculate the remaining oven time in minutes ... -```` +``` These instructions defined two tasks: diff --git a/building/tracks/concept-exercises.md b/building/tracks/concept-exercises.md index 5b1cfe75..7dbe78a7 100644 --- a/building/tracks/concept-exercises.md +++ b/building/tracks/concept-exercises.md @@ -4,7 +4,7 @@ ## Metadata -Concept Exercise metadata is defined in the `exercises.concept` key in the [config.json file](./config-json.md#concept-exercises). The metadata defines the exercise's UUID, slug and more. +Concept Exercise metadata is defined in the `exercises.concept` key in the [config.json file](/docs/building/tracks/config-json#concept-exercises). The metadata defines the exercise's UUID, slug and more. ### Example @@ -26,7 +26,7 @@ Concept Exercise metadata is defined in the `exercises.concept` key in the [conf ## Files -Each Concept Exercise has its own directory within the track's `exercises/concept` directory. The name of the Concept Exercise directory must match the `slug` property of the Concept Exercise, as defined in the [config.json file](./config-json.md#concept-exercises). +Each Concept Exercise has its own directory within the track's `exercises/concept` directory. The name of the Concept Exercise directory must match the `slug` property of the Concept Exercise, as defined in the [config.json file](/docs/building/tracks/config-json#concept-exercises). A Concept Exercise has three types of files: @@ -124,11 +124,11 @@ my_first_variable = SomeComplexObject.new **Presence:** Optional -The `introduction.md` document introduces the exercise's concept(s) to the student. Each concept also has its _own_ [`introduction.md` document](./concepts#fileintroductionmd), which is not shown outside the context of an exercise. +The `introduction.md` document introduces the exercise's concept(s) to the student. Each concept also has its _own_ [`introduction.md` document](/docs/building/tracks/concepts#fileintroductio), which is not shown outside the context of an exercise. If the concept's introduction should be included verbatim in the exercise's introduction, an `introduction.md.tpl` file can be used. This file allows referring to concept introductions through placeholders: `%{concept:}`. -[configlet](./configlet/generating.md) can generate an `introduction.md` file from a template file. The generated file will have the concept placeholders replaced by the concept's `introduction.md` contents. +[configlet](/docs/building/tracks/configlet/generating-documents) can generate an `introduction.md` file from a template file. The generated file will have the concept placeholders replaced by the concept's `introduction` contents. The Exercism website only knows about the `introduction.md` document. It is the track's responsibility to generate the `introduction.md` when a template file is used. @@ -451,7 +451,7 @@ Some languages require additional files for the tests to run. Example of these a ## Shared files -Some files are not specific to individual exercises, but are instead applicable to _all_ exercises. Check the [documentation](./shared-files.md) for more information. +Some files are not specific to individual exercises, but are instead applicable to _all_ exercises. Check the [documentation](/docs/building/tracks/shared-files) for more information. ## Naming @@ -493,6 +493,6 @@ Disallowed slugs: ## Presentation -There is a difference in how exercise documentation is presented to the student when using the in-browser editor versus using the CLI. See [this document](./presentation.md) for more information. +There is a difference in how exercise documentation is presented to the student when using the in-browser editor versus using the CLI. See [this document](/docs/building/tracks/presentation) for more information. [kebab-case]: https://en.wiktionary.org/wiki/kebab_case diff --git a/building/tracks/concepts.md b/building/tracks/concepts.md index 7f23c20f..cb45f55e 100644 --- a/building/tracks/concepts.md +++ b/building/tracks/concepts.md @@ -4,7 +4,7 @@ Concepts are the things that a programmer would need to understand to be fluent ## Metadata -Concept metadata is defined in the `concepts` key in the [config.json file](./config-json.md#concepts). The metadata defines the concept's UUID, slug and more. +Concept metadata is defined in the `concepts` key in the [config.json file](/docs/building/tracks/config-json#concepts). The metadata defines the concept's UUID, slug and more. ### Example @@ -22,7 +22,7 @@ Concept metadata is defined in the `concepts` key in the [config.json file](./co ## Files -Each concept has its own directory within the track's `concepts` directory. The name of the concept's directory must match the `slug` property of the concept, as defined in the [config.json file](./config-json.md#concept). +Each concept has its own directory within the track's `concepts` directory. The name of the concept's directory must match the `slug` property of the concept, as defined in the [config.json file](/docs/building/tracks/config-json#concept). A Concept has two types of files: @@ -58,7 +58,7 @@ concepts **Presence:** Required -After completing the corresponding Concept Exercise (otherwise known as "learning" a Concept), the Concept page will show the contents of the `about.md` file instead of the `introduction.md` file. The `about.md` file should provide students with comprehensive information on what they need to know to be fluent in the concept. At a minimum, this file should contain all information that is introduced in the Concepts' [`introduction.md` document](./concepts.md#file-introductionmd). +After completing the corresponding Concept Exercise (otherwise known as "learning" a Concept), the Concept page will show the contents of the `about.md` file instead of the `introduction.md` file. The `about.md` file should provide students with comprehensive information on what they need to know to be fluent in the concept. At a minimum, this file should contain all information that is introduced in the Concepts' [`introduction.md` document](/docs/building/tracks/concepts#file-introductio). If the Concept introduces new syntax, syntax samples should be included. The student should not have to follow a lot of links to gain the knowledge that the file tries to convey. Instead the `about.md` should contain enough information to be understandable within its context. diff --git a/building/tracks/config-json.md b/building/tracks/config-json.md index 052cc143..c6a97e05 100644 --- a/building/tracks/config-json.md +++ b/building/tracks/config-json.md @@ -16,10 +16,10 @@ The following top-level properties contain general track metadata: - `indent_size`: the indentation size as an integer (e.g. `4`) (required) - `highlightjs_language`: the language identifier for Highlight.js (see the [full list of identifiers](https://github.com/highlightjs/highlight.js/blob/main/SUPPORTED_LANGUAGES.md)) (required) - `status`: an object describing which v3 features should be enabled: (required) - - `concept_exercises`: a `boolean` value indicating if [Concept Exercises](./concept-exercises.md) have been built (required) - - `test_runner`: a `boolean` value indicating if a [test runner](../track-tooling/test-runners/README.md) has been implemented (required) - - `representer`: a `boolean` value indicating if a [representer](../track-tooling/representers/README.md) has been implemented (required) - - `analyzer`: a `boolean` value indicating if an [analyzer](../track-tooling/analyzers/README.md) has been implemented (required) + - `concept_exercises`: a `boolean` value indicating if [Concept Exercises](/docs/building/tracks/concept-exercises) have been built (required) + - `test_runner`: a `boolean` value indicating if a [test runner](/docs/building/tooling/test-runners) has been implemented (required) + - `representer`: a `boolean` value indicating if a [representer](/docs/building/tooling/representers) has been implemented (required) + - `analyzer`: a `boolean` value indicating if an [analyzer](/docs/building/tooling/analyzers) has been implemented (required) - `files`: The patterns for the locations of the files used in an exercise, relative to the exercise's directory. (optional) - `solution`: stub implementation file(s) pattern (optional) - `test`: test file(s) pattern (optional) @@ -31,7 +31,7 @@ The following top-level properties contain general track metadata: ### Files -This key is used to specify track-wide file locations. Rather than maintainers having to manually set the `files` key in the _exercises_' `config.json` files, support will be added to [configlet](./README.md) to use these track-wide patterns to automatically populate the exercises' `files` key. +This key is used to specify track-wide file locations. Rather than maintainers having to manually set the `files` key in the _exercises_' `config.json` files, support will be added to [configlet](/docs/building/configlet) to use these track-wide patterns to automatically populate the exercises' `files` key. The file patterns defined in the `files` object support the following placeholders: @@ -40,7 +40,7 @@ The file patterns defined in the `files` object support the following placeholde - `%{camel_slug}`: the `camelCase` exercise slug (e.g. `bitManipulation`) - `%{pascal_slug}`: the `PascalCase` exercise slug (e.g. `BitManipulation`) -Support will be added to [configlet](./README.md) to use these pattern to populate the `files` key in an exercise's `.meta/config.json` file. +Support will be added to [configlet](/docs/building/configlet) to use these pattern to populate the `files` key in an exercise's `.meta/config.json` file. ### Example @@ -199,7 +199,7 @@ The "Recommended Order" of the Practice Exercises on the website corresponds wit ### Foregone exercises -If a track knows that it doesn't want to implement an exercise defined in the [Problem Specifications repo](https://github.com/exercism/problem-specifications), the slug of that exercise can be added to the `exercises.foregone` key. [configlet](./configlet/README.md) will ignore foregone exercises when outputting the track's unimplemented exercises. +If a track knows that it doesn't want to implement an exercise defined in the [Problem Specifications repo](https://github.com/exercism/problem-specifications), the slug of that exercise can be added to the `exercises.foregone` key. [configlet](/docs/building/configlet) will ignore foregone exercises when outputting the track's unimplemented exercises. Reasons for why an track might _not_ want to implement an exercise could be: From 4c615a828d159f9b8aca1795ba27cc1089fbf3b2 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 11:17:11 +0200 Subject: [PATCH 09/23] Fix exercise implementation link --- building/configlet/lint.md | 4 ++-- .../actor-model.take-a-number-machine.md | 2 +- .../anonymous-functions.bomb-defuser.md | 2 +- .../stories/arrays.elyses-enchantments.md | 10 +++++----- .../tracks/stories/arrays.garden-bird-count.md | 6 +++--- building/tracks/stories/basics.lasagna.md | 18 +++++++++--------- .../tracks/stories/binary-data.file-sniffer.md | 2 +- building/tracks/stories/booleans.pac-man.md | 4 ++-- .../tracks/stories/booleans.rpg-quest-logic.md | 8 ++++---- .../tracks/stories/classes.amusement-park.md | 2 +- .../stories/classes.remote-control-car.md | 4 ++-- .../tracks/stories/closures.design-company.md | 2 +- .../stories/conditionals.vehicle-purchase.md | 4 ++-- .../constructors.remote-control-car-race.md | 2 +- .../stories/datetimes.appointment-scheduler.md | 4 ++-- .../stories/enumerable.fashion-boutique.md | 4 ++-- .../tracks/stories/enums.log-line-parser.md | 8 ++++---- .../stories/errors.instruments-of-texas.md | 2 +- .../flag-enums.website-account-permissions.md | 2 +- .../floating-point-numbers.savings-account.md | 4 ++-- .../tracks/stories/functions.lasagna-master.md | 2 +- .../higher-order-functions.secret-agent.md | 2 +- .../stories/inheritance.role-playing-game.md | 2 +- .../tracks/stories/io.rpg-character-sheet.md | 2 +- .../stories/lambda-function.secret-device.md | 2 +- building/tracks/stories/lists.language-list.md | 6 +++--- building/tracks/stories/loops.bartender.md | 2 +- .../tracks/stories/maps.high-score-board.md | 4 ++-- .../stories/matrices.exercism-logo-matrix.md | 2 +- .../method-overloading.rpg-game-master.md | 2 +- .../tracks/stories/nullability.name-badges.md | 6 +++--- .../stories/numbers.car-production-line.md | 4 ++-- .../tracks/stories/numbers.freelancer-rates.md | 6 +++--- .../tracks/stories/optionals.pizza-slices.md | 2 +- .../pattern-matching.number-guessing-game.md | 4 ++-- .../primitive-types.rna-and-dna-processing.md | 2 +- .../promises.klingon-translation-service.md | 2 +- .../stories/properties.weighing-machine.md | 2 +- .../randomness.rpg-quest-logic-extension.md | 2 +- .../records.nba-root-for-team-algorithm.md | 2 +- .../tracks/stories/recursion.pizza-delivery.md | 4 ++-- building/tracks/stories/regex.event-ingest.md | 2 +- .../strings-and-characters.custom-signs.md | 2 +- .../stories/strings.high-school-sweethearts.md | 2 +- .../tracks/stories/strings.log-line-parser.md | 14 +++++++------- building/tracks/stories/strings.party-robot.md | 2 +- .../stories/strings.poetry-club-door-policy.md | 4 ++-- .../structs-and-classes.windowing-system.md | 2 +- .../tracks/stories/sum-types.valentines-day.md | 2 +- .../ternary-operators.employee-salary.md | 2 +- .../stories/tuples.kitchen-calculator.md | 2 +- .../tracks/stories/tuples.santas-helper.md | 2 +- 52 files changed, 96 insertions(+), 96 deletions(-) diff --git a/building/configlet/lint.md b/building/configlet/lint.md index 5a47960a..7539652c 100644 --- a/building/configlet/lint.md +++ b/building/configlet/lint.md @@ -184,7 +184,7 @@ The `config.json` file should have the following checks: - The `"key_features"` key is optional - The `"key_features"` value must be an array with length = 6 - The `"key_features[].icon"` key is required -- The `"key_features[].icon"` value must use one of the [pre-defined icon values](../tracks/config-json#keyfeatures) +- The `"key_features[].icon"` value must use one of the [pre-defined icon values](/docs/building/tracks/config-json#keyfeatures) - The `"key_features[].title"` key is required - The `"key_features[].title"` value must be a non-blank string¹ with length <= 25 - The `"key_features[].content"` key is required @@ -192,7 +192,7 @@ The `config.json` file should have the following checks: - The `"tags"` key is required - The `"tags"` value must be an array of strings - The `"tags"` values must not have duplicates -- The `"tags"` values must use one of the [pre-defined tag values](../tracks/config-json.md#tags) +- The `"tags"` values must use one of the [pre-defined tag values](/docs/building/tracks/config-json.md#tags) ### Rule: exercises/concept/<slug>/.meta/config.json is valid diff --git a/building/tracks/stories/actor-model.take-a-number-machine.md b/building/tracks/stories/actor-model.take-a-number-machine.md index 2d115b57..265b2ee7 100644 --- a/building/tracks/stories/actor-model.take-a-number-machine.md +++ b/building/tracks/stories/actor-model.take-a-number-machine.md @@ -23,4 +23,4 @@ You are writing an embedded system for a Take-A-Number machine. It is a very sim [concepts/actor-model]: ../concepts/actor_model.md [types/pid]: ../types/pid.md -[implementation-elixir]: ../../languages/elixir/exercises/concept/take-a-number/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/take-a-number/.docs/instructions.md diff --git a/building/tracks/stories/anonymous-functions.bomb-defuser.md b/building/tracks/stories/anonymous-functions.bomb-defuser.md index 8ee02424..439376ad 100644 --- a/building/tracks/stories/anonymous-functions.bomb-defuser.md +++ b/building/tracks/stories/anonymous-functions.bomb-defuser.md @@ -29,4 +29,4 @@ These are example tasks that fit the story of the secret agent disarming a stink [concepts-closures]: ../concepts/closures.md [concepts-anonymous-functions]: ../concepts/anonymous_functions.md -[implementation-swift]: ../../languages/swift/exercises/concept/bomb-defuser/.docs/instructions.md +[implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/bomb-defuser/.docs/instructions.md diff --git a/building/tracks/stories/arrays.elyses-enchantments.md b/building/tracks/stories/arrays.elyses-enchantments.md index eb6ccb15..77a02460 100644 --- a/building/tracks/stories/arrays.elyses-enchantments.md +++ b/building/tracks/stories/arrays.elyses-enchantments.md @@ -95,10 +95,10 @@ These are examples of tasks that fit the story of you wanting to re-arrange card - [`types/array`][types-array] [types-array]: ../types/array.md -[implementation-javascript]: ../../languages/javascript/exercises/concept/elyses-enchantments/.docs/instructions.md -[implementation-javascript-2]: ../../languages/javascript/exercises/concept/elyses-analytic-enchantments/.docs/instructions.md -[implementation-javascript-3]: ../../languages/javascript/exercises/concept/elyses-destructured-enchantments/.docs/instructions.md -[implementation-javascript-4]: ../../languages/javascript/exercises/concept/elyses-transformative-enchantments/.docs/instructions.md +[implementation-javascript]: https://github.com/exercism/javascript/blob/main/exercises/concept/elyses-enchantments/.docs/instructions.md +[implementation-javascript-2]: https://github.com/exercism/javascript/blob/main/exercises/concept/elyses-analytic-enchantments/.docs/instructions.md +[implementation-javascript-3]: https://github.com/exercism/javascript/blob/main/exercises/concept/elyses-destructured-enchantments/.docs/instructions.md +[implementation-javascript-4]: https://github.com/exercism/javascript/blob/main/exercises/concept/elyses-transformative-enchantments/.docs/instructions.md [implementation-javascript-research-1-a]: https://github.com/exercism/research_experiment_1/tree/master/exercises/javascript-1-a [implementation-javascript-research-2-a]: https://github.com/exercism/research_experiment_1/tree/master/exercises/javascript-2-a -[implementation-swift]: ../../languages/swift/exercises/concept/magician-in-training/.docs/instructions.md +[implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/magician-in-training/.docs/instructions.md diff --git a/building/tracks/stories/arrays.garden-bird-count.md b/building/tracks/stories/arrays.garden-bird-count.md index 0aa308b0..379f94f4 100644 --- a/building/tracks/stories/arrays.garden-bird-count.md +++ b/building/tracks/stories/arrays.garden-bird-count.md @@ -25,6 +25,6 @@ These are example tasks that fit the bird watching exercise: - [`types/array`][types-array] [types-array]: ../types/array.md -[implementation-csharp]: ../../languages/csharp/exercises/concept/bird-watcher/.docs/instructions.md -[implementation-elixir]: ../../languages/elixir/exercises/concept/bird-count/.docs/instructions.md -[implementation-fsharp]: ../../languages/fsharp/exercises/concept/bird-watcher/.docs/instructions.md +[implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/bird-watcher/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/bird-count/.docs/instructions.md +[implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/bird-watcher/.docs/instructions.md diff --git a/building/tracks/stories/basics.lasagna.md b/building/tracks/stories/basics.lasagna.md index 1ea6ab3e..578404b1 100644 --- a/building/tracks/stories/basics.lasagna.md +++ b/building/tracks/stories/basics.lasagna.md @@ -40,12 +40,12 @@ The story facilitates defining functions: [concepts-return_values]: ../concepts/return_values.md [types-function]: ../types/function.md [types-integer]: ../types/integer.md -[implementation-csharp]: ../../languages/csharp/exercises/concept/lucians-luscious-lasagna/.docs/instructions.md -[implementation-elixir]: ../../languages/elixir/exercises/concept/lasagna/.docs/instructions.md -[implementation-fsharp]: ../../languages/fsharp/exercises/concept/lucians-luscious-lasagna/.docs/instructions.md -[implementation-java]: ../../languages/java/exercises/concept/basics/.docs/instructions.md -[implementation-javascript]: ../../languages/javascript/exercises/concept/basics/.docs/instructions.md -[implementation-python]: ../../languages/python/exercises/concept/guidos-gorgeous-lasagna/.docs/instructions.md -[implementation-julia]: ../../languages/julia/exercises/concept/lasagna/.docs/instructions.md -[implementation-ruby]: ../../languages/ruby/exercises/concept/lasagna/.docs/instructions.md -[implementation-swift]: ../../languages/swift/exercises/concept/lasagna/.docs/instructions.md +[implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/lucians-luscious-lasagna/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/lasagna/.docs/instructions.md +[implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/lucians-luscious-lasagna/.docs/instructions.md +[implementation-java]: https://github.com/exercism/java/blob/main/exercises/concept/basics/.docs/instructions.md +[implementation-javascript]: https://github.com/exercism/javascript/blob/main/exercises/concept/basics/.docs/instructions.md +[implementation-python]: https://github.com/exercism/python/blob/main/exercises/concept/guidos-gorgeous-lasagna/.docs/instructions.md +[implementation-julia]: https://github.com/exercism/julia/blob/main/exercises/concept/lasagna/.docs/instructions.md +[implementation-ruby]: https://github.com/exercism/ruby/blob/main/exercises/concept/lasagna/.docs/instructions.md +[implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/lasagna/.docs/instructions.md diff --git a/building/tracks/stories/binary-data.file-sniffer.md b/building/tracks/stories/binary-data.file-sniffer.md index a8eaa768..f18a7b39 100644 --- a/building/tracks/stories/binary-data.file-sniffer.md +++ b/building/tracks/stories/binary-data.file-sniffer.md @@ -26,4 +26,4 @@ The story facilitates defining functions: - [Elixir: binary-matching][implementation-elixir] (reference implementation) -[implementation-elixir]: ../../languages/elixir/exercises/concept/file-sniffer/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/file-sniffer/.docs/instructions.md diff --git a/building/tracks/stories/booleans.pac-man.md b/building/tracks/stories/booleans.pac-man.md index b841a625..c1ca1b1f 100644 --- a/building/tracks/stories/booleans.pac-man.md +++ b/building/tracks/stories/booleans.pac-man.md @@ -43,5 +43,5 @@ Terms used in the story: [1]: https://doi.org/10.1109/TLT.2010.33 [types-boolean]: ../types/boolean.md [concepts-boolean_logic]: ../concepts/boolean_logic.md -[implementation-elixir]: ../../languages/elixir/exercises/concept/pacman-rules/.docs/instructions.md -[implementation-python]: ../../languages/python/exercises/concept/ghost-gobble-arcade-game/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/pacman-rules/.docs/instructions.md +[implementation-python]: https://github.com/exercism/python/blob/main/exercises/concept/ghost-gobble-arcade-game/.docs/instructions.md diff --git a/building/tracks/stories/booleans.rpg-quest-logic.md b/building/tracks/stories/booleans.rpg-quest-logic.md index a3c0edf2..6872bb72 100644 --- a/building/tracks/stories/booleans.rpg-quest-logic.md +++ b/building/tracks/stories/booleans.rpg-quest-logic.md @@ -42,7 +42,7 @@ These are recommendations, not rules, for recurring terminology in the instructi - [`types/boolean`][types-boolean] [types-boolean]: ../types/boolean.md -[javascript-concept-booleans]: ../../languages/javascript/exercises/concept/booleans -[implementation-fsharp]: ../../languages/fsharp/exercises/concept/annalyns-infiltration/.docs/instructions.md -[implementation-javascript]: ../../languages/javascript/exercises/concept/booleans/.docs/instructions.md -[implementation-julia]: ../../languages/julia/exercises/concept/annalyns-infiltration/.docs/instructions.md +[javascript-concept-booleans]: https://github.com/exercism/javascript/blob/main/exercises/concept/booleans +[implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/annalyns-infiltration/.docs/instructions.md +[implementation-javascript]: https://github.com/exercism/javascript/blob/main/exercises/concept/booleans/.docs/instructions.md +[implementation-julia]: https://github.com/exercism/julia/blob/main/exercises/concept/annalyns-infiltration/.docs/instructions.md diff --git a/building/tracks/stories/classes.amusement-park.md b/building/tracks/stories/classes.amusement-park.md index bbfab5f9..c875e0c6 100644 --- a/building/tracks/stories/classes.amusement-park.md +++ b/building/tracks/stories/classes.amusement-park.md @@ -33,4 +33,4 @@ Example tasks: [concepts-objects]: ../concepts/objects.md [types-class]: ../types/class.md -[implementation-ruby]: ../../languages/ruby/exercises/concept/instance-variables/.docs/instructions.md +[implementation-ruby]: https://github.com/exercism/ruby/blob/main/exercises/concept/instance-variables/.docs/instructions.md diff --git a/building/tracks/stories/classes.remote-control-car.md b/building/tracks/stories/classes.remote-control-car.md index 273e212c..f4ed852c 100644 --- a/building/tracks/stories/classes.remote-control-car.md +++ b/building/tracks/stories/classes.remote-control-car.md @@ -36,5 +36,5 @@ These are example tasks that fit the remote control car exercise: [concepts-objects]: ../concepts/objects.md [types-class]: ../types/class.md -[implementation-csharp]: ../../languages/csharp/exercises/concept/elons-toys/.docs/instructions.md -[implementation-elixir]: ../../languages/elixir/exercises/concept/remote-control-car/.docs/instructions.md +[implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/elons-toys/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/remote-control-car/.docs/instructions.md diff --git a/building/tracks/stories/closures.design-company.md b/building/tracks/stories/closures.design-company.md index 07e464da..2d031624 100644 --- a/building/tracks/stories/closures.design-company.md +++ b/building/tracks/stories/closures.design-company.md @@ -20,4 +20,4 @@ so you decide to use a function closure to create reusable transformation for `{ - [JavaScript: closures][implementation-javascript] (reference implementation) -[implementation-javascript]: ../../languages/javascript/exercises/concept/closures/.docs/instructions.md +[implementation-javascript]: https://github.com/exercism/javascript/blob/main/exercises/concept/closures/.docs/instructions.md diff --git a/building/tracks/stories/conditionals.vehicle-purchase.md b/building/tracks/stories/conditionals.vehicle-purchase.md index 6c5844a8..7da13e1e 100644 --- a/building/tracks/stories/conditionals.vehicle-purchase.md +++ b/building/tracks/stories/conditionals.vehicle-purchase.md @@ -29,5 +29,5 @@ These are examples of tasks that fit the story of purchasing a vehicle: [concepts-conditionals]: ../concepts/conditionals.md [concepts-guard]: ../concepts/guard.md [concepts-switch]: ../concepts/switch.md -[implementation-swift]: ../../languages/swift/exercises/concept/vehicle-purchase/.docs/instructions.md -[implementation-julia]: ../../languages/julia/exercises/concept/vehicle-purchase/.docs/instructions.md +[implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/vehicle-purchase/.docs/instructions.md +[implementation-julia]: https://github.com/exercism/julia/blob/main/exercises/concept/vehicle-purchase/.docs/instructions.md diff --git a/building/tracks/stories/constructors.remote-control-car-race.md b/building/tracks/stories/constructors.remote-control-car-race.md index f4dcb769..16140562 100644 --- a/building/tracks/stories/constructors.remote-control-car-race.md +++ b/building/tracks/stories/constructors.remote-control-car-race.md @@ -34,4 +34,4 @@ These are example tasks that fit the remote control car race exercise: [concepts-constructors]: ../concepts/constructors.md [concepts-objects]: ../concepts/objects.md [types-class]: ../types/class.md -[implementation-csharp]: ../../languages/csharp/exercises/concept/need-for-speed/.docs/instructions.md +[implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/need-for-speed/.docs/instructions.md diff --git a/building/tracks/stories/datetimes.appointment-scheduler.md b/building/tracks/stories/datetimes.appointment-scheduler.md index fa3e8e92..e23ea495 100644 --- a/building/tracks/stories/datetimes.appointment-scheduler.md +++ b/building/tracks/stories/datetimes.appointment-scheduler.md @@ -32,5 +32,5 @@ These are example tasks that fit the appointment scheduler exercise: - [`types/datetime`][types-datetime] [types-datetime]: ../types/datetime.md -[implementation-csharp]: ../../languages/csharp/exercises/concept/booking-up-for-beauty/.docs/instructions.md -[implementation-fsharp]: ../../languages/fsharp/exercises/concept/booking-up-for-beauty/.docs/instructions.md +[implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/booking-up-for-beauty/.docs/instructions.md +[implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/booking-up-for-beauty/.docs/instructions.md diff --git a/building/tracks/stories/enumerable.fashion-boutique.md b/building/tracks/stories/enumerable.fashion-boutique.md index c5736208..5e12bf1e 100644 --- a/building/tracks/stories/enumerable.fashion-boutique.md +++ b/building/tracks/stories/enumerable.fashion-boutique.md @@ -37,5 +37,5 @@ A single item in the inventory is represented by a map/dictionary, and the whole [types-dictionary]: ../types/dictionary.md [types-list]: ../types/list.md [types-map]: ../types/map.md -[implementation-elixir]: ../../languages/elixir/exercises/concept/boutique-inventory/.docs/instructions.md -[extension-elixir]: ../../languages/elixir/exercises/concept/boutique-suggestions/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/boutique-inventory/.docs/instructions.md +[extension-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/boutique-suggestions/.docs/instructions.md diff --git a/building/tracks/stories/enums.log-line-parser.md b/building/tracks/stories/enums.log-line-parser.md index 9abc83d0..4835b9b4 100644 --- a/building/tracks/stories/enums.log-line-parser.md +++ b/building/tracks/stories/enums.log-line-parser.md @@ -30,7 +30,7 @@ These are example tasks that fit the log line parser: - [Python: log-levels][implementation-python] - [Swift: enums][implementation-swift] -[implementation-csharp]: ../../languages/csharp/exercises/concept/logs-logs-logs/.docs/instructions.md -[implementation-python]: ../../languages/python/exercises/concept/log-levels/.docs/instructions.md -[implementation-rust]: ../../languages/rust/exercises/concept/enums/.docs/instructions.md -[implementation-swift]: ../../languages/swift/exercises/concept/log-lines/.docs/instructions.md +[implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/logs-logs-logs/.docs/instructions.md +[implementation-python]: https://github.com/exercism/python/blob/main/exercises/concept/log-levels/.docs/instructions.md +[implementation-rust]: https://github.com/exercism/rust/blob/main/exercises/concept/enums/.docs/instructions.md +[implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/log-lines/.docs/instructions.md diff --git a/building/tracks/stories/errors.instruments-of-texas.md b/building/tracks/stories/errors.instruments-of-texas.md index 0dd94dda..4c365b93 100644 --- a/building/tracks/stories/errors.instruments-of-texas.md +++ b/building/tracks/stories/errors.instruments-of-texas.md @@ -18,4 +18,4 @@ The student implements a function in to handle errors in three ways: - [Elixir: errors][implementation-elixir] (reference implementation) -[implementation-elixir]: ../../languages/elixir/exercises/concept/rpn-calculator/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/rpn-calculator/.docs/instructions.md diff --git a/building/tracks/stories/flag-enums.website-account-permissions.md b/building/tracks/stories/flag-enums.website-account-permissions.md index 3b99c3c4..e3054a98 100644 --- a/building/tracks/stories/flag-enums.website-account-permissions.md +++ b/building/tracks/stories/flag-enums.website-account-permissions.md @@ -36,4 +36,4 @@ These are example tasks that fit the website permissions exercise: [concepts-bitwise_manipulation]: ../concepts/bitwise_manipulation.md [types-bit]: ../types/bit.md -[implementation-csharp]: ../../languages/csharp/exercises/concept/attack-of-the-trolls/.docs/instructions.md +[implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/attack-of-the-trolls/.docs/instructions.md diff --git a/building/tracks/stories/floating-point-numbers.savings-account.md b/building/tracks/stories/floating-point-numbers.savings-account.md index c1e69ada..cf47f54f 100644 --- a/building/tracks/stories/floating-point-numbers.savings-account.md +++ b/building/tracks/stories/floating-point-numbers.savings-account.md @@ -27,5 +27,5 @@ These are example tasks that fit the savings account exercise: - [`types/floating_point_number`][types-floating_point_number] [types-floating_point_number]: ../types/floating_point_number.md -[implementation-csharp]: ../../languages/csharp/exercises/concept/interest-is-interesting/.docs/instructions.md -[implementation-fsharp]: ../../languages/fsharp/exercises/concept/interest-is-interesting/.docs/instructions.md +[implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/interest-is-interesting/.docs/instructions.md +[implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/interest-is-interesting/.docs/instructions.md diff --git a/building/tracks/stories/functions.lasagna-master.md b/building/tracks/stories/functions.lasagna-master.md index 480c696a..b9cefcf2 100644 --- a/building/tracks/stories/functions.lasagna-master.md +++ b/building/tracks/stories/functions.lasagna-master.md @@ -35,4 +35,4 @@ The story facilitates defining functions: [concepts-inout_parameters]: ../concepts/inout_parameters.md [concepts-nested_functions]: ../concepts/nested_functions.md [types-function]: ../types/function.md -[implementation-swift]: ../../languages/swift/exercises/concept/lasagna-master/.docs/instructions.md +[implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/lasagna-master/.docs/instructions.md diff --git a/building/tracks/stories/higher-order-functions.secret-agent.md b/building/tracks/stories/higher-order-functions.secret-agent.md index 6edb2e8b..972ace1f 100644 --- a/building/tracks/stories/higher-order-functions.secret-agent.md +++ b/building/tracks/stories/higher-order-functions.secret-agent.md @@ -22,4 +22,4 @@ The story facilitates defining [higher-order functions][concepts-higher_order_fu - [`concepts/higher_order_functions`][concepts-higher_order_functions] [concepts-higher_order_functions]: ../concepts/higher_order_functions.md -[implementation-swift]: ../../languages/swift/exercises/concept/secret-agent/.docs/instructions.md +[implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/secret-agent/.docs/instructions.md diff --git a/building/tracks/stories/inheritance.role-playing-game.md b/building/tracks/stories/inheritance.role-playing-game.md index 3f39a5c2..c6fcc47c 100644 --- a/building/tracks/stories/inheritance.role-playing-game.md +++ b/building/tracks/stories/inheritance.role-playing-game.md @@ -46,4 +46,4 @@ The story facilitates defining functions: [concepts-inheritance]: ../concepts/inheritance.md [types-integer]: ../types/integer.md [types-string]: ../types/string.md -[implementation-csharp]: ../../languages/csharp/exercises/concept/wizards-and-warriors/.docs/instructions.md +[implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/wizards-and-warriors/.docs/instructions.md diff --git a/building/tracks/stories/io.rpg-character-sheet.md b/building/tracks/stories/io.rpg-character-sheet.md index dc63fde4..2ecdf4f7 100644 --- a/building/tracks/stories/io.rpg-character-sheet.md +++ b/building/tracks/stories/io.rpg-character-sheet.md @@ -14,4 +14,4 @@ You and your friends love to play pen-and-paper role-playing games, but you noti - [Elixir: io][implementation-elixir] (reference implementation) -[implementation-elixir]: ../../languages/elixir/exercises/concept/rpg-character-sheet/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/rpg-character-sheet/.docs/instructions.md diff --git a/building/tracks/stories/lambda-function.secret-device.md b/building/tracks/stories/lambda-function.secret-device.md index cd9967d2..85c837ea 100644 --- a/building/tracks/stories/lambda-function.secret-device.md +++ b/building/tracks/stories/lambda-function.secret-device.md @@ -24,7 +24,7 @@ The story also adapts well for [concepts-bitwise_manipulation][concepts-bitwise_ - [`concepts/bitwise_manipulation`][concepts-bitwise_manipulation] - [`types/bit`][types-bit] -[implementation-elixir]: ../../languages/elixir/exercises/concept/secrets/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/secrets/.docs/instructions.md [concepts-anonymous_functions]: ../concepts/anonymous_functions.md [concepts-function_composition]: ../concepts/function_composition.md [concepts-higher_order_functions]: ../concepts/higher_order_functions.md diff --git a/building/tracks/stories/lists.language-list.md b/building/tracks/stories/lists.language-list.md index 6f18db12..b5206c48 100644 --- a/building/tracks/stories/lists.language-list.md +++ b/building/tracks/stories/lists.language-list.md @@ -27,7 +27,7 @@ The exercise generally guides students how to: - [`types/list`][types-list] -[implementation-clojure]: ../../languages/clojure/exercises/concept/tracks-on-tracks-on-tracks/.docs/instructions.md -[implementation-elixir]: ../../languages/elixir/exercises/concept/language-list/.docs/instructions.md -[implementation-fsharp]: ../../languages/fsharp/exercises/concept/tracks-on-tracks-on-tracks/.docs/instructions.md +[implementation-clojure]: https://github.com/exercism/clojure/blob/main/exercises/concept/tracks-on-tracks-on-tracks/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/language-list/.docs/instructions.md +[implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/tracks-on-tracks-on-tracks/.docs/instructions.md [types-list]: ../types/list.md diff --git a/building/tracks/stories/loops.bartender.md b/building/tracks/stories/loops.bartender.md index 41133618..6ddda03a 100644 --- a/building/tracks/stories/loops.bartender.md +++ b/building/tracks/stories/loops.bartender.md @@ -22,4 +22,4 @@ These are example tasks that fit the story of the freelancer communicating with - [`concept/loops`][concept-loops] [concept-loops]: ../concepts/loops.md -[implementation-swift]: ../../languages/swift/exercises/concept/master-mixologist/.docs/instructions.md +[implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/master-mixologist/.docs/instructions.md diff --git a/building/tracks/stories/maps.high-score-board.md b/building/tracks/stories/maps.high-score-board.md index 414173aa..84dbe9d7 100644 --- a/building/tracks/stories/maps.high-score-board.md +++ b/building/tracks/stories/maps.high-score-board.md @@ -30,5 +30,5 @@ The student is then guided through some operations: [types-map]: ../types/map.md [types-hash_map]: ../types/hash_map.md [types-dictionary]: ../types/dictionary.md -[implementation-elixir]: ../../languages/elixir/exercises/concept/high-score/.docs/instructions.md -[implementation-swift]: ../../languages/swift/exercises/concept/high-score-board/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/high-score/.docs/instructions.md +[implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/high-score-board/.docs/instructions.md diff --git a/building/tracks/stories/matrices.exercism-logo-matrix.md b/building/tracks/stories/matrices.exercism-logo-matrix.md index d12e794f..08e6121f 100644 --- a/building/tracks/stories/matrices.exercism-logo-matrix.md +++ b/building/tracks/stories/matrices.exercism-logo-matrix.md @@ -12,4 +12,4 @@ This story involves playing around with a matrix representing the Exercism logo, - [The Exercism Matrix][implementation-julia] -[implementation-julia]: ../../languages/julia/exercises/concept/exercism-matrix/ +[implementation-julia]: https://github.com/exercism/julia/blob/main/exercises/concept/exercism-matrix/ diff --git a/building/tracks/stories/method-overloading.rpg-game-master.md b/building/tracks/stories/method-overloading.rpg-game-master.md index e8b3e5b5..3aea5bdd 100644 --- a/building/tracks/stories/method-overloading.rpg-game-master.md +++ b/building/tracks/stories/method-overloading.rpg-game-master.md @@ -18,4 +18,4 @@ These are example tasks that fit the game master exercise: - [C#: wizards-and-warriors-2][implementation-csharp] (reference implementation) -[implementation-csharp]: ../../languages/csharp/exercises/concept/wizards-and-warriors-2/.docs/instructions.md +[implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/wizards-and-warriors-2/.docs/instructions.md diff --git a/building/tracks/stories/nullability.name-badges.md b/building/tracks/stories/nullability.name-badges.md index fb23076e..b247291b 100644 --- a/building/tracks/stories/nullability.name-badges.md +++ b/building/tracks/stories/nullability.name-badges.md @@ -29,6 +29,6 @@ These are example tasks that fit the employee badges exercise: [types-null]: ../types/null.md [types-nullable]: ../types/nullable.md -[implementation-csharp]: ../../languages/csharp/exercises/concept/tim-from-marketing/.docs/instructions.md -[implementation-elixir]: ../../languages/elixir/exercises/concept/name-badge/.docs/instructions.md -[implementation-javascript]: ../../languages/javascript/exercises/concept/nullability/.docs/instructions.md +[implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/tim-from-marketing/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/name-badge/.docs/instructions.md +[implementation-javascript]: https://github.com/exercism/javascript/blob/main/exercises/concept/nullability/.docs/instructions.md diff --git a/building/tracks/stories/numbers.car-production-line.md b/building/tracks/stories/numbers.car-production-line.md index 03712cf1..7b63fbf9 100644 --- a/building/tracks/stories/numbers.car-production-line.md +++ b/building/tracks/stories/numbers.car-production-line.md @@ -32,5 +32,5 @@ These are example tasks that fit the car production line exercise: [types-number]: ../types/number.md [types-integer]: ../types/integer.md [types-floating_point_number]: ../types/floating_point_number.md -[implementation-csharp]: ../../languages/csharp/exercises/concept/cars-assemble/.docs/instructions.md -[implementation-fsharp]: ../../languages/fsharp/exercises/concept/cars-assemble/.docs/instructions.md +[implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/cars-assemble/.docs/instructions.md +[implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/cars-assemble/.docs/instructions.md diff --git a/building/tracks/stories/numbers.freelancer-rates.md b/building/tracks/stories/numbers.freelancer-rates.md index 71156ad8..818b72d0 100644 --- a/building/tracks/stories/numbers.freelancer-rates.md +++ b/building/tracks/stories/numbers.freelancer-rates.md @@ -51,6 +51,6 @@ These are recommendations, not rules, for recurring terminology in the instructi [types-decimal-number]: ../types/decimal_number.md [types-floating-point-number]: ../types/floating_point_number.md [types-string]: ../types/string.md -[implementation-elixir]: ../../languages/elixir/exercises/concept/freelancer-rates/.docs/instructions.md -[implementation-javascript]: ../../languages/javascript/exercises/concept/numbers/.docs/instructions.md -[implementation-swift]: ../../languages/swift/exercises/concept/freelancer-rates/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/freelancer-rates/.docs/instructions.md +[implementation-javascript]: https://github.com/exercism/javascript/blob/main/exercises/concept/numbers/.docs/instructions.md +[implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/freelancer-rates/.docs/instructions.md diff --git a/building/tracks/stories/optionals.pizza-slices.md b/building/tracks/stories/optionals.pizza-slices.md index a65519e3..efa353b6 100644 --- a/building/tracks/stories/optionals.pizza-slices.md +++ b/building/tracks/stories/optionals.pizza-slices.md @@ -20,4 +20,4 @@ The story facilitates exploration of [Optional types][types-option-types] which - [`types/option_types`][types-option-types] [types-option-types]: ../types/option_types.md -[implementation-swift]: ../../languages/swift/exercises/concept/pizza-slices/.docs/instructions.md +[implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/pizza-slices/.docs/instructions.md diff --git a/building/tracks/stories/pattern-matching.number-guessing-game.md b/building/tracks/stories/pattern-matching.number-guessing-game.md index 3101305f..ccde5bbd 100644 --- a/building/tracks/stories/pattern-matching.number-guessing-game.md +++ b/building/tracks/stories/pattern-matching.number-guessing-game.md @@ -28,5 +28,5 @@ These are example tasks that fit the number guessing game exercise: - [`concepts/pattern_matching`][concepts-pattern_matching] [concepts-pattern_matching]: ../concepts/pattern_matching.md -[implementation-fsharp]: ../../languages/fsharp/exercises/concept/guessing-game/.docs/instructions.md -[implementation-elixir]: ../../languages/elixir/exercises/concept/guessing-game/.docs/instructions.md +[implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/guessing-game/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/guessing-game/.docs/instructions.md diff --git a/building/tracks/stories/primitive-types.rna-and-dna-processing.md b/building/tracks/stories/primitive-types.rna-and-dna-processing.md index 4a3c30e0..20a54b42 100644 --- a/building/tracks/stories/primitive-types.rna-and-dna-processing.md +++ b/building/tracks/stories/primitive-types.rna-and-dna-processing.md @@ -17,6 +17,6 @@ You could consider adding those exercises twice (perhaps as practice exercise) i - [`types/char`][types-char] - [`types/string`][types-string] -[implementation-elixir]: ../../languages/elixir/exercises/concept/dna-encoding/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/dna-encoding/.docs/instructions.md [types-string]: ../types/string.md [types-char]: ../types/char.md diff --git a/building/tracks/stories/promises.klingon-translation-service.md b/building/tracks/stories/promises.klingon-translation-service.md index 1837746b..fe4cf1cf 100644 --- a/building/tracks/stories/promises.klingon-translation-service.md +++ b/building/tracks/stories/promises.klingon-translation-service.md @@ -71,7 +71,7 @@ All the translation texts are Klingon to English. [types-future]: ../types/future.md [types-string]: ../types/string.md [types-number]: ../types/number.md -[implementation-javascript]: ../../languages/javascript/exercises/concept/promises/.docs/instructions.md +[implementation-javascript]: https://github.com/exercism/javascript/blob/main/exercises/concept/promises/.docs/instructions.md ## N.B. diff --git a/building/tracks/stories/properties.weighing-machine.md b/building/tracks/stories/properties.weighing-machine.md index 54b29925..bc4ec75c 100644 --- a/building/tracks/stories/properties.weighing-machine.md +++ b/building/tracks/stories/properties.weighing-machine.md @@ -44,4 +44,4 @@ These are example tasks that fit the weighing machine exercise: - [C#: weighing-machine][implementation-csharp] (reference implementation) -[implementation-csharp]: ../../languages/csharp/exercises/concept/weighing-machine/.docs/instructions.md +[implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/weighing-machine/.docs/instructions.md diff --git a/building/tracks/stories/randomness.rpg-quest-logic-extension.md b/building/tracks/stories/randomness.rpg-quest-logic-extension.md index b4a6edef..7c344669 100644 --- a/building/tracks/stories/randomness.rpg-quest-logic-extension.md +++ b/building/tracks/stories/randomness.rpg-quest-logic-extension.md @@ -29,4 +29,4 @@ Having found the kidnappers, Annalyn considers which of the following actions sh - [Julia: annalyns-infiltration2][implementation-julia] -[implementation-julia]: ../../languages/julia/exercises/concept/annalyns-infiltration2/.docs/instructions.md +[implementation-julia]: https://github.com/exercism/julia/blob/main/exercises/concept/annalyns-infiltration2/.docs/instructions.md diff --git a/building/tracks/stories/records.nba-root-for-team-algorithm.md b/building/tracks/stories/records.nba-root-for-team-algorithm.md index d99dcbfc..96b335f4 100644 --- a/building/tracks/stories/records.nba-root-for-team-algorithm.md +++ b/building/tracks/stories/records.nba-root-for-team-algorithm.md @@ -27,4 +27,4 @@ These are example tasks that fit the NBA root-for-team algorithm exercise: - [`types/record`][types-record] [types-record]: ../types/record.md -[implementation-fsharp]: ../../languages/fsharp/exercises/concept/bandwagoner/.docs/instructions.md +[implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/bandwagoner/.docs/instructions.md diff --git a/building/tracks/stories/recursion.pizza-delivery.md b/building/tracks/stories/recursion.pizza-delivery.md index 273e3247..3ad86498 100644 --- a/building/tracks/stories/recursion.pizza-delivery.md +++ b/building/tracks/stories/recursion.pizza-delivery.md @@ -38,5 +38,5 @@ These are example tasks that fit the pizza delivery exercise: - [`concepts/recursion`][concepts-recursion] [concepts-recursion]: ../concepts/recursion.md -[implementation-fsharp]: ../../languages/fsharp/exercises/concept/pizza-pricing/.docs/instructions.md -[implementation-javascript]: ../../languages/javascript/exercises/concept/recursion/.docs/instructions.md +[implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/pizza-pricing/.docs/instructions.md +[implementation-javascript]: https://github.com/exercism/javascript/blob/main/exercises/concept/recursion/.docs/instructions.md diff --git a/building/tracks/stories/regex.event-ingest.md b/building/tracks/stories/regex.event-ingest.md index cf49f65b..e29bc94f 100644 --- a/building/tracks/stories/regex.event-ingest.md +++ b/building/tracks/stories/regex.event-ingest.md @@ -29,4 +29,4 @@ Touches on: - [Elixir: regular-expressions][implementation-elixir] (reference implementation) -[implementation-elixir]: ../../languages/elixir/exercises/concept/date-parser/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/date-parser/.docs/instructions.md diff --git a/building/tracks/stories/strings-and-characters.custom-signs.md b/building/tracks/stories/strings-and-characters.custom-signs.md index fe3ce62f..94891b32 100644 --- a/building/tracks/stories/strings-and-characters.custom-signs.md +++ b/building/tracks/stories/strings-and-characters.custom-signs.md @@ -25,4 +25,4 @@ These are example tasks that fit the story of a customer designing a custom sign [types-string]: ../types/string.md [types-character]: ../types/character.md -[implementation-swift]: ../../languages/swift/exercises/concept/custom-signs/.docs/instructions.md +[implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/custom-signs/.docs/instructions.md diff --git a/building/tracks/stories/strings.high-school-sweethearts.md b/building/tracks/stories/strings.high-school-sweethearts.md index 7b40ecd6..98f11e25 100644 --- a/building/tracks/stories/strings.high-school-sweethearts.md +++ b/building/tracks/stories/strings.high-school-sweethearts.md @@ -39,4 +39,4 @@ These are example tasks that fit the high school sweethearts exercise, each task - [`types/string`][types-string] [types-string]: ../types/string.md -[implementation-elixir]: ../../languages/elixir/exercises/concept/high-school-sweetheart/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/high-school-sweetheart/.docs/instructions.md diff --git a/building/tracks/stories/strings.log-line-parser.md b/building/tracks/stories/strings.log-line-parser.md index 65af6b56..1706072e 100644 --- a/building/tracks/stories/strings.log-line-parser.md +++ b/building/tracks/stories/strings.log-line-parser.md @@ -35,10 +35,10 @@ These are example tasks that fit the log line parser: - [`types/string`][types-string] [types-string]: ../types/string.md -[implementation-csharp]: ../../languages/csharp/exercises/concept/log-levels/.docs/instructions.md -[implementation-cpp]: ../../languages/cpp/exercises/concept/strings/.docs/instructions.md -[implementation-fsharp]: ../../languages/fsharp/exercises/concept/log-levels/.docs/instructions.md -[implementation-go]: ../../languages/go/exercises/concept/strings-package/.docs/instructions.md -[implementation-java]: ../../languages/java/exercises/concept/strings/.docs/instructions.md -[implementation-python]: ../../languages/python/exercises/concept/processing-logs/.docs/instructions.md -[implementation-ruby]: ../../languages/ruby/exercises/concept/strings/.docs/instructions.md +[implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/log-levels/.docs/instructions.md +[implementation-cpp]: https://github.com/exercism/cpp/blob/main/exercises/concept/strings/.docs/instructions.md +[implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/log-levels/.docs/instructions.md +[implementation-go]: https://github.com/exercism/go/blob/main/exercises/concept/strings-package/.docs/instructions.md +[implementation-java]: https://github.com/exercism/java/blob/main/exercises/concept/strings/.docs/instructions.md +[implementation-python]: https://github.com/exercism/python/blob/main/exercises/concept/processing-logs/.docs/instructions.md +[implementation-ruby]: https://github.com/exercism/ruby/blob/main/exercises/concept/strings/.docs/instructions.md diff --git a/building/tracks/stories/strings.party-robot.md b/building/tracks/stories/strings.party-robot.md index ba01ad36..2adb77f7 100644 --- a/building/tracks/stories/strings.party-robot.md +++ b/building/tracks/stories/strings.party-robot.md @@ -40,4 +40,4 @@ You will be sitting next to ! - [`types/string`][types-string] [types-string]: ../types/string.md -[implementation-go]: ../../languages/go/exercises/concept/strings/.docs/instructions.md +[implementation-go]: https://github.com/exercism/go/blob/main/exercises/concept/strings/.docs/instructions.md diff --git a/building/tracks/stories/strings.poetry-club-door-policy.md b/building/tracks/stories/strings.poetry-club-door-policy.md index 285dbce7..edb624c2 100644 --- a/building/tracks/stories/strings.poetry-club-door-policy.md +++ b/building/tracks/stories/strings.poetry-club-door-policy.md @@ -73,5 +73,5 @@ with the renowned poets. - [`types/string`][types-string] [types-string]: ../types/string.md -[implementation-javascript]: ../../languages/javascript/exercises/concept/strings/.docs/instructions.md -[implementation-swift]: ../../languages/swift/exercises/concept/poetry-club/.docs/instructions.md +[implementation-javascript]: https://github.com/exercism/javascript/blob/main/exercises/concept/strings/.docs/instructions.md +[implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/poetry-club/.docs/instructions.md diff --git a/building/tracks/stories/structs-and-classes.windowing-system.md b/building/tracks/stories/structs-and-classes.windowing-system.md index 1aca64b0..a3f588de 100644 --- a/building/tracks/stories/structs-and-classes.windowing-system.md +++ b/building/tracks/stories/structs-and-classes.windowing-system.md @@ -57,4 +57,4 @@ These are recommendations, not rules, for recurring terminology in the instructi [types-struct]: ../types/struct.md [types-class]: ../types/class.md -[implementation-swift]: ../../languages/swift/exercises/concept/windowing-system/.docs/instructions.md +[implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/windowing-system/.docs/instructions.md diff --git a/building/tracks/stories/sum-types.valentines-day.md b/building/tracks/stories/sum-types.valentines-day.md index 81b9ad57..233dc81a 100644 --- a/building/tracks/stories/sum-types.valentines-day.md +++ b/building/tracks/stories/sum-types.valentines-day.md @@ -31,4 +31,4 @@ These are example tasks that fit the pizza delivery exercise: - [`types/sum_type`][types-sum_type] [types-sum_type]: ../types/sum_type.md -[implementation-fsharp]: ../../languages/fsharp/exercises/concept/valentines-day/.docs/instructions.md +[implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/valentines-day/.docs/instructions.md diff --git a/building/tracks/stories/ternary-operators.employee-salary.md b/building/tracks/stories/ternary-operators.employee-salary.md index dec76b09..c9aa684e 100644 --- a/building/tracks/stories/ternary-operators.employee-salary.md +++ b/building/tracks/stories/ternary-operators.employee-salary.md @@ -33,4 +33,4 @@ These are recommendations, not rules, for recurring terminology in the instructi - [`types/boolean`][types-boolean] [types-boolean]: ../types/boolean.md -[implementation-java]: ../../languages/java/exercises/concept/ternary-operators/.docs/instructions.md +[implementation-java]: https://github.com/exercism/java/blob/main/exercises/concept/ternary-operators/.docs/instructions.md diff --git a/building/tracks/stories/tuples.kitchen-calculator.md b/building/tracks/stories/tuples.kitchen-calculator.md index be94efc9..c73d3175 100644 --- a/building/tracks/stories/tuples.kitchen-calculator.md +++ b/building/tracks/stories/tuples.kitchen-calculator.md @@ -34,4 +34,4 @@ This should guide students how to use: [concept-duck-typing]: ../concepts/duck_typing.md [type-tuple]: ../types/tuple.md -[implementation-elixir]: ../../languages/elixir/exercises/concept/kitchen-calculator/.docs/instructions.md +[implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/kitchen-calculator/.docs/instructions.md diff --git a/building/tracks/stories/tuples.santas-helper.md b/building/tracks/stories/tuples.santas-helper.md index 80d95661..692854d7 100644 --- a/building/tracks/stories/tuples.santas-helper.md +++ b/building/tracks/stories/tuples.santas-helper.md @@ -20,4 +20,4 @@ The story facilitates the exploration of [tuples][type-tuple] in a language. It - [`types/tuple`][type-tuple] [type-tuple]: ../types/tuple.md -[implementation-swift]: ../../languages/swift/exercises/concept/santas-helper/.docs/instructions.md +[implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/santas-helper/.docs/instructions.md From 7a1a0ff58553cb64af1f49cfc79af747f96d61d9 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 12:25:54 +0200 Subject: [PATCH 10/23] Fix v3 reference doc links --- .../stories/actor-model.take-a-number-machine.md | 4 ++-- .../stories/anonymous-functions.bomb-defuser.md | 4 ++-- .../tracks/stories/arrays.elyses-enchantments.md | 2 +- .../tracks/stories/arrays.garden-bird-count.md | 2 +- building/tracks/stories/basics.lasagna.md | 8 ++++---- building/tracks/stories/booleans.pac-man.md | 4 ++-- .../tracks/stories/booleans.rpg-quest-logic.md | 2 +- building/tracks/stories/classes.amusement-park.md | 4 ++-- .../tracks/stories/classes.remote-control-car.md | 4 ++-- .../stories/conditionals.vehicle-purchase.md | 8 ++++---- .../constructors.remote-control-car-race.md | 6 +++--- .../stories/datetimes.appointment-scheduler.md | 2 +- building/tracks/stories/datetimes.time-keeper.md | 2 +- .../stories/deep-dig.basketball-team-website.md | 2 +- .../tracks/stories/enumerable.fashion-boutique.md | 8 ++++---- .../flag-enums.website-account-permissions.md | 4 ++-- .../floating-point-numbers.savings-account.md | 2 +- .../tracks/stories/functions.lasagna-master.md | 14 +++++++------- .../stories/higher-order-functions.secret-agent.md | 2 +- .../stories/inheritance.role-playing-game.md | 10 +++++----- .../stories/lambda-function.secret-device.md | 10 +++++----- building/tracks/stories/lists.language-list.md | 2 +- building/tracks/stories/loops.bartender.md | 2 +- building/tracks/stories/maps.high-score-board.md | 8 ++++---- building/tracks/stories/nullability.name-badges.md | 4 ++-- .../tracks/stories/numbers.car-production-line.md | 6 +++--- .../tracks/stories/numbers.freelancer-rates.md | 8 ++++---- building/tracks/stories/optionals.pizza-slices.md | 2 +- .../pattern-matching.number-guessing-game.md | 2 +- .../primitive-types.rna-and-dna-processing.md | 4 ++-- .../promises.klingon-translation-service.md | 8 ++++---- .../stories/records.nba-root-for-team-algorithm.md | 2 +- .../tracks/stories/recursion.pizza-delivery.md | 2 +- .../stories/strings-and-characters.custom-signs.md | 4 ++-- .../stories/strings.high-school-sweethearts.md | 2 +- building/tracks/stories/strings.log-line-parser.md | 2 +- building/tracks/stories/strings.party-robot.md | 2 +- .../stories/strings.poetry-club-door-policy.md | 2 +- .../structs-and-classes.windowing-system.md | 4 ++-- .../tracks/stories/sum-types.valentines-day.md | 2 +- .../stories/ternary-operators.employee-salary.md | 2 +- building/tracks/stories/tuples.carnival-game.md | 2 +- .../tracks/stories/tuples.kitchen-calculator.md | 4 ++-- building/tracks/stories/tuples.santas-helper.md | 2 +- 44 files changed, 91 insertions(+), 91 deletions(-) diff --git a/building/tracks/stories/actor-model.take-a-number-machine.md b/building/tracks/stories/actor-model.take-a-number-machine.md index 265b2ee7..e68d595a 100644 --- a/building/tracks/stories/actor-model.take-a-number-machine.md +++ b/building/tracks/stories/actor-model.take-a-number-machine.md @@ -21,6 +21,6 @@ You are writing an embedded system for a Take-A-Number machine. It is a very sim - [`concepts/actor-model`][concepts/actor-model] - [`types/pid`][types/pid] -[concepts/actor-model]: ../concepts/actor_model.md -[types/pid]: ../types/pid.md +[concepts/actor-model]: https://github.com/exercism/v3/blob/main/reference/concepts/actor_model.md +[types/pid]: https://github.com/exercism/v3/blob/main/reference/types/pid.md [implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/take-a-number/.docs/instructions.md diff --git a/building/tracks/stories/anonymous-functions.bomb-defuser.md b/building/tracks/stories/anonymous-functions.bomb-defuser.md index 439376ad..a8bc77a1 100644 --- a/building/tracks/stories/anonymous-functions.bomb-defuser.md +++ b/building/tracks/stories/anonymous-functions.bomb-defuser.md @@ -27,6 +27,6 @@ These are example tasks that fit the story of the secret agent disarming a stink - [`concepts/anonymous_functions`][concepts-anonymous-functions] - [`concepts/closure`][concepts-closures] -[concepts-closures]: ../concepts/closures.md -[concepts-anonymous-functions]: ../concepts/anonymous_functions.md +[concepts-closures]: https://github.com/exercism/v3/blob/main/reference/concepts/closures.md +[concepts-anonymous-functions]: https://github.com/exercism/v3/blob/main/reference/concepts/anonymous_functions.md [implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/bomb-defuser/.docs/instructions.md diff --git a/building/tracks/stories/arrays.elyses-enchantments.md b/building/tracks/stories/arrays.elyses-enchantments.md index 77a02460..d09ba264 100644 --- a/building/tracks/stories/arrays.elyses-enchantments.md +++ b/building/tracks/stories/arrays.elyses-enchantments.md @@ -94,7 +94,7 @@ These are examples of tasks that fit the story of you wanting to re-arrange card - [`types/array`][types-array] -[types-array]: ../types/array.md +[types-array]: https://github.com/exercism/v3/blob/main/reference/types/array.md [implementation-javascript]: https://github.com/exercism/javascript/blob/main/exercises/concept/elyses-enchantments/.docs/instructions.md [implementation-javascript-2]: https://github.com/exercism/javascript/blob/main/exercises/concept/elyses-analytic-enchantments/.docs/instructions.md [implementation-javascript-3]: https://github.com/exercism/javascript/blob/main/exercises/concept/elyses-destructured-enchantments/.docs/instructions.md diff --git a/building/tracks/stories/arrays.garden-bird-count.md b/building/tracks/stories/arrays.garden-bird-count.md index 379f94f4..70e8ef8d 100644 --- a/building/tracks/stories/arrays.garden-bird-count.md +++ b/building/tracks/stories/arrays.garden-bird-count.md @@ -24,7 +24,7 @@ These are example tasks that fit the bird watching exercise: - [`types/array`][types-array] -[types-array]: ../types/array.md +[types-array]: https://github.com/exercism/v3/blob/main/reference/types/array.md [implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/bird-watcher/.docs/instructions.md [implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/bird-count/.docs/instructions.md [implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/bird-watcher/.docs/instructions.md diff --git a/building/tracks/stories/basics.lasagna.md b/building/tracks/stories/basics.lasagna.md index 578404b1..c6596f38 100644 --- a/building/tracks/stories/basics.lasagna.md +++ b/building/tracks/stories/basics.lasagna.md @@ -36,10 +36,10 @@ The story facilitates defining functions: - [`types/function`][types-function] - [`types/integer`][types-integer] -[concepts-operators]: ../concepts/operators.md -[concepts-return_values]: ../concepts/return_values.md -[types-function]: ../types/function.md -[types-integer]: ../types/integer.md +[concepts-operators]: https://github.com/exercism/v3/blob/main/reference/concepts/operators.md +[concepts-return_values]: https://github.com/exercism/v3/blob/main/reference/concepts/return_values.md +[types-function]: https://github.com/exercism/v3/blob/main/reference/types/function.md +[types-integer]: https://github.com/exercism/v3/blob/main/reference/types/integer.md [implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/lucians-luscious-lasagna/.docs/instructions.md [implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/lasagna/.docs/instructions.md [implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/lucians-luscious-lasagna/.docs/instructions.md diff --git a/building/tracks/stories/booleans.pac-man.md b/building/tracks/stories/booleans.pac-man.md index c1ca1b1f..1bed0832 100644 --- a/building/tracks/stories/booleans.pac-man.md +++ b/building/tracks/stories/booleans.pac-man.md @@ -41,7 +41,7 @@ Terms used in the story: [1][1]. Jui-Feng Weng, Shian-Shyong Tseng, Tsung-Ju Lee, Teaching Boolean Logic through Game Rule Tuning, IEEE Trans. Learning Technol. 3 (2010) 319–328. . [1]: https://doi.org/10.1109/TLT.2010.33 -[types-boolean]: ../types/boolean.md -[concepts-boolean_logic]: ../concepts/boolean_logic.md +[types-boolean]: https://github.com/exercism/v3/blob/main/reference/types/boolean.md +[concepts-boolean_logic]: https://github.com/exercism/v3/blob/main/reference/concepts/boolean_logic.md [implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/pacman-rules/.docs/instructions.md [implementation-python]: https://github.com/exercism/python/blob/main/exercises/concept/ghost-gobble-arcade-game/.docs/instructions.md diff --git a/building/tracks/stories/booleans.rpg-quest-logic.md b/building/tracks/stories/booleans.rpg-quest-logic.md index 6872bb72..7f59006a 100644 --- a/building/tracks/stories/booleans.rpg-quest-logic.md +++ b/building/tracks/stories/booleans.rpg-quest-logic.md @@ -41,7 +41,7 @@ These are recommendations, not rules, for recurring terminology in the instructi - [`types/boolean`][types-boolean] -[types-boolean]: ../types/boolean.md +[types-boolean]: https://github.com/exercism/v3/blob/main/reference/types/boolean.md [javascript-concept-booleans]: https://github.com/exercism/javascript/blob/main/exercises/concept/booleans [implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/annalyns-infiltration/.docs/instructions.md [implementation-javascript]: https://github.com/exercism/javascript/blob/main/exercises/concept/booleans/.docs/instructions.md diff --git a/building/tracks/stories/classes.amusement-park.md b/building/tracks/stories/classes.amusement-park.md index c875e0c6..6b352e39 100644 --- a/building/tracks/stories/classes.amusement-park.md +++ b/building/tracks/stories/classes.amusement-park.md @@ -31,6 +31,6 @@ Example tasks: - [`concepts/object`][concepts-objects] - [`types/class`][types-class] -[concepts-objects]: ../concepts/objects.md -[types-class]: ../types/class.md +[concepts-objects]: https://github.com/exercism/v3/blob/main/reference/concepts/objects.md +[types-class]: https://github.com/exercism/v3/blob/main/reference/types/class.md [implementation-ruby]: https://github.com/exercism/ruby/blob/main/exercises/concept/instance-variables/.docs/instructions.md diff --git a/building/tracks/stories/classes.remote-control-car.md b/building/tracks/stories/classes.remote-control-car.md index f4ed852c..4d6b5f1e 100644 --- a/building/tracks/stories/classes.remote-control-car.md +++ b/building/tracks/stories/classes.remote-control-car.md @@ -34,7 +34,7 @@ These are example tasks that fit the remote control car exercise: - [`concepts/object`][concepts-objects] - [`types/class`][types-class] -[concepts-objects]: ../concepts/objects.md -[types-class]: ../types/class.md +[concepts-objects]: https://github.com/exercism/v3/blob/main/reference/concepts/objects.md +[types-class]: https://github.com/exercism/v3/blob/main/reference/types/class.md [implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/elons-toys/.docs/instructions.md [implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/remote-control-car/.docs/instructions.md diff --git a/building/tracks/stories/conditionals.vehicle-purchase.md b/building/tracks/stories/conditionals.vehicle-purchase.md index 7da13e1e..6d1d5415 100644 --- a/building/tracks/stories/conditionals.vehicle-purchase.md +++ b/building/tracks/stories/conditionals.vehicle-purchase.md @@ -25,9 +25,9 @@ These are examples of tasks that fit the story of purchasing a vehicle: - [`concepts/guard`][concepts-guard] - [`concepts/switch`][concepts-switch] -[types-booleans]: ../types/boolean.md -[concepts-conditionals]: ../concepts/conditionals.md -[concepts-guard]: ../concepts/guard.md -[concepts-switch]: ../concepts/switch.md +[types-booleans]: https://github.com/exercism/v3/blob/main/reference/types/boolean.md +[concepts-conditionals]: https://github.com/exercism/v3/blob/main/reference/concepts/conditionals.md +[concepts-guard]: https://github.com/exercism/v3/blob/main/reference/concepts/guard.md +[concepts-switch]: https://github.com/exercism/v3/blob/main/reference/concepts/switch.md [implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/vehicle-purchase/.docs/instructions.md [implementation-julia]: https://github.com/exercism/julia/blob/main/exercises/concept/vehicle-purchase/.docs/instructions.md diff --git a/building/tracks/stories/constructors.remote-control-car-race.md b/building/tracks/stories/constructors.remote-control-car-race.md index 16140562..ea10a4ff 100644 --- a/building/tracks/stories/constructors.remote-control-car-race.md +++ b/building/tracks/stories/constructors.remote-control-car-race.md @@ -31,7 +31,7 @@ These are example tasks that fit the remote control car race exercise: - [`concepts/object`][concepts-objects] - [`types/class`][types-class] -[concepts-constructors]: ../concepts/constructors.md -[concepts-objects]: ../concepts/objects.md -[types-class]: ../types/class.md +[concepts-constructors]: https://github.com/exercism/v3/blob/main/reference/concepts/constructors.md +[concepts-objects]: https://github.com/exercism/v3/blob/main/reference/concepts/objects.md +[types-class]: https://github.com/exercism/v3/blob/main/reference/types/class.md [implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/need-for-speed/.docs/instructions.md diff --git a/building/tracks/stories/datetimes.appointment-scheduler.md b/building/tracks/stories/datetimes.appointment-scheduler.md index e23ea495..229bc01f 100644 --- a/building/tracks/stories/datetimes.appointment-scheduler.md +++ b/building/tracks/stories/datetimes.appointment-scheduler.md @@ -31,6 +31,6 @@ These are example tasks that fit the appointment scheduler exercise: - [`types/datetime`][types-datetime] -[types-datetime]: ../types/datetime.md +[types-datetime]: https://github.com/exercism/v3/blob/main/reference/types/datetime.md [implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/booking-up-for-beauty/.docs/instructions.md [implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/booking-up-for-beauty/.docs/instructions.md diff --git a/building/tracks/stories/datetimes.time-keeper.md b/building/tracks/stories/datetimes.time-keeper.md index e063ec29..08f71681 100644 --- a/building/tracks/stories/datetimes.time-keeper.md +++ b/building/tracks/stories/datetimes.time-keeper.md @@ -44,4 +44,4 @@ These are example tasks that fit the time-keeper exercise: - [`types/datetime`][types-datetime] -[types-datetime]: ../types/datetime.md +[types-datetime]: https://github.com/exercism/v3/blob/main/reference/types/datetime.md diff --git a/building/tracks/stories/deep-dig.basketball-team-website.md b/building/tracks/stories/deep-dig.basketball-team-website.md index 69558a3f..7cf87742 100644 --- a/building/tracks/stories/deep-dig.basketball-team-website.md +++ b/building/tracks/stories/deep-dig.basketball-team-website.md @@ -25,6 +25,6 @@ The story can be continued, for example: - [`types/dictionary`][types-dictionary] -[types-dictionary]: ../types/dictionary.md +[types-dictionary]: https://github.com/exercism/v3/blob/main/reference/types/dictionary.md [implementation-javascript-research-1-b]: https://github.com/exercism/research_experiment_1/tree/master/exercises/javascript-1-b/README.md [implementation-javascript-research-2-b]: https://github.com/exercism/research_experiment_1/tree/master/exercises/javascript-2-b/README.md diff --git a/building/tracks/stories/enumerable.fashion-boutique.md b/building/tracks/stories/enumerable.fashion-boutique.md index 5e12bf1e..ea75bf27 100644 --- a/building/tracks/stories/enumerable.fashion-boutique.md +++ b/building/tracks/stories/enumerable.fashion-boutique.md @@ -33,9 +33,9 @@ A single item in the inventory is represented by a map/dictionary, and the whole - [`types/list`][types-list] - [`types/map`][types-map] -[types-array]: ../types/array.md -[types-dictionary]: ../types/dictionary.md -[types-list]: ../types/list.md -[types-map]: ../types/map.md +[types-array]: https://github.com/exercism/v3/blob/main/reference/types/array.md +[types-dictionary]: https://github.com/exercism/v3/blob/main/reference/types/dictionary.md +[types-list]: https://github.com/exercism/v3/blob/main/reference/types/list.md +[types-map]: https://github.com/exercism/v3/blob/main/reference/types/map.md [implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/boutique-inventory/.docs/instructions.md [extension-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/boutique-suggestions/.docs/instructions.md diff --git a/building/tracks/stories/flag-enums.website-account-permissions.md b/building/tracks/stories/flag-enums.website-account-permissions.md index e3054a98..8fcc6076 100644 --- a/building/tracks/stories/flag-enums.website-account-permissions.md +++ b/building/tracks/stories/flag-enums.website-account-permissions.md @@ -34,6 +34,6 @@ These are example tasks that fit the website permissions exercise: - [`concepts/bitwise_manipulation`][concepts-bitwise_manipulation] - [`types/bit`][types-bit] -[concepts-bitwise_manipulation]: ../concepts/bitwise_manipulation.md -[types-bit]: ../types/bit.md +[concepts-bitwise_manipulation]: https://github.com/exercism/v3/blob/main/reference/concepts/bitwise_manipulation.md +[types-bit]: https://github.com/exercism/v3/blob/main/reference/types/bit.md [implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/attack-of-the-trolls/.docs/instructions.md diff --git a/building/tracks/stories/floating-point-numbers.savings-account.md b/building/tracks/stories/floating-point-numbers.savings-account.md index cf47f54f..36ca103e 100644 --- a/building/tracks/stories/floating-point-numbers.savings-account.md +++ b/building/tracks/stories/floating-point-numbers.savings-account.md @@ -26,6 +26,6 @@ These are example tasks that fit the savings account exercise: - [`types/floating_point_number`][types-floating_point_number] -[types-floating_point_number]: ../types/floating_point_number.md +[types-floating_point_number]: https://github.com/exercism/v3/blob/main/reference/types/floating_point_number.md [implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/interest-is-interesting/.docs/instructions.md [implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/interest-is-interesting/.docs/instructions.md diff --git a/building/tracks/stories/functions.lasagna-master.md b/building/tracks/stories/functions.lasagna-master.md index b9cefcf2..98f38264 100644 --- a/building/tracks/stories/functions.lasagna-master.md +++ b/building/tracks/stories/functions.lasagna-master.md @@ -28,11 +28,11 @@ The story facilitates defining functions: - [`concepts/nested_functions`][concepts-nested_functions] - [`types/function`][types-function] -[concepts-default_arguments]: ../concepts/default_arguments.md -[concepts-named_parameters]: ../concepts/named_parameters.md -[concepts-variadic_functions]: ../concepts/variadic_functions.md -[concepts-multiple_return_values]: ../concepts/multiple_return_values.md -[concepts-inout_parameters]: ../concepts/inout_parameters.md -[concepts-nested_functions]: ../concepts/nested_functions.md -[types-function]: ../types/function.md +[concepts-default_arguments]: https://github.com/exercism/v3/blob/main/reference/concepts/default_arguments.md +[concepts-named_parameters]: https://github.com/exercism/v3/blob/main/reference/concepts/named_parameters.md +[concepts-variadic_functions]: https://github.com/exercism/v3/blob/main/reference/concepts/variadic_functions.md +[concepts-multiple_return_values]: https://github.com/exercism/v3/blob/main/reference/concepts/multiple_return_values.md +[concepts-inout_parameters]: https://github.com/exercism/v3/blob/main/reference/concepts/inout_parameters.md +[concepts-nested_functions]: https://github.com/exercism/v3/blob/main/reference/concepts/nested_functions.md +[types-function]: https://github.com/exercism/v3/blob/main/reference/types/function.md [implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/lasagna-master/.docs/instructions.md diff --git a/building/tracks/stories/higher-order-functions.secret-agent.md b/building/tracks/stories/higher-order-functions.secret-agent.md index 972ace1f..52ecc60a 100644 --- a/building/tracks/stories/higher-order-functions.secret-agent.md +++ b/building/tracks/stories/higher-order-functions.secret-agent.md @@ -21,5 +21,5 @@ The story facilitates defining [higher-order functions][concepts-higher_order_fu - [`concepts/higher_order_functions`][concepts-higher_order_functions] -[concepts-higher_order_functions]: ../concepts/higher_order_functions.md +[concepts-higher_order_functions]: https://github.com/exercism/v3/blob/main/reference/concepts/higher_order_functions.md [implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/secret-agent/.docs/instructions.md diff --git a/building/tracks/stories/inheritance.role-playing-game.md b/building/tracks/stories/inheritance.role-playing-game.md index c6fcc47c..b082d023 100644 --- a/building/tracks/stories/inheritance.role-playing-game.md +++ b/building/tracks/stories/inheritance.role-playing-game.md @@ -41,9 +41,9 @@ The story facilitates defining functions: - [`types/integer`][types-integer] - [`types/string`][types-string] -[concepts-classes]: ../concepts/classes.md -[concepts-constructors]: ../concepts/constructors.md -[concepts-inheritance]: ../concepts/inheritance.md -[types-integer]: ../types/integer.md -[types-string]: ../types/string.md +[concepts-classes]: https://github.com/exercism/v3/blob/main/reference/concepts/classes.md +[concepts-constructors]: https://github.com/exercism/v3/blob/main/reference/concepts/constructors.md +[concepts-inheritance]: https://github.com/exercism/v3/blob/main/reference/concepts/inheritance.md +[types-integer]: https://github.com/exercism/v3/blob/main/reference/types/integer.md +[types-string]: https://github.com/exercism/v3/blob/main/reference/types/string.md [implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/wizards-and-warriors/.docs/instructions.md diff --git a/building/tracks/stories/lambda-function.secret-device.md b/building/tracks/stories/lambda-function.secret-device.md index 85c837ea..e8a9b05b 100644 --- a/building/tracks/stories/lambda-function.secret-device.md +++ b/building/tracks/stories/lambda-function.secret-device.md @@ -25,8 +25,8 @@ The story also adapts well for [concepts-bitwise_manipulation][concepts-bitwise_ - [`types/bit`][types-bit] [implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/secrets/.docs/instructions.md -[concepts-anonymous_functions]: ../concepts/anonymous_functions.md -[concepts-function_composition]: ../concepts/function_composition.md -[concepts-higher_order_functions]: ../concepts/higher_order_functions.md -[concepts-bitwise_manipulation]: ../concepts/bitwise_manipulation.md -[types-bit]: ../types/bit.md +[concepts-anonymous_functions]: https://github.com/exercism/v3/blob/main/reference/concepts/anonymous_functions.md +[concepts-function_composition]: https://github.com/exercism/v3/blob/main/reference/concepts/function_composition.md +[concepts-higher_order_functions]: https://github.com/exercism/v3/blob/main/reference/concepts/higher_order_functions.md +[concepts-bitwise_manipulation]: https://github.com/exercism/v3/blob/main/reference/concepts/bitwise_manipulation.md +[types-bit]: https://github.com/exercism/v3/blob/main/reference/types/bit.md diff --git a/building/tracks/stories/lists.language-list.md b/building/tracks/stories/lists.language-list.md index b5206c48..38407164 100644 --- a/building/tracks/stories/lists.language-list.md +++ b/building/tracks/stories/lists.language-list.md @@ -30,4 +30,4 @@ The exercise generally guides students how to: [implementation-clojure]: https://github.com/exercism/clojure/blob/main/exercises/concept/tracks-on-tracks-on-tracks/.docs/instructions.md [implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/language-list/.docs/instructions.md [implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/tracks-on-tracks-on-tracks/.docs/instructions.md -[types-list]: ../types/list.md +[types-list]: https://github.com/exercism/v3/blob/main/reference/types/list.md diff --git a/building/tracks/stories/loops.bartender.md b/building/tracks/stories/loops.bartender.md index 6ddda03a..bb9d1b79 100644 --- a/building/tracks/stories/loops.bartender.md +++ b/building/tracks/stories/loops.bartender.md @@ -21,5 +21,5 @@ These are example tasks that fit the story of the freelancer communicating with - [`concept/loops`][concept-loops] -[concept-loops]: ../concepts/loops.md +[concept-loops]: https://github.com/exercism/v3/blob/main/reference/concepts/loops.md [implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/master-mixologist/.docs/instructions.md diff --git a/building/tracks/stories/maps.high-score-board.md b/building/tracks/stories/maps.high-score-board.md index 84dbe9d7..3e2b731e 100644 --- a/building/tracks/stories/maps.high-score-board.md +++ b/building/tracks/stories/maps.high-score-board.md @@ -26,9 +26,9 @@ The student is then guided through some operations: - [`types/hash_map`][types-hash_map] - [`types/map`][types-map] -[collection]: ../types/collection.md -[types-map]: ../types/map.md -[types-hash_map]: ../types/hash_map.md -[types-dictionary]: ../types/dictionary.md +[collection]: https://github.com/exercism/v3/blob/main/reference/types/collection.md +[types-map]: https://github.com/exercism/v3/blob/main/reference/types/map.md +[types-hash_map]: https://github.com/exercism/v3/blob/main/reference/types/hash_map.md +[types-dictionary]: https://github.com/exercism/v3/blob/main/reference/types/dictionary.md [implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/high-score/.docs/instructions.md [implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/high-score-board/.docs/instructions.md diff --git a/building/tracks/stories/nullability.name-badges.md b/building/tracks/stories/nullability.name-badges.md index b247291b..89211b26 100644 --- a/building/tracks/stories/nullability.name-badges.md +++ b/building/tracks/stories/nullability.name-badges.md @@ -27,8 +27,8 @@ These are example tasks that fit the employee badges exercise: - [`types/null`][types-null] - [`types/nullable`][types-nullable] -[types-null]: ../types/null.md -[types-nullable]: ../types/nullable.md +[types-null]: https://github.com/exercism/v3/blob/main/reference/types/null.md +[types-nullable]: https://github.com/exercism/v3/blob/main/reference/types/nullable.md [implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/tim-from-marketing/.docs/instructions.md [implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/name-badge/.docs/instructions.md [implementation-javascript]: https://github.com/exercism/javascript/blob/main/exercises/concept/nullability/.docs/instructions.md diff --git a/building/tracks/stories/numbers.car-production-line.md b/building/tracks/stories/numbers.car-production-line.md index 7b63fbf9..6bac485c 100644 --- a/building/tracks/stories/numbers.car-production-line.md +++ b/building/tracks/stories/numbers.car-production-line.md @@ -29,8 +29,8 @@ These are example tasks that fit the car production line exercise: - [`types/integer`][types-integer] - [`types/floating_point_number`][types-floating_point_number] -[types-number]: ../types/number.md -[types-integer]: ../types/integer.md -[types-floating_point_number]: ../types/floating_point_number.md +[types-number]: https://github.com/exercism/v3/blob/main/reference/types/number.md +[types-integer]: https://github.com/exercism/v3/blob/main/reference/types/integer.md +[types-floating_point_number]: https://github.com/exercism/v3/blob/main/reference/types/floating_point_number.md [implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/cars-assemble/.docs/instructions.md [implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/cars-assemble/.docs/instructions.md diff --git a/building/tracks/stories/numbers.freelancer-rates.md b/building/tracks/stories/numbers.freelancer-rates.md index 818b72d0..8fdc5778 100644 --- a/building/tracks/stories/numbers.freelancer-rates.md +++ b/building/tracks/stories/numbers.freelancer-rates.md @@ -47,10 +47,10 @@ These are recommendations, not rules, for recurring terminology in the instructi - [`types/floating_point_number`][types-floating-point-number] - [`types/string`][types-string] -[types-number]: ../types/number.md -[types-decimal-number]: ../types/decimal_number.md -[types-floating-point-number]: ../types/floating_point_number.md -[types-string]: ../types/string.md +[types-number]: https://github.com/exercism/v3/blob/main/reference/types/number.md +[types-decimal-number]: https://github.com/exercism/v3/blob/main/reference/types/decimal_number.md +[types-floating-point-number]: https://github.com/exercism/v3/blob/main/reference/types/floating_point_number.md +[types-string]: https://github.com/exercism/v3/blob/main/reference/types/string.md [implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/freelancer-rates/.docs/instructions.md [implementation-javascript]: https://github.com/exercism/javascript/blob/main/exercises/concept/numbers/.docs/instructions.md [implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/freelancer-rates/.docs/instructions.md diff --git a/building/tracks/stories/optionals.pizza-slices.md b/building/tracks/stories/optionals.pizza-slices.md index efa353b6..c655759f 100644 --- a/building/tracks/stories/optionals.pizza-slices.md +++ b/building/tracks/stories/optionals.pizza-slices.md @@ -19,5 +19,5 @@ The story facilitates exploration of [Optional types][types-option-types] which - [`types/option_types`][types-option-types] -[types-option-types]: ../types/option_types.md +[types-option-types]: https://github.com/exercism/v3/blob/main/reference/types/option_types.md [implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/pizza-slices/.docs/instructions.md diff --git a/building/tracks/stories/pattern-matching.number-guessing-game.md b/building/tracks/stories/pattern-matching.number-guessing-game.md index ccde5bbd..fc0b0975 100644 --- a/building/tracks/stories/pattern-matching.number-guessing-game.md +++ b/building/tracks/stories/pattern-matching.number-guessing-game.md @@ -27,6 +27,6 @@ These are example tasks that fit the number guessing game exercise: - [`concepts/pattern_matching`][concepts-pattern_matching] -[concepts-pattern_matching]: ../concepts/pattern_matching.md +[concepts-pattern_matching]: https://github.com/exercism/v3/blob/main/reference/concepts/pattern_matching.md [implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/guessing-game/.docs/instructions.md [implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/guessing-game/.docs/instructions.md diff --git a/building/tracks/stories/primitive-types.rna-and-dna-processing.md b/building/tracks/stories/primitive-types.rna-and-dna-processing.md index 20a54b42..69c2a6cd 100644 --- a/building/tracks/stories/primitive-types.rna-and-dna-processing.md +++ b/building/tracks/stories/primitive-types.rna-and-dna-processing.md @@ -18,5 +18,5 @@ You could consider adding those exercises twice (perhaps as practice exercise) i - [`types/string`][types-string] [implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/dna-encoding/.docs/instructions.md -[types-string]: ../types/string.md -[types-char]: ../types/char.md +[types-string]: https://github.com/exercism/v3/blob/main/reference/types/string.md +[types-char]: https://github.com/exercism/v3/blob/main/reference/types/char.md diff --git a/building/tracks/stories/promises.klingon-translation-service.md b/building/tracks/stories/promises.klingon-translation-service.md index fe4cf1cf..e47f4b57 100644 --- a/building/tracks/stories/promises.klingon-translation-service.md +++ b/building/tracks/stories/promises.klingon-translation-service.md @@ -67,10 +67,10 @@ All the translation texts are Klingon to English. - [`types/string`][types-string] - [`types/number`][types-number] -[types-promise]: ../types/promise.md -[types-future]: ../types/future.md -[types-string]: ../types/string.md -[types-number]: ../types/number.md +[types-promise]: https://github.com/exercism/v3/blob/main/reference/types/promise.md +[types-future]: https://github.com/exercism/v3/blob/main/reference/types/future.md +[types-string]: https://github.com/exercism/v3/blob/main/reference/types/string.md +[types-number]: https://github.com/exercism/v3/blob/main/reference/types/number.md [implementation-javascript]: https://github.com/exercism/javascript/blob/main/exercises/concept/promises/.docs/instructions.md ## N.B. diff --git a/building/tracks/stories/records.nba-root-for-team-algorithm.md b/building/tracks/stories/records.nba-root-for-team-algorithm.md index 96b335f4..f38a67c3 100644 --- a/building/tracks/stories/records.nba-root-for-team-algorithm.md +++ b/building/tracks/stories/records.nba-root-for-team-algorithm.md @@ -26,5 +26,5 @@ These are example tasks that fit the NBA root-for-team algorithm exercise: - [`types/record`][types-record] -[types-record]: ../types/record.md +[types-record]: https://github.com/exercism/v3/blob/main/reference/types/record.md [implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/bandwagoner/.docs/instructions.md diff --git a/building/tracks/stories/recursion.pizza-delivery.md b/building/tracks/stories/recursion.pizza-delivery.md index 3ad86498..22e99485 100644 --- a/building/tracks/stories/recursion.pizza-delivery.md +++ b/building/tracks/stories/recursion.pizza-delivery.md @@ -37,6 +37,6 @@ These are example tasks that fit the pizza delivery exercise: - [`concepts/recursion`][concepts-recursion] -[concepts-recursion]: ../concepts/recursion.md +[concepts-recursion]: https://github.com/exercism/v3/blob/main/reference/concepts/recursion.md [implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/pizza-pricing/.docs/instructions.md [implementation-javascript]: https://github.com/exercism/javascript/blob/main/exercises/concept/recursion/.docs/instructions.md diff --git a/building/tracks/stories/strings-and-characters.custom-signs.md b/building/tracks/stories/strings-and-characters.custom-signs.md index 94891b32..0cf7fadb 100644 --- a/building/tracks/stories/strings-and-characters.custom-signs.md +++ b/building/tracks/stories/strings-and-characters.custom-signs.md @@ -23,6 +23,6 @@ These are example tasks that fit the story of a customer designing a custom sign - [`types/string`][types-string] - [`types/character`][types-character] -[types-string]: ../types/string.md -[types-character]: ../types/character.md +[types-string]: https://github.com/exercism/v3/blob/main/reference/types/string.md +[types-character]: https://github.com/exercism/v3/blob/main/reference/types/character.md [implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/custom-signs/.docs/instructions.md diff --git a/building/tracks/stories/strings.high-school-sweethearts.md b/building/tracks/stories/strings.high-school-sweethearts.md index 98f11e25..611c6983 100644 --- a/building/tracks/stories/strings.high-school-sweethearts.md +++ b/building/tracks/stories/strings.high-school-sweethearts.md @@ -38,5 +38,5 @@ These are example tasks that fit the high school sweethearts exercise, each task - [`types/string`][types-string] -[types-string]: ../types/string.md +[types-string]: https://github.com/exercism/v3/blob/main/reference/types/string.md [implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/high-school-sweetheart/.docs/instructions.md diff --git a/building/tracks/stories/strings.log-line-parser.md b/building/tracks/stories/strings.log-line-parser.md index 1706072e..4863385c 100644 --- a/building/tracks/stories/strings.log-line-parser.md +++ b/building/tracks/stories/strings.log-line-parser.md @@ -34,7 +34,7 @@ These are example tasks that fit the log line parser: - [`types/string`][types-string] -[types-string]: ../types/string.md +[types-string]: https://github.com/exercism/v3/blob/main/reference/types/string.md [implementation-csharp]: https://github.com/exercism/csharp/blob/main/exercises/concept/log-levels/.docs/instructions.md [implementation-cpp]: https://github.com/exercism/cpp/blob/main/exercises/concept/strings/.docs/instructions.md [implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/log-levels/.docs/instructions.md diff --git a/building/tracks/stories/strings.party-robot.md b/building/tracks/stories/strings.party-robot.md index 2adb77f7..0a72724e 100644 --- a/building/tracks/stories/strings.party-robot.md +++ b/building/tracks/stories/strings.party-robot.md @@ -39,5 +39,5 @@ You will be sitting next to ! - [`types/string`][types-string] -[types-string]: ../types/string.md +[types-string]: https://github.com/exercism/v3/blob/main/reference/types/string.md [implementation-go]: https://github.com/exercism/go/blob/main/exercises/concept/strings/.docs/instructions.md diff --git a/building/tracks/stories/strings.poetry-club-door-policy.md b/building/tracks/stories/strings.poetry-club-door-policy.md index edb624c2..7b32d81e 100644 --- a/building/tracks/stories/strings.poetry-club-door-policy.md +++ b/building/tracks/stories/strings.poetry-club-door-policy.md @@ -72,6 +72,6 @@ with the renowned poets. - [`types/string`][types-string] -[types-string]: ../types/string.md +[types-string]: https://github.com/exercism/v3/blob/main/reference/types/string.md [implementation-javascript]: https://github.com/exercism/javascript/blob/main/exercises/concept/strings/.docs/instructions.md [implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/poetry-club/.docs/instructions.md diff --git a/building/tracks/stories/structs-and-classes.windowing-system.md b/building/tracks/stories/structs-and-classes.windowing-system.md index a3f588de..28499a49 100644 --- a/building/tracks/stories/structs-and-classes.windowing-system.md +++ b/building/tracks/stories/structs-and-classes.windowing-system.md @@ -55,6 +55,6 @@ These are recommendations, not rules, for recurring terminology in the instructi - [`types/struct`][types-struct] - [`types/class`][types-class] -[types-struct]: ../types/struct.md -[types-class]: ../types/class.md +[types-struct]: https://github.com/exercism/v3/blob/main/reference/types/struct.md +[types-class]: https://github.com/exercism/v3/blob/main/reference/types/class.md [implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/windowing-system/.docs/instructions.md diff --git a/building/tracks/stories/sum-types.valentines-day.md b/building/tracks/stories/sum-types.valentines-day.md index 233dc81a..7cd5e281 100644 --- a/building/tracks/stories/sum-types.valentines-day.md +++ b/building/tracks/stories/sum-types.valentines-day.md @@ -30,5 +30,5 @@ These are example tasks that fit the pizza delivery exercise: - [`types/sum_type`][types-sum_type] -[types-sum_type]: ../types/sum_type.md +[types-sum_type]: https://github.com/exercism/v3/blob/main/reference/types/sum_type.md [implementation-fsharp]: https://github.com/exercism/fsharp/blob/main/exercises/concept/valentines-day/.docs/instructions.md diff --git a/building/tracks/stories/ternary-operators.employee-salary.md b/building/tracks/stories/ternary-operators.employee-salary.md index c9aa684e..720b26dc 100644 --- a/building/tracks/stories/ternary-operators.employee-salary.md +++ b/building/tracks/stories/ternary-operators.employee-salary.md @@ -32,5 +32,5 @@ These are recommendations, not rules, for recurring terminology in the instructi - [`types/boolean`][types-boolean] -[types-boolean]: ../types/boolean.md +[types-boolean]: https://github.com/exercism/v3/blob/main/reference/types/boolean.md [implementation-java]: https://github.com/exercism/java/blob/main/exercises/concept/ternary-operators/.docs/instructions.md diff --git a/building/tracks/stories/tuples.carnival-game.md b/building/tracks/stories/tuples.carnival-game.md index 99319759..760b701c 100644 --- a/building/tracks/stories/tuples.carnival-game.md +++ b/building/tracks/stories/tuples.carnival-game.md @@ -20,4 +20,4 @@ This should guide students how to use: ## Implementations -[type-tuple]: ../types/tuple.md +[type-tuple]: https://github.com/exercism/v3/blob/main/reference/types/tuple.md diff --git a/building/tracks/stories/tuples.kitchen-calculator.md b/building/tracks/stories/tuples.kitchen-calculator.md index c73d3175..d27eca73 100644 --- a/building/tracks/stories/tuples.kitchen-calculator.md +++ b/building/tracks/stories/tuples.kitchen-calculator.md @@ -32,6 +32,6 @@ This should guide students how to use: - [Elixir: tuples][implementation-elixir] -[concept-duck-typing]: ../concepts/duck_typing.md -[type-tuple]: ../types/tuple.md +[concept-duck-typing]: https://github.com/exercism/v3/blob/main/reference/concepts/duck_typing.md +[type-tuple]: https://github.com/exercism/v3/blob/main/reference/types/tuple.md [implementation-elixir]: https://github.com/exercism/elixir/blob/main/exercises/concept/kitchen-calculator/.docs/instructions.md diff --git a/building/tracks/stories/tuples.santas-helper.md b/building/tracks/stories/tuples.santas-helper.md index 692854d7..aff585b3 100644 --- a/building/tracks/stories/tuples.santas-helper.md +++ b/building/tracks/stories/tuples.santas-helper.md @@ -19,5 +19,5 @@ The story facilitates the exploration of [tuples][type-tuple] in a language. It - [`types/tuple`][type-tuple] -[type-tuple]: ../types/tuple.md +[type-tuple]: https://github.com/exercism/v3/blob/main/reference/types/tuple.md [implementation-swift]: https://github.com/exercism/swift/blob/main/exercises/concept/santas-helper/.docs/instructions.md From 0bd5121b2df70845fb4aa3aa7bc759cfb1d78d14 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 12:33:06 +0200 Subject: [PATCH 11/23] Test --- building/tracks/README.md | 14 +++++++------- building/tracks/config-json.md | 2 +- building/tracks/practice-exercises.md | 8 ++++---- building/tracks/presentation.md | 4 ++-- building/tracks/shared-files.md | 4 ++-- community/good-member/README.md | 4 ++-- community/maintainers.md | 2 +- mentoring/choosing_a_solution.md | 4 ++-- 8 files changed, 21 insertions(+), 21 deletions(-) diff --git a/building/tracks/README.md b/building/tracks/README.md index 364fc83b..dc413026 100644 --- a/building/tracks/README.md +++ b/building/tracks/README.md @@ -4,22 +4,22 @@ A track consists of many different parts. ## Metadata -The track's configuration and metadata are specified in the `config.json` file. It lists the track's exercises, concepts, editor settings, and much more. Checkout the [config.json documentation](./config-json.md). +The track's configuration and metadata are specified in the `config.json` file. It lists the track's exercises, concepts, editor settings, and much more. Checkout the [config.json documentation](/docs/building/tracks/config-json). ## Concepts -All concept and practices exercises of a track involve _concepts_. These concepts are separate entities by themselves. Check the [documentation](./concepts.md) for more information. +All concept and practices exercises of a track involve _concepts_. These concepts are separate entities by themselves. Check the [documentation](/docs/building/tracks/concepts) for more information. ## Exercises Tracks have two types of exercises: -- Concept exercises: they are designed to teach one or more concepts to a student. Check the [documentation](./concept-exercises.md) for more information. -- Practice exercise: they are designed to practice learned concepts. Check the [documentation](./practice-exercises.md) for more information. +- Concept exercises: they are designed to teach one or more concepts to a student. Check the [documentation](/docs/building/tracks) for more information. +- Practice exercise: they are designed to practice learned concepts. Check the [documentation](/docs/building/tracks) for more information. ## Shared files -Some files are not specific to individual exercises, but are instead applicable to _all_ exercises. Check the [documentation](./shared-files.md) for more information. +Some files are not specific to individual exercises, but are instead applicable to _all_ exercises. Check the [documentation](/docs/building/tracks) for more information. ## Config @@ -31,7 +31,7 @@ TODO: describe the `docs` directory's contents ## Widgets -Some parts of the track can be displayed in [widgets](./widgets.md), such as [concepts](./widgets.md#conceptwidget) and [exercises](./widgets.md#exercisewidget). +Some parts of the track can be displayed in [widgets](/docs/building/tracks#exercisewidget). ## Style guide @@ -77,5 +77,5 @@ csharp | ├── debug.md | ├── help.md | └── tests.md -└── [config.json](./config-json.md) +└── [config.json](/docs/building/tracks) diff --git a/building/tracks/config-json.md b/building/tracks/config-json.md index c6a97e05..6eafaaf1 100644 --- a/building/tracks/config-json.md +++ b/building/tracks/config-json.md @@ -97,7 +97,7 @@ The following fields make up a concept exercise: - `wip`: A work-in-progress exercise not ready for public consumption. Exercises with this tag will not be shown to students on the UI or be used for unlocking logic. They may appear for maintainers. - `beta`: This signifies active exercises that are new and which we would like feedback on. We show a beta label on the site for these exercise, with a Call To Action of "Please give us feedback." - `active`: The normal state of active exercises - - `deprecated`: Exercises that are no longer shown to students who have not started them (not usable at this stage). See [Deprecated Exercises](./deprecated-exercises) for more information. + - `deprecated`: Exercises that are no longer shown to students who have not started them (not usable at this stage). See [Deprecated Exercises](/docs/building/tracks/deprecated-exercises) for more information. #### Example diff --git a/building/tracks/practice-exercises.md b/building/tracks/practice-exercises.md index f34fb79e..e7599879 100644 --- a/building/tracks/practice-exercises.md +++ b/building/tracks/practice-exercises.md @@ -4,7 +4,7 @@ ## Metadata -Practice Exercise metadata is defined in the `exercises.practice` key in the [config.json file](./config-json.md#practice-exercises). The metadata defines the exercise's UUID, slug and more. +Practice Exercise metadata is defined in the `exercises.practice` key in the [config.json file](/docs/building/tracks#practice-exercises). The metadata defines the exercise's UUID, slug and more. ### Example @@ -44,7 +44,7 @@ The `prerequisites` key lists the Concepts that a student must have completed in ## Files -Each Practice Exercise has its own directory within the track's `exercises/practice` directory. The name of the Practice Exercise directory must match the `slug` property of the Practice Exercise, as defined in the [config.json file](./config-json.md#concept-exercises). +Each Practice Exercise has its own directory within the track's `exercises/practice` directory. The name of the Practice Exercise directory must match the `slug` property of the Practice Exercise, as defined in the [config.json file](/docs/building/tracks#concept-exercises). A Practice Exercise has three types of files: @@ -385,8 +385,8 @@ Some languages require additional files for the tests to run. Example of these a ## Shared files -Some files are not specific to individual exercises, but are instead applicable to _all_ exercises. Check the [documentation](./shared-files.md) for more information. +Some files are not specific to individual exercises, but are instead applicable to _all_ exercises. Check the [documentation](/docs/building/tracks/shared-files.md) for more information. ## Presentation -There is a difference in how exercise documentation is presented to the student when using the in-browser editor versus using the CLI. See [this document](./presentation.md) for more information. +There is a difference in how exercise documentation is presented to the student when using the in-browser editor versus using the CLI. See [this document](/docs/building/tracks/presentation.md) for more information. diff --git a/building/tracks/presentation.md b/building/tracks/presentation.md index fb492235..2767e23d 100644 --- a/building/tracks/presentation.md +++ b/building/tracks/presentation.md @@ -17,7 +17,7 @@ These file are specific to each exercise: - `.docs/hints.md`: provide hints to a student to help them get themselves unstuck in an exercise (required for concept exercises, optional for practice exercises) - `.meta/config.json`: contains source information of the exercise (optional) -See the [Concept Exercises documentation](./concept-exercises#documentationfiles) and the [Practice Exercises documentation](./concept-exercises#documentationfiles) for more information. +See the [Concept Exercises documentation](/docs/building/tracks/concept-exercises#documentationfiles) and the [Practice Exercises documentation](/docs/building/tracks/concept-exercises#documentationfiles) for more information. ### Track-specific files @@ -27,7 +27,7 @@ These file are shared between all exercises: - `help.md`: contains track-specific-wide instructions on how to get help (required) - `tests.md`: contains track-specific instructions on how to run the tests (required) -See the [shared files documentation](./shared-files.md) for more information. +See the [shared files documentation](/docs/building/tracks/shared-files.md) for more information. ### Exercism-wide documentation diff --git a/building/tracks/shared-files.md b/building/tracks/shared-files.md index 7e3f825e..81437257 100644 --- a/building/tracks/shared-files.md +++ b/building/tracks/shared-files.md @@ -1,12 +1,12 @@ # Shared files -Some documentation files apply to both [Concept Exercises](./concept-exercises.md) and [Practice Exercises](./practice-exercises.md). These cross-exercise files are located within the track's `exercises/shared/.docs` directory: +Some documentation files apply to both [Concept Exercises](/docs/building/tracksconcept-exercises.md) and [Practice Exercises](/docs/building/trackspractice-exercises.md). These cross-exercise files are located within the track's `exercises/shared/.docs` directory: - `debug.md`: explains how a student that is coding in the browser can still do "debugging" (optional) - `help.md`: contains track-specific-wide instructions on how to get help (required) - `tests.md`: contains track-specific instructions on how to run the tests (required) -The [Presentation document](./presentation.md) describes how these files are used to present content to the student. +The [Presentation document](/docs/building/trackspresentation.md) describes how these files are used to present content to the student. --- diff --git a/community/good-member/README.md b/community/good-member/README.md index 84d4dc8e..9767d04e 100644 --- a/community/good-member/README.md +++ b/community/good-member/README.md @@ -48,7 +48,7 @@ And it is an incredible experience when both sides are open to new information ( It's easy to remember that feeling in the context of being a student in a mentoring session, but that spirit of openness just as important everywhere else within Exercism. When you think something sucks about the website, start by asking yourself what things you might _not_ know— a decision that looks ridiculous from your perspective might indicate a gap in your knowledge — just as much as it might indicate that the decision actually **is** ridiculous. -Take a look at our post on [Chesterton's Fence](./being-a-good-community-member/chestertons-fence) for some practical examples of how this principle applies. +Take a look at our post on [Chesterton's Fence](/docs/community/being-a-good-community-member/chestertons-fence) for some practical examples of how this principle applies. ## Disagree constructively @@ -133,4 +133,4 @@ There are lots of ways to embrace being kind within Exercism, but the most power In a cross-cultural space full of people from different backgrounds -- who share different beliefs, value-systems, and natural languages -- communicating clearly is a super-power. It's easy to know how you intend your words to _come across_, but it's difficult to know how others _perceive your words_. -Take a read of [The words that we use](./being-a-good-community-member/the-words-that-we-use) to learn more about why this matters so much. +Take a read of [The words that we use](/docs/community/being-a-good-community-member/the-words-that-we-use) to learn more about why this matters so much. diff --git a/community/maintainers.md b/community/maintainers.md index 9242e544..d2853114 100644 --- a/community/maintainers.md +++ b/community/maintainers.md @@ -7,7 +7,7 @@ They are senior members of our community who have demonstrated their alignment t This document outlines a formal process to become and remain a Maintainer, which has been designed to make it achievable and fair for everyone. If you want to one day become a Maintainer (yay!!), then please read on! -But remember, most people who help build Exercism are not Maintainers - they are [Contributors](./Contributors). +But remember, most people who help build Exercism are not Maintainers - they are [Contributors](/docs/community/contributors). **There is no barrier to contributing to Exercism** and every bit of help is gratefully received. We aim to have at least active two Maintainers for each Track, and at least one active maintainer for all the parts of the platform. diff --git a/mentoring/choosing_a_solution.md b/mentoring/choosing_a_solution.md index 8c735a9f..43f7341a 100644 --- a/mentoring/choosing_a_solution.md +++ b/mentoring/choosing_a_solution.md @@ -43,7 +43,7 @@ The UI will look something like this: 1. The main part of the left side contains the student's code. By default you'll be seeing their most recent iteration. - If they've submitted multiple iterations, you can switch through these using the numbers in circles at the bottom. + If they've submitted multiple iterations, you can switch through these using the numbers in circles at the bottom. If they've only submitted one iteration, you won't see those icons. 2. You can use the tabs at the top to switch between the student's code, the tests, and the instructions. @@ -74,4 +74,4 @@ If you click on this you'll see some information that might be useful for you: If you've read the code, checked the guidance, and feel you can be helpful, then it's time to get going! Click the "Start mentoring" button and you'll be prompted to write your feedback. -Have a read of [How to give great feedback](./how-to-give-great-feedback) next! +Have a read of [How to give great feedback](/docs/community/how-to-give-great-feedback) next! From e2a31518f0548fafdec8d6f068a4174fb35365ee Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 13:04:03 +0200 Subject: [PATCH 12/23] Fix invalid link --- building/tracks/concept-exercises.md | 2 +- building/tracks/concepts.md | 2 +- building/tracks/presentation.md | 2 +- building/tracks/shared-files.md | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/building/tracks/concept-exercises.md b/building/tracks/concept-exercises.md index 7dbe78a7..6533717d 100644 --- a/building/tracks/concept-exercises.md +++ b/building/tracks/concept-exercises.md @@ -124,7 +124,7 @@ my_first_variable = SomeComplexObject.new **Presence:** Optional -The `introduction.md` document introduces the exercise's concept(s) to the student. Each concept also has its _own_ [`introduction.md` document](/docs/building/tracks/concepts#fileintroductio), which is not shown outside the context of an exercise. +The `introduction.md` document introduces the exercise's concept(s) to the student. Each concept also has its _own_ [`introduction.md` document](/docs/building/tracks/concepts#fileintroduction), which is not shown outside the context of an exercise. If the concept's introduction should be included verbatim in the exercise's introduction, an `introduction.md.tpl` file can be used. This file allows referring to concept introductions through placeholders: `%{concept:}`. diff --git a/building/tracks/concepts.md b/building/tracks/concepts.md index cb45f55e..a7b3864e 100644 --- a/building/tracks/concepts.md +++ b/building/tracks/concepts.md @@ -58,7 +58,7 @@ concepts **Presence:** Required -After completing the corresponding Concept Exercise (otherwise known as "learning" a Concept), the Concept page will show the contents of the `about.md` file instead of the `introduction.md` file. The `about.md` file should provide students with comprehensive information on what they need to know to be fluent in the concept. At a minimum, this file should contain all information that is introduced in the Concepts' [`introduction.md` document](/docs/building/tracks/concepts#file-introductio). +After completing the corresponding Concept Exercise (otherwise known as "learning" a Concept), the Concept page will show the contents of the `about.md` file instead of the `introduction.md` file. The `about.md` file should provide students with comprehensive information on what they need to know to be fluent in the concept. At a minimum, this file should contain all information that is introduced in the Concepts' [`introduction.md` document](/docs/building/tracks/concepts#file-introduction). If the Concept introduces new syntax, syntax samples should be included. The student should not have to follow a lot of links to gain the knowledge that the file tries to convey. Instead the `about.md` should contain enough information to be understandable within its context. diff --git a/building/tracks/presentation.md b/building/tracks/presentation.md index 2767e23d..c8f069e0 100644 --- a/building/tracks/presentation.md +++ b/building/tracks/presentation.md @@ -27,7 +27,7 @@ These file are shared between all exercises: - `help.md`: contains track-specific-wide instructions on how to get help (required) - `tests.md`: contains track-specific instructions on how to run the tests (required) -See the [shared files documentation](/docs/building/tracks/shared-files.md) for more information. +See the [shared files documentation](/docs/building/tracks/shared-files) for more information. ### Exercism-wide documentation diff --git a/building/tracks/shared-files.md b/building/tracks/shared-files.md index 81437257..24caed49 100644 --- a/building/tracks/shared-files.md +++ b/building/tracks/shared-files.md @@ -1,12 +1,12 @@ # Shared files -Some documentation files apply to both [Concept Exercises](/docs/building/tracksconcept-exercises.md) and [Practice Exercises](/docs/building/trackspractice-exercises.md). These cross-exercise files are located within the track's `exercises/shared/.docs` directory: +Some documentation files apply to both [Concept Exercises](/docs/building/tracks/concept-exercises) and [Practice Exercises](/docs/building/tracks/practice-exercises). These cross-exercise files are located within the track's `exercises/shared/.docs` directory: - `debug.md`: explains how a student that is coding in the browser can still do "debugging" (optional) - `help.md`: contains track-specific-wide instructions on how to get help (required) - `tests.md`: contains track-specific instructions on how to run the tests (required) -The [Presentation document](/docs/building/trackspresentation.md) describes how these files are used to present content to the student. +The [Presentation document](/docs/building/tracks/presentation) describes how these files are used to present content to the student. --- From c5abae6bcd0319667bfc9c11ea99de56df25df46 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 13:14:41 +0200 Subject: [PATCH 13/23] More fixes --- building/configlet/generating-documents.md | 2 +- building/configlet/lint.md | 2 +- building/tracks/concepts.md | 2 +- building/tracks/practice-exercises.md | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/building/configlet/generating-documents.md b/building/configlet/generating-documents.md index ef80bd6f..1ad4f614 100644 --- a/building/configlet/generating-documents.md +++ b/building/configlet/generating-documents.md @@ -12,7 +12,7 @@ These are the documents that configlet can generate. ### Document: Concept Exercise's introduction.md file -Each [Concept Exercise](/docs/building/tracks/concept-exercises.md) has an [`introduction.md` file](/docs/building/tracks/concept-exercises.md#docsintroductionmd). Each exercise can have an optional [`introduction.md.tpl` file](/docs/building/tracks/concept-exercises.md#docsintroductionmdtploptional). +Each [Concept Exercise](/docs/building/tracks/concept-exercises) has an [`introduction.md` file](/docs/building/tracks/concept-exercises#docsintroductionmd). Each exercise can have an optional [`introduction.md.tpl` file](/docs/building/tracks/concept-exercises#docsintroductionmdtploptional). The template file should be treated like a regular Markdown file but with one addition: the ability to specify placeholders. The following placeholders are supported: diff --git a/building/configlet/lint.md b/building/configlet/lint.md index 7539652c..58c988ed 100644 --- a/building/configlet/lint.md +++ b/building/configlet/lint.md @@ -192,7 +192,7 @@ The `config.json` file should have the following checks: - The `"tags"` key is required - The `"tags"` value must be an array of strings - The `"tags"` values must not have duplicates -- The `"tags"` values must use one of the [pre-defined tag values](/docs/building/tracks/config-json.md#tags) +- The `"tags"` values must use one of the [pre-defined tag values](/docs/building/tracks/config-json#tags) ### Rule: exercises/concept/<slug>/.meta/config.json is valid diff --git a/building/tracks/concepts.md b/building/tracks/concepts.md index a7b3864e..2c7a153f 100644 --- a/building/tracks/concepts.md +++ b/building/tracks/concepts.md @@ -62,7 +62,7 @@ After completing the corresponding Concept Exercise (otherwise known as "learnin If the Concept introduces new syntax, syntax samples should be included. The student should not have to follow a lot of links to gain the knowledge that the file tries to convey. Instead the `about.md` should contain enough information to be understandable within its context. -The `about.md` file is not limited to the scope of the corresponding Concept Exercise. The content can require knowledge of other concepts that will be introduced later on. If other Concepts are mentioned, their respective introductions should be linked to (see [internal linking](https://github.com/exercism/docs/blob/main/anatomy/tracks/internal-linking.md) for details). +The `about.md` file is not limited to the scope of the corresponding Concept Exercise. The content can require knowledge of other concepts that will be introduced later on. If other Concepts are mentioned, their respective introductions should be linked to (see [internal linking](/docs/building/markdown/internal-linking) for details). Here some examples of what could be covered. diff --git a/building/tracks/practice-exercises.md b/building/tracks/practice-exercises.md index e7599879..901eccad 100644 --- a/building/tracks/practice-exercises.md +++ b/building/tracks/practice-exercises.md @@ -385,8 +385,8 @@ Some languages require additional files for the tests to run. Example of these a ## Shared files -Some files are not specific to individual exercises, but are instead applicable to _all_ exercises. Check the [documentation](/docs/building/tracks/shared-files.md) for more information. +Some files are not specific to individual exercises, but are instead applicable to _all_ exercises. Check the [documentation](/docs/building/tracks/shared-files) for more information. ## Presentation -There is a difference in how exercise documentation is presented to the student when using the in-browser editor versus using the CLI. See [this document](/docs/building/tracks/presentation.md) for more information. +There is a difference in how exercise documentation is presented to the student when using the in-browser editor versus using the CLI. See [this document](/docs/building/tracks/presentation) for more information. From 89ef4c940450c2ef840a00bebb755b4b7444c7ea Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 13:18:10 +0200 Subject: [PATCH 14/23] More fixes --- building/markdown/internal-linking.md | 2 +- building/markdown/widgets.md | 6 +++--- building/tracks/README.md | 3 ++- building/tracks/practice-exercises.md | 4 ++-- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/building/markdown/internal-linking.md b/building/markdown/internal-linking.md index 8830fd33..f3d6c323 100644 --- a/building/markdown/internal-linking.md +++ b/building/markdown/internal-linking.md @@ -4,7 +4,7 @@ Links rendered via Exercism's Markdown parser are checked to see if they are int A tooltip for a concept might look like this: - + ## Usage diff --git a/building/markdown/widgets.md b/building/markdown/widgets.md index 8a1b36ec..40e79667 100644 --- a/building/markdown/widgets.md +++ b/building/markdown/widgets.md @@ -3,12 +3,12 @@ Concept and Exercise Widgets are used frequently throughout the site. They look like this: - - + + They also have user-contextual tooltips such as this: - + You may like to render these widgets yourself in Markdown documents, for example at the end of a document to suggest extra reading or good exercises to learn something from. diff --git a/building/tracks/README.md b/building/tracks/README.md index dc413026..25c68ca8 100644 --- a/building/tracks/README.md +++ b/building/tracks/README.md @@ -35,7 +35,8 @@ Some parts of the track can be displayed in [widgets](/docs/building/tracks#exer ## Style guide -All documents should adhere to the [style guide](../../building/markdown/style-guide.md). Markdown documents should also adhere to our [Markdown standards](../../building/markdown/markdown.md). +All documents should adhere to the [style guide](/docs/building/markdown/style-guide). Markdown documents +should also adhere to our [Markdown standards](/docs/building/markdown/markdown). ## Example diff --git a/building/tracks/practice-exercises.md b/building/tracks/practice-exercises.md index 901eccad..70ce5a77 100644 --- a/building/tracks/practice-exercises.md +++ b/building/tracks/practice-exercises.md @@ -100,7 +100,7 @@ exercises **Presence:** Required if the exercise implements a Problem Specifications Exercise with an `introduction.md` file -If the exercise implements a [Problem Specifications Exercise](https://github.com/exercism/problem-specifications/), this file's contents should match the Problem Specification Exercise's `introduction.md` file. configlet has functionality to automatically [sync the contents](../configlet/generating-documents#document-practice-exercises-introductionmd-file) of this file. +If the exercise implements a [Problem Specifications Exercise](https://github.com/exercism/problem-specifications/), this file's contents should match the Problem Specification Exercise's `introduction.md` file. configlet has functionality to automatically [sync the contents](/docs/building/configlet/generating-documents#document-practice-exercises-introductionmd-file) of this file. If the exercise is _not_ based on a Problem Specifications Exercise, consider the following: @@ -142,7 +142,7 @@ As part of his teenage rebellion, Bob has decided to only communicate using ASCI **Presence:** Required -If the exercise implements a [Problem Specifications Exercise](https://github.com/exercism/problem-specifications/), this file's contents should match the Problem Specification Exercise's `instructions.md` file (or `description.md` file if there is no `instructions.md` file). configlet has functionality to automatically [sync the contents](../configlet/generating-documents#document-practice-exercises-instructionsmd-file) of this file. +If the exercise implements a [Problem Specifications Exercise](https://github.com/exercism/problem-specifications/), this file's contents should match the Problem Specification Exercise's `instructions.md` file (or `description.md` file if there is no `instructions.md` file). configlet has functionality to automatically [sync the contents](/docs/building/configlet/generating-documents#document-practice-exercises-instructionsmd-file) of this file. If the exercise is _not_ based on a Problem Specifications Exercise, consider the following: From e89758b239230414fe7a8195d38d55a7bec5505b Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 14:37:04 +0200 Subject: [PATCH 15/23] Fix link --- using/licenses/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/using/licenses/README.md b/using/licenses/README.md index 2658abd7..448dae14 100644 --- a/using/licenses/README.md +++ b/using/licenses/README.md @@ -2,5 +2,5 @@ Exercism uses various licenses for different repositories and content. We provide a central copy of them here. - [MIT](/docs/using/licenses/mit) -- [AGPL 3.0](/docs/using/licenses/apgl) +- [AGPL 3.0](/docs/using/licenses/agpl) - [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](/docs/using/licenses/cc-by-nc-sa) From 033be5fb0e88af53c004f6119bbd38d7a94a6456 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 14:52:06 +0200 Subject: [PATCH 16/23] More fixes --- building/tracks/README.md | 8 ++++---- building/tracks/concept-exercises.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/building/tracks/README.md b/building/tracks/README.md index 25c68ca8..e6bd4128 100644 --- a/building/tracks/README.md +++ b/building/tracks/README.md @@ -14,12 +14,12 @@ All concept and practices exercises of a track involve _concepts_. These concept Tracks have two types of exercises: -- Concept exercises: they are designed to teach one or more concepts to a student. Check the [documentation](/docs/building/tracks) for more information. -- Practice exercise: they are designed to practice learned concepts. Check the [documentation](/docs/building/tracks) for more information. +- Concept exercises: they are designed to teach one or more concepts to a student. Check the [documentation](/docs/building/tracks/concept-exercises) for more information. +- Practice exercise: they are designed to practice learned concepts. Check the [documentation](/docs/building/tracks/practice-exercises) for more information. ## Shared files -Some files are not specific to individual exercises, but are instead applicable to _all_ exercises. Check the [documentation](/docs/building/tracks) for more information. +Some files are not specific to individual exercises, but are instead applicable to _all_ exercises. Check the [documentation](/docs/building/tracks/shared-files) for more information. ## Config @@ -31,7 +31,7 @@ TODO: describe the `docs` directory's contents ## Widgets -Some parts of the track can be displayed in [widgets](/docs/building/tracks#exercisewidget). +Some parts of the track can be displayed in [widgets](/docs/building/markdown/widgets). ## Style guide diff --git a/building/tracks/concept-exercises.md b/building/tracks/concept-exercises.md index 6533717d..bdd4f181 100644 --- a/building/tracks/concept-exercises.md +++ b/building/tracks/concept-exercises.md @@ -128,7 +128,7 @@ The `introduction.md` document introduces the exercise's concept(s) to the stude If the concept's introduction should be included verbatim in the exercise's introduction, an `introduction.md.tpl` file can be used. This file allows referring to concept introductions through placeholders: `%{concept:}`. -[configlet](/docs/building/tracks/configlet/generating-documents) can generate an `introduction.md` file from a template file. The generated file will have the concept placeholders replaced by the concept's `introduction` contents. +[configlet](/docs/building/configlet/generating-documents) can generate an `introduction.md` file from a template file. The generated file will have the concept placeholders replaced by the concept's `introduction` contents. The Exercism website only knows about the `introduction.md` document. It is the track's responsibility to generate the `introduction.md` when a template file is used. From d3eac76b4e41178d9583c0642483d95e38492c44 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 14:53:48 +0200 Subject: [PATCH 17/23] More fixes --- community/contributors.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/community/contributors.md b/community/contributors.md index 9977a41f..8df88f43 100644 --- a/community/contributors.md +++ b/community/contributors.md @@ -16,4 +16,4 @@ There are lots of different ways to help with Exercism: ...and much more. -Visit our dedicated [Contributing Section](/building) to explore all the tasks that currently need doing. +Visit our dedicated [Contributing Section](/contributing) to explore all the tasks that currently need doing. From 6565630e3584d94dda91f59da4745a30d17d21ce Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 14:58:08 +0200 Subject: [PATCH 18/23] More fixes --- building/tooling/representers/README.md | 8 ++++---- mentoring/how_to_give_great_feedback.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/building/tooling/representers/README.md b/building/tooling/representers/README.md index 2fea8030..f9aab57d 100644 --- a/building/tooling/representers/README.md +++ b/building/tooling/representers/README.md @@ -33,7 +33,7 @@ If you would like to create a Representer for a language that currently does not This directory contains the following information: -- **[`creating-from-scratch.md`](/docs/building/tooling/representers/creating-from-scratch):** Information on creating a Representer from scratch. -- **[`interface.md`](/docs/building/tooling/representers/interface):** The Representer interface. -- **[`normalization.md`](/docs/building/tooling/representers/normalization):** Information on how to normalize representations for the highest efficiency. -- **[`docker.md`](/docs/building/tooling/representers/docker):** How to build a Docker image with Docker for local testing and deployment. +- [Creating a Representer from scratch](/docs/building/tooling/representers/creating-from-scratch) +- [The Representer interface](/docs/building/tooling/representers/interface):\*\* . +- [How to normalize representations for the highest efficiency](/docs/building/tooling/representers/normalization) +- [How to build a Docker image with Docker for local testing and deployment](/docs/building/tooling/representers/docker) diff --git a/mentoring/how_to_give_great_feedback.md b/mentoring/how_to_give_great_feedback.md index 61a1f744..7cf2c2d3 100644 --- a/mentoring/how_to_give_great_feedback.md +++ b/mentoring/how_to_give_great_feedback.md @@ -84,5 +84,5 @@ As you gain experience mentoring, you will get a feel for the different ways stu ## Unsure of something? Chat to other mentors? One of the best things about being an Exercism mentor is the community of other mentors you can learn from. -If you've got a question about a solution, or just want to bounce ideas with other mentors, jump into our [Slack Workspace]() and ask away! +If you've got a question about a solution, or just want to bounce ideas with other mentors, jump into our [Slack Workspace](https://exercism-team.slack.com/) and ask away! You'll probably find people you can help there too 🙂 From 5ca2eedc1a9adf0adcf07744fe77b66912e5b3c2 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 14:59:36 +0200 Subject: [PATCH 19/23] More fixes --- building/tooling/representers/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/building/tooling/representers/README.md b/building/tooling/representers/README.md index f9aab57d..5b451616 100644 --- a/building/tooling/representers/README.md +++ b/building/tooling/representers/README.md @@ -29,11 +29,11 @@ Each representer lives in the Exercism GitHub organization in a repository named You can explore the different representers [here](https://github.com/exercism?q=-representer). If you would like to get involved in helping with an existing Representer, please open an issue in its repository asking if there is somewhere you can help. -If you would like to create a Representer for a language that currently does not have one, please follow the [creating a Representer](creating-from-scratch.md) instructions. +If you would like to create a Representer for a language that currently does not have one, please follow the [creating a Representer](/docs/building/tooling/representers/creating-from-scratch) instructions. This directory contains the following information: - [Creating a Representer from scratch](/docs/building/tooling/representers/creating-from-scratch) -- [The Representer interface](/docs/building/tooling/representers/interface):\*\* . +- [The Representer interface](/docs/building/tooling/representers/interface) - [How to normalize representations for the highest efficiency](/docs/building/tooling/representers/normalization) - [How to build a Docker image with Docker for local testing and deployment](/docs/building/tooling/representers/docker) From 99e799cfcf30a14551c2dada80dd182da840cc22 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 15:12:56 +0200 Subject: [PATCH 20/23] More fixes --- building/tooling/analyzers/README.md | 8 ++++---- building/tooling/representers/README.md | 2 +- building/tooling/test-runners/README.md | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/building/tooling/analyzers/README.md b/building/tooling/analyzers/README.md index 303ebd14..b9a566fa 100644 --- a/building/tooling/analyzers/README.md +++ b/building/tooling/analyzers/README.md @@ -13,8 +13,8 @@ You can explore the different Analyzers [here](https://github.com/exercism?q=-an If you would like to get involved in helping with an existing Analyzer, please open an issue in its repository asking if there is somewhere you can help. If you would like to create an Analyzer for a language that currently does not have one, please follow the [creating a Analyzer](/docs/building/tooling/analyzers/creating-from-scratch) instructions. -This directory contains the following information: +You can use the following documents to learn more about building an analyzer: -- **[`creating-from-scratch.md`](/docs/building/tooling/analyzers/creating-from-scratch):** Information on creating a Analyzer from scratch. -- **[`interface.md`](/docs/building/tooling/analyzers/interface):** The Analyzer interface. -- **[`docker.md`](/docs/building/tooling/analyzers/docker):** How to build a Docker image with Docker for local testing and deployment. +- [Creating a Analyzer from scratch](/docs/building/tooling/analyzers/creating-from-scratch) +- [The Analyzer interface.](/docs/building/tooling/analyzers/interface) +- [How to build a Docker image with Docker for local testing and deployment](/docs/building/tooling/analyzers/docker) diff --git a/building/tooling/representers/README.md b/building/tooling/representers/README.md index 5b451616..e669142c 100644 --- a/building/tooling/representers/README.md +++ b/building/tooling/representers/README.md @@ -31,7 +31,7 @@ You can explore the different representers [here](https://github.com/exercism?q= If you would like to get involved in helping with an existing Representer, please open an issue in its repository asking if there is somewhere you can help. If you would like to create a Representer for a language that currently does not have one, please follow the [creating a Representer](/docs/building/tooling/representers/creating-from-scratch) instructions. -This directory contains the following information: +You can use the following documents to learn more about building a representer: - [Creating a Representer from scratch](/docs/building/tooling/representers/creating-from-scratch) - [The Representer interface](/docs/building/tooling/representers/interface) diff --git a/building/tooling/test-runners/README.md b/building/tooling/test-runners/README.md index 6ab2abc8..43983122 100644 --- a/building/tooling/test-runners/README.md +++ b/building/tooling/test-runners/README.md @@ -18,8 +18,8 @@ You can explore the different Test Runners [here](https://github.com/exercism?q= If you would like to get involved in helping with an existing Test Runner, please open an issue in its repository asking if there is somewhere you can help. If you would like to create a Test Runner for a language that currently does not have one, please follow the [creating a Test Runner](creating-from-scratch.md) instructions. -This directory contains the following information: +You can use the following documents to learn more about building a test runner: -- **[`creating-from-scratch.md`](/docs/building/tooling/test-runners/creating-from-scratch):** Information on creating a Test Runner from scratch. -- **[`interface.md`](/docs/building/tooling/test-runners/interface):** The Test Runner interface. -- **[`docker.md`](/docs/building/tooling/test-runners/docker):** How to build a Docker image with Docker for local testing and deployment. +- [creating a Test Runner from scratch](/docs/building/tooling/test-runners/creating-from-scratch) +- [The Test Runner interface](/docs/building/tooling/test-runners/interface) +- [How to build a Docker image with Docker for local testing and deployment](/docs/building/tooling/test-runners/docker) From 5ebddef7d8f14fd632c3411b396a689dc507c426 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 15:15:51 +0200 Subject: [PATCH 21/23] More fixes --- building/tooling/analyzers/comments.md | 3 +- .../tooling/analyzers/feedback-guidelines.md | 143 ++++++++++++++++++ 2 files changed, 144 insertions(+), 2 deletions(-) create mode 100644 building/tooling/analyzers/feedback-guidelines.md diff --git a/building/tooling/analyzers/comments.md b/building/tooling/analyzers/comments.md index de13e3df..92ec354b 100644 --- a/building/tooling/analyzers/comments.md +++ b/building/tooling/analyzers/comments.md @@ -5,7 +5,7 @@ # Comment Copy Guidelines This document sets guidelines for the comments produced by the analyzer. The -[Feedback guidelines][git-feedback-guidelines] talk about _when_ to comment and +[Feedback guidelines](/docs/building/tooling/test-runners/feedback-guidelines) talk about _when_ to comment and _what_ to comment. This document talks mostly about _how_ to comment. ## Working directory for contents @@ -138,4 +138,3 @@ custom errors might be interesting. [git-website-copy]: https://github.com/exercism/website-copy/tree/main/automated-comments [issue-ci-comments]: https://github.com/exercism/automated-mentoring-support/issues/51 [git-website-copy-label]: https://github.com/exercism/website-copy/pulls?q=is%3Aopen+is%3Apr+label%3Atype%2Fanalyzer-comments -[git-feedback-guidelines]: https://github.com/exercism/automated-mentoring-support/blob/main/docs/guidelines.md#idiomatic-rules--language-features--stylistic-choices diff --git a/building/tooling/analyzers/feedback-guidelines.md b/building/tooling/analyzers/feedback-guidelines.md new file mode 100644 index 00000000..35a27fd6 --- /dev/null +++ b/building/tooling/analyzers/feedback-guidelines.md @@ -0,0 +1,143 @@ +_NOTE: This spec is currently being updated._ + +# Feedback guidelines + +The goal of a language track on Exercism is to give people a way to achieve a +high level of fluency at a low level of proficiency. We're aiming for fluency +in the syntax, idioms, and the standard library of the language. You can read +more about the [goal of exercism here](https://github.com/exercism/docs/blob/master/about/goal-of-exercism.md). + +## Definitions + +In the following paragraphs, keywords such as **MUST**, **SHOULD**, **MAY** +are to be interpreted as in [RFC2119](https://www.ietf.org/rfc/rfc2119.txt); +given that we recognise the following four output states and their restrictions: + +- `approve`: **MUST** be an approvable solution, **MAY** be with comment. +- `disapprove`: **MUST** be with comment +- `refer_to_mentor`: **MAY** be with comment + +### Why is it not ... (e.g. **MUST**)? + +Per [RFC2119](https://www.ietf.org/rfc/rfc2119.txt), if **MUST** is used, it is +a guarantee that the rule is always so, and does not need to be guarded for. For +example, **MUST** be without comment means that the website could crash if an +analyzer sends a comment anyway. **SHOULD** indicates any consumer of the output +must still guard against unwanted behaviour. + +### Approvability + +A solution is approvable if it either matches the (set of) optimal solution(s) +of that exercise, or if it shows understanding of the teaching goals of that +exercise and every _core_ exercise that came before. This means that an +analyzer **MAY** approve a solution but still provide a set of comments as tips +relating to the exercise or further improvements. + +### Idiomatic rules / Language features / Stylistic choices + +In this document, **de facto** is defined as follows: + +- **de facto**: describes practices that exist in reality, even if not + officially recognized by laws. +- **de facto standard**: a custom or convention that has achieved a dominant + position by public acceptance or market forces. Unofficial customs that are + widely accepted. + +In other words, if a nearly all developers (non-hobyists) who write code in a +certain language have established certain rules, these rules are a **de facto +standard** and become idiomatic use. Example: **Ruby** uses 2 space identation. + +Some rules are language features, even if they are not documented well. These +language features are part of "idiomatic rules" and not stylistic choices. +Example: **Ruby**'s MRI treats variables named `_` differently. + +Finally there are rules that are pure preferences, even though they might be +adopted by large bodies such as organisations and corporations. These rules +are usually part of _competing_ standards. Exercism does not favour one over +another. Example: **TypeScript** has a linter `tslint` (or `eslint` + plugin) +which is maintained by a company that is not Microsoft. It competes with other +linters such as `xo`. Most of the rules are not language features or idiomatic +rules, and therefore stylistic choices. + +## Conditions and outcome + +For feedback generated by automated mentoring: + +- it **SHOULD** `disapprove` when someone isn't using one of the + subjects the exercise is supposed to teach, +- each `disapprove` **MUST** have at least one comment, +- each `disapprove` **SHOULD** steer a student towards an `approve`, +- the analyzer **SHOULD** aim to teach a pathway, which means a student + **SHOULD NOT** get a `refer_to_mentor` in a newer iteration, after a + `disapprove`, given they follow that pathway. +- a `refer_to_mentor` **MAY** have one or more comments which will be given to + the mentor, +- the same comment **MUST** not be added twice in one analysis. Adding the same + comment with different parameters attached to it is not considered a duplicate. +- comments **SHOULD** be ordered by importance (the first comment being the most + important, and the last comment being the least important). + +It is currently undecided as to whether there is a minimum or maximum amount of +:speech_balloon: comments. However, each comment **SHOULD** be aiding the +student towards an approvable solution. Our recommendation is currently to aim +for one to three comments per iteration. + +## Approvability + +Given the above, and to re-iterate that we focus on language fluency: + +### Incorrect Naming or Casing + +In general, if it's a _language feature_ that will be caught by a compiler or +parser or based on official rules (which means there is a dependency on +correctness in tools), you should `disapprove`, preferably linking +to the official rules. + +> - :-1: disapprove if there are official guidelines on naming conventions +> - :speech_balloon: leave a comment if there is something noteworthy +> - :no*bell: if its a \_stylistic* preference, **and** there are _competing +> standards_, do not remark at all. Since there are competing standards, +> they're all preferences. +> - :speech*balloon: if it's a \_stylistic* preference, **and** there is _one +> clear standard_, comment on it. These rules enforce idiomatic code. +> - :question: If it's a _stylistic_ preference, **and** there is no clear +> standard, but most to all non-hobyist have adopted the same style, this +> might be idiomatic. Comment at your discretion. + +#### Examples + +- **Ruby** has a language feature where `_` is treated differently, + - :-1: if a student uses `_` for a variable name, but then uses it. +- **Ruby** recognises `constants` only if they start with a **C**apital Letter, + - :-1: if a student uses `snake_case` for a `class` name +- **Ruby** has _de facto_ standards on `cAsInG` and `name-ing`, + - :speech_balloon: you **SHOULD** guide students that `snake_case` is to be + expected by most IDEs and highlighting on exercism in code blocks. +- **JavaScript** IDEs highlight variables which are not used, except for those + prefixed with an underscore (`_`). + - :speech*balloon: note that this behaviour exist so it might help them to use + a different naming strategy. They might think that prefixing with `*`means `private`, which is not the case in JavaScript. +- **TypeScript** has a _de facto_ standard lint tool provided by Palantir, + - :no_bell: If a student does not follow these rules as the lint tool is not + official. In fact, there are multiple linters out there, with mutually + exclusive rules. +- **Go** has very strict rules around naming and other linting. + - :-1: if the student does not follow these (e.g. has not applied `golint`) +- **Go** has very strict rules around formatting. + - :-1: if the student does not follow these (e.g. has not applied `gofmt`) + +### Badly formatted code + +The same rules apply as above. In general, if `linting` and a specific format is +not part of the official language, and/or not integral to the language: + +- :no_bell: **SHOULD NOT** disapprove on it +- :speech_balloon: You **MAY** guide students towards tools for auto-formatting + +# Running guidelines + +Each solution gets 100% machine resources for a ten second window. + +## Maximum runtime + +After 10 seconds, the process is halted and reports as a time-out. From b4911045be1de8373098400514a0f150e472cde0 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 15:18:14 +0200 Subject: [PATCH 22/23] More fixes --- building/config.json | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/building/config.json b/building/config.json index 23fef915..9a2dcee3 100644 --- a/building/config.json +++ b/building/config.json @@ -519,6 +519,13 @@ "title": "Analyzers", "blurb": "" }, + { + "uuid": "48775c5f-b449-4c91-b792-b81a8ef4ec04", + "slug": "tooling/analyzers/feedback-guidelines", + "path": "building/tooling/analyzers/feedback-guidelines.md", + "title": "Feedback Guidelines", + "blurb": "" + }, { "uuid": "787e4243-b97a-4b55-9038-7667e5c3788a", "slug": "tooling/analyzers/comments", From a0aa25b6efc0b040f80e39788d150443edcb02f7 Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 25 Aug 2021 15:19:04 +0200 Subject: [PATCH 23/23] More fixes --- building/tooling/analyzers/comments.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/building/tooling/analyzers/comments.md b/building/tooling/analyzers/comments.md index 92ec354b..6c109a0d 100644 --- a/building/tooling/analyzers/comments.md +++ b/building/tooling/analyzers/comments.md @@ -5,7 +5,7 @@ # Comment Copy Guidelines This document sets guidelines for the comments produced by the analyzer. The -[Feedback guidelines](/docs/building/tooling/test-runners/feedback-guidelines) talk about _when_ to comment and +[Feedback guidelines](/docs/building/tooling/analyzers/feedback-guidelines) talk about _when_ to comment and _what_ to comment. This document talks mostly about _how_ to comment. ## Working directory for contents