From 430e45bf3311390f3993d4a345bec1eb7e1edaca Mon Sep 17 00:00:00 2001 From: Erik Schierboom Date: Wed, 27 Sep 2023 08:58:38 +0200 Subject: [PATCH] Format admonitions (#2327) Format admonitions to adhere to Exercism standards (four tildes) --- .github/workflows/action-format.yml | 2 +- .github/workflows/ci.yml | 4 ++-- bin/format-admonition-fences.rb | 10 ++++++++++ exercises/binary-search/instructions.md | 4 ++-- exercises/etl/instructions.md | 4 ++-- exercises/gigasecond/introduction.md | 4 ++-- exercises/linked-list/instructions.md | 4 ++-- exercises/pangram/introduction.md | 4 ++-- exercises/rational-numbers/description.md | 4 ++-- exercises/rna-transcription/instructions.md | 4 ++-- exercises/rna-transcription/introduction.md | 4 ++-- exercises/secret-handshake/instructions.md | 4 ++-- exercises/sieve/instructions.md | 4 ++-- exercises/simple-linked-list/instructions.md | 4 ++-- 14 files changed, 35 insertions(+), 25 deletions(-) create mode 100755 bin/format-admonition-fences.rb diff --git a/.github/workflows/action-format.yml b/.github/workflows/action-format.yml index 9f1c8b9b5b..0d99284b48 100644 --- a/.github/workflows/action-format.yml +++ b/.github/workflows/action-format.yml @@ -90,7 +90,7 @@ jobs: run: yarn format-json && ruby bin/format-array.rb - name: Format Markdown files - run: yarn format-md + run: yarn format-md && ruby bin/format-admonition-fences.rb - name: 'Commit formatted code' run: | diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1739d1183f..05472f6801 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -134,9 +134,9 @@ jobs: - name: Verify that markdown files are formatted correctly run: | - yarn format-md + yarn format-md && ruby bin/format-admonition-fences.rb if ! git diff --quiet --exit-code; then - echo "please format the files with prettier, or apply the following changes:" + echo "please format the files using 'yarn format-md && ruby bin/format-admonition-fences.rb', or apply the following changes:" git diff exit 1 fi diff --git a/bin/format-admonition-fences.rb b/bin/format-admonition-fences.rb new file mode 100755 index 0000000000..8a1256e268 --- /dev/null +++ b/bin/format-admonition-fences.rb @@ -0,0 +1,10 @@ +#!/usr/bin/env ruby + +BACKTICK_MATCH_REGEX = /(?[`~]{3,})(?exercism\/[a-z]+)(?.*?)(?\k)/m.freeze +TILDE_REPLACE = '~~~~\k\k~~~~'.freeze + +Dir.glob('exercises/**/*.md') do |filepath| + contents = File.read(filepath) + contents.gsub!(BACKTICK_MATCH_REGEX, TILDE_REPLACE) + File.write(filepath, contents) +end diff --git a/exercises/binary-search/instructions.md b/exercises/binary-search/instructions.md index f183061e05..12f4358ebc 100644 --- a/exercises/binary-search/instructions.md +++ b/exercises/binary-search/instructions.md @@ -5,9 +5,9 @@ Your task is to implement a binary search algorithm. A binary search algorithm finds an item in a list by repeatedly splitting it in half, only keeping the half which contains the item we're looking for. It allows us to quickly narrow down the possible locations of our item until we find it, or until we've eliminated all possible locations. -```exercism/caution +~~~~exercism/caution Binary search only works when a list has been sorted. -``` +~~~~ The algorithm looks like this: diff --git a/exercises/etl/instructions.md b/exercises/etl/instructions.md index 7bb161f8b7..802863b540 100644 --- a/exercises/etl/instructions.md +++ b/exercises/etl/instructions.md @@ -22,6 +22,6 @@ This needs to be changed to store each individual letter with its score in a one As part of this change, the team has also decided to change the letters to be lower-case rather than upper-case. -```exercism/note +~~~~exercism/note If you want to look at how the data was previously structured and how it needs to change, take a look at the examples in the test suite. -``` +~~~~ diff --git a/exercises/gigasecond/introduction.md b/exercises/gigasecond/introduction.md index 74afaa994f..18a3dc2005 100644 --- a/exercises/gigasecond/introduction.md +++ b/exercises/gigasecond/introduction.md @@ -13,7 +13,7 @@ Then we can use metric system prefixes for writing large numbers of seconds in m - Perhaps you and your family would travel to somewhere exotic for two megaseconds (that's two million seconds). - And if you and your spouse were married for _a thousand million_ seconds, you would celebrate your one gigasecond anniversary. -```exercism/note +~~~~exercism/note If we ever colonize Mars or some other planet, measuring time is going to get even messier. If someone says "year" do they mean a year on Earth or a year on Mars? @@ -21,4 +21,4 @@ The idea for this exercise came from the science fiction novel ["A Deepness in t In it the author uses the metric system as the basis for time measurements. [vinge-novel]: https://www.tor.com/2017/08/03/science-fiction-with-something-for-everyone-a-deepness-in-the-sky-by-vernor-vinge/ -``` +~~~~ diff --git a/exercises/linked-list/instructions.md b/exercises/linked-list/instructions.md index a47942d73d..edf4055b38 100644 --- a/exercises/linked-list/instructions.md +++ b/exercises/linked-list/instructions.md @@ -13,7 +13,7 @@ Sometimes a station gets closed down, and in that case the station needs to be r The size of a route is measured not by how far the train travels, but by how many stations it stops at. -```exercism/note +~~~~exercism/note The linked list is a fundamental data structure in computer science, often used in the implementation of other data structures. As the name suggests, it is a list of nodes that are linked together. It is a list of "nodes", where each node links to its neighbor or neighbors. @@ -23,4 +23,4 @@ In a **doubly linked list** each node links to both the node that comes before, If you want to dig deeper into linked lists, check out [this article][intro-linked-list] that explains it using nice drawings. [intro-linked-list]: https://medium.com/basecs/whats-a-linked-list-anyway-part-1-d8b7e6508b9d -``` +~~~~ diff --git a/exercises/pangram/introduction.md b/exercises/pangram/introduction.md index d38fa341df..32b6f1fc31 100644 --- a/exercises/pangram/introduction.md +++ b/exercises/pangram/introduction.md @@ -7,10 +7,10 @@ To give a comprehensive sense of the font, the random sentences should use **all They're running a competition to get suggestions for sentences that they can use. You're in charge of checking the submissions to see if they are valid. -```exercism/note +~~~~exercism/note Pangram comes from Greek, παν γράμμα, pan gramma, which means "every letter". The best known English pangram is: > The quick brown fox jumps over the lazy dog. -``` +~~~~ diff --git a/exercises/rational-numbers/description.md b/exercises/rational-numbers/description.md index dfc9446222..4ee4da086a 100644 --- a/exercises/rational-numbers/description.md +++ b/exercises/rational-numbers/description.md @@ -2,11 +2,11 @@ A rational number is defined as the quotient of two integers `a` and `b`, called the numerator and denominator, respectively, where `b != 0`. -```exercism/note +~~~~exercism/note Note that mathematically, the denominator can't be zero. However in many implementations of rational numbers, you will find that the denominator is allowed to be zero with behaviour similar to positive or negative infinity in floating point numbers. In those cases, the denominator and numerator generally still can't both be zero at once. -``` +~~~~ The absolute value `|r|` of the rational number `r = a/b` is equal to `|a|/|b|`. diff --git a/exercises/rna-transcription/instructions.md b/exercises/rna-transcription/instructions.md index f787be60bc..36da381f5a 100644 --- a/exercises/rna-transcription/instructions.md +++ b/exercises/rna-transcription/instructions.md @@ -15,6 +15,6 @@ Given a DNA strand, its transcribed RNA strand is formed by replacing each nucle - `T` -> `A` - `A` -> `U` -```exercism/note +~~~~exercism/note If you want to look at how the inputs and outputs are structured, take a look at the examples in the test suite. -``` +~~~~ diff --git a/exercises/rna-transcription/introduction.md b/exercises/rna-transcription/introduction.md index d74a8e84d2..6b3f44b532 100644 --- a/exercises/rna-transcription/introduction.md +++ b/exercises/rna-transcription/introduction.md @@ -4,7 +4,7 @@ You work for a bioengineering company that specializes in developing therapeutic Your team has just been given a new project to develop a targeted therapy for a rare type of cancer. -```exercism/note +~~~~exercism/note It's all very complicated, but the basic idea is that sometimes people's bodies produce too much of a given protein. That can cause all sorts of havoc. @@ -13,4 +13,4 @@ But if you can create a very specific molecule (called a micro-RNA), it can prev This technique is called [RNA Interference][rnai]. [rnai]: https://admin.acceleratingscience.com/ask-a-scientist/what-is-rnai/ -``` +~~~~ diff --git a/exercises/secret-handshake/instructions.md b/exercises/secret-handshake/instructions.md index b825c12895..d2120b9bf2 100644 --- a/exercises/secret-handshake/instructions.md +++ b/exercises/secret-handshake/instructions.md @@ -41,8 +41,8 @@ The secret handshake for 26 is therefore: jump, double blink ``` -```exercism/note +~~~~exercism/note If you aren't sure what binary is or how it works, check out [this binary tutorial][intro-to-binary]. [intro-to-binary]: https://medium.com/basecs/bits-bytes-building-with-binary-13cb4289aafa -``` +~~~~ diff --git a/exercises/sieve/instructions.md b/exercises/sieve/instructions.md index ec14620ce4..3adf1d551b 100644 --- a/exercises/sieve/instructions.md +++ b/exercises/sieve/instructions.md @@ -18,11 +18,11 @@ Then you repeat the following steps: You keep repeating these steps until you've gone through every number in your list. At the end, all the unmarked numbers are prime. -```exercism/note +~~~~exercism/note [Wikipedia's Sieve of Eratosthenes article][eratosthenes] has a useful graphic that explains the algorithm. The tests don't check that you've implemented the algorithm, only that you've come up with the correct list of primes. A good first test is to check that you do not use division or remainder operations. [eratosthenes]: https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes -``` +~~~~ diff --git a/exercises/simple-linked-list/instructions.md b/exercises/simple-linked-list/instructions.md index c3ff4cf311..04640b1fb0 100644 --- a/exercises/simple-linked-list/instructions.md +++ b/exercises/simple-linked-list/instructions.md @@ -7,7 +7,7 @@ Given a range of numbers (the song IDs), create a singly linked list. Given a singly linked list, you should be able to reverse the list to play the songs in the opposite order. -```exercism/note +~~~~exercism/note The linked list is a fundamental data structure in computer science, often used in the implementation of other data structures. The simplest kind of linked list is a **singly** linked list. @@ -16,4 +16,4 @@ That means that each element (or "node") contains data, along with something tha If you want to dig deeper into linked lists, check out [this article][intro-linked-list] that explains it using nice drawings. [intro-linked-list]: https://medium.com/basecs/whats-a-linked-list-anyway-part-1-d8b7e6508b9d -``` +~~~~