From 76079150e93f0a27ee277c1ba624ffb0449bf224 Mon Sep 17 00:00:00 2001 From: Jagdish Prajapati Date: Fri, 6 Jun 2025 10:21:37 +0530 Subject: [PATCH 1/6] Syncing test.toml and updating the test code --- .../practice/reverse-string/.meta/config.json | 1 + .../practice/reverse-string/.meta/tests.toml | 22 ++++++++++++++++--- .../reverse-string/reverse-string.spec.js | 18 +++++++++++++++ 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/exercises/practice/reverse-string/.meta/config.json b/exercises/practice/reverse-string/.meta/config.json index a0e872621d..fe20dbd355 100644 --- a/exercises/practice/reverse-string/.meta/config.json +++ b/exercises/practice/reverse-string/.meta/config.json @@ -5,6 +5,7 @@ "contributors": [ "ankorGH", "d-vail", + "jagdish-15", "ovidiu141", "SleeplessByte" ], diff --git a/exercises/practice/reverse-string/.meta/tests.toml b/exercises/practice/reverse-string/.meta/tests.toml index 2113a53364..0c313cc537 100644 --- a/exercises/practice/reverse-string/.meta/tests.toml +++ b/exercises/practice/reverse-string/.meta/tests.toml @@ -1,6 +1,13 @@ -# This is an auto-generated file. Regular comments will be removed when this -# file is regenerated. Regenerating will not touch any manually added keys, -# so comments can be added in a "comment" key. +# This is an auto-generated file. +# +# Regenerating this file via `configlet sync` will: +# - Recreate every `description` key/value pair +# - Recreate every `reimplements` key/value pair, where they exist in problem-specifications +# - Remove any `include = true` key/value pair (an omitted `include` key implies inclusion) +# - Preserve any other key/value pair +# +# As user-added comments (using the # character) will be removed when this file +# is regenerated, comments can be added via a `comment` key. [c3b7d806-dced-49ee-8543-933fd1719b1c] description = "an empty string" @@ -19,3 +26,12 @@ description = "a palindrome" [b9e7dec1-c6df-40bd-9fa3-cd7ded010c4c] description = "an even-sized word" + +[1bed0f8a-13b0-4bd3-9d59-3d0593326fa2] +description = "wide characters" + +[93d7e1b8-f60f-4f3c-9559-4056e10d2ead] +description = "grapheme cluster with pre-combined form" + +[1028b2c1-6763-4459-8540-2da47ca512d9] +description = "grapheme clusters" diff --git a/exercises/practice/reverse-string/reverse-string.spec.js b/exercises/practice/reverse-string/reverse-string.spec.js index ae4e746827..002f1a9920 100644 --- a/exercises/practice/reverse-string/reverse-string.spec.js +++ b/exercises/practice/reverse-string/reverse-string.spec.js @@ -37,4 +37,22 @@ describe('ReverseString', () => { const actual = reverseString('drawer'); expect(actual).toEqual(expected); }); + + xtest('wide characters', () => { + const expected = '猫子'; + const actual = reverseString('子猫'); + expect(actual).toEqual(expected); + }); + + xtest('grapheme cluster with pre-combined form', () => { + const expected = 'dnatsnehctsrüW'; + const actual = reverseString('Würstchenstand'); + expect(actual).toEqual(expected); + }); + + xtest('grapheme clusters', () => { + const expected = 'มรกแรปโนยขีเผู้'; + const actual = reverseString('ผู้เขียนโปรแกรม'); + expect(actual).toEqual(expected); + }); }); From 05699a2d44015f69b26013254582d8c6653b4133 Mon Sep 17 00:00:00 2001 From: Jagdish Prajapati Date: Wed, 11 Jun 2025 13:28:33 +0530 Subject: [PATCH 2/6] Updating proof solution --- exercises/practice/reverse-string/.meta/proof.ci.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/exercises/practice/reverse-string/.meta/proof.ci.js b/exercises/practice/reverse-string/.meta/proof.ci.js index 6cf696edca..61cf2eb66c 100644 --- a/exercises/practice/reverse-string/.meta/proof.ci.js +++ b/exercises/practice/reverse-string/.meta/proof.ci.js @@ -1,7 +1,8 @@ export const reverseString = (string) => { let revString = ''; - for (let i = string.length - 1; i >= 0; i -= 1) { - revString += string[i]; + let characters = Array.from(new Intl.Segmenter().segment(String(string)), (x) => x.segment); + for (let i = characters.length - 1; i >= 0; i--) { + revString += characters[i]; } return revString; }; From e4620261658ade56875028e4e10e15e37cdf94c8 Mon Sep 17 00:00:00 2001 From: Jagdish Prajapati Date: Wed, 11 Jun 2025 13:30:34 +0530 Subject: [PATCH 3/6] Running prettier --- exercises/practice/reverse-string/.meta/proof.ci.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/exercises/practice/reverse-string/.meta/proof.ci.js b/exercises/practice/reverse-string/.meta/proof.ci.js index 61cf2eb66c..68631c5aaa 100644 --- a/exercises/practice/reverse-string/.meta/proof.ci.js +++ b/exercises/practice/reverse-string/.meta/proof.ci.js @@ -1,6 +1,9 @@ export const reverseString = (string) => { let revString = ''; - let characters = Array.from(new Intl.Segmenter().segment(String(string)), (x) => x.segment); + let characters = Array.from( + new Intl.Segmenter().segment(String(string)), + (x) => x.segment, + ); for (let i = characters.length - 1; i >= 0; i--) { revString += characters[i]; } From 89857748586eed884ef633a9a353f6c402fe9fbd Mon Sep 17 00:00:00 2001 From: Jagdish Prajapati Date: Thu, 12 Jun 2025 20:18:31 +0530 Subject: [PATCH 4/6] Skipping the tests requiring segmenter --- exercises/practice/reverse-string/reverse-string.spec.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/exercises/practice/reverse-string/reverse-string.spec.js b/exercises/practice/reverse-string/reverse-string.spec.js index 002f1a9920..55e5af912a 100644 --- a/exercises/practice/reverse-string/reverse-string.spec.js +++ b/exercises/practice/reverse-string/reverse-string.spec.js @@ -44,13 +44,13 @@ describe('ReverseString', () => { expect(actual).toEqual(expected); }); - xtest('grapheme cluster with pre-combined form', () => { + test.skip('grapheme cluster with pre-combined form', () => { const expected = 'dnatsnehctsrüW'; const actual = reverseString('Würstchenstand'); expect(actual).toEqual(expected); }); - xtest('grapheme clusters', () => { + test.skip('grapheme clusters', () => { const expected = 'มรกแรปโนยขีเผู้'; const actual = reverseString('ผู้เขียนโปรแกรม'); expect(actual).toEqual(expected); From e45e93eb90f963fc7ac8b2f8c8f298b7ef7559a4 Mon Sep 17 00:00:00 2001 From: Jagdish Prajapati Date: Thu, 12 Jun 2025 20:20:10 +0530 Subject: [PATCH 5/6] Adding instructions.append.md --- .../practice/reverse-string/.docs/instructions.append.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 exercises/practice/reverse-string/.docs/instructions.append.md diff --git a/exercises/practice/reverse-string/.docs/instructions.append.md b/exercises/practice/reverse-string/.docs/instructions.append.md new file mode 100644 index 0000000000..c4a0f80414 --- /dev/null +++ b/exercises/practice/reverse-string/.docs/instructions.append.md @@ -0,0 +1,4 @@ +~~~exercism/advanced +If you solve this using the CLI, there are test cases that require you to deal with complex characters. +You can optionally enable these tests by removing `.skip` from the test. +~~~ From b3b269f8f084a89df11d5431284089eeca8c3973 Mon Sep 17 00:00:00 2001 From: Jagdish Prajapati Date: Thu, 12 Jun 2025 20:25:25 +0530 Subject: [PATCH 6/6] Adding prettier ignore --- exercises/practice/reverse-string/.docs/instructions.append.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/exercises/practice/reverse-string/.docs/instructions.append.md b/exercises/practice/reverse-string/.docs/instructions.append.md index c4a0f80414..68688e11fa 100644 --- a/exercises/practice/reverse-string/.docs/instructions.append.md +++ b/exercises/practice/reverse-string/.docs/instructions.append.md @@ -1,4 +1,6 @@ + ~~~exercism/advanced If you solve this using the CLI, there are test cases that require you to deal with complex characters. You can optionally enable these tests by removing `.skip` from the test. ~~~ +