Back to js-datatype-foundation
02-rangoli-maker.js
JavaScript
1/**
2 * 🎨 Rangoli Border Maker - String Transform
3 *
4 * Diwali aa rahi hai! Priya digital rangoli designs bana rahi hai terminal pe.
5 * String transform methods use karke patterns banana hai.
6 * Tu Priya ki madad kar!
7 *
8 * Methods to explore: .slice(), .split(), .join(), .replace(),
9 * .replaceAll(), .repeat()
10 *
11 * Functions:
12 *
13 * 1. repeatPattern(pattern, times)
14 * - .repeat(times) use karke pattern ko repeat karo
15 * - Agar pattern string nahi hai ya times positive integer nahi hai, return ""
16 * - Example: repeatPattern("*-", 4) => "*-*-*-*-"
17 *
18 * 2. extractRangoliCenter(design, start, end)
19 * - .slice(start, end) use karke rangoli ka center part nikalo
20 * - Agar design string nahi hai, return ""
21 * - Agar start/end numbers nahi hain, return ""
22 * - Example: extractRangoliCenter("***LOTUS***", 3, 8) => "LOTUS"
23 *
24 * 3. splitAndJoinRangoli(colorString, oldSep, newSep)
25 * - .split(oldSep) se tod aur .join(newSep) se jod
26 * - Separator change karna hai colors ke beech mein
27 * - Agar colorString string nahi hai, return ""
28 * - Example: splitAndJoinRangoli("red,blue,green", ",", " | ") => "red | blue | green"
29 *
30 * 4. replaceRangoliColor(design, oldColor, newColor)
31 * - .replaceAll() use karke ek color ko doosre se replace karo
32 * - Agar koi bhi param string nahi hai, return ""
33 * - Example: replaceRangoliColor("red-blue-red-green-red", "red", "pink") => "pink-blue-pink-green-pink"
34 *
35 *
36 * 5. makeRangoliBorder(char, length)
37 * - .repeat() se char ko bahut baar repeat karo
38 * - Phir .slice(0, length) se exact length ka border banao
39 * - Agar char string nahi hai ya length positive number nahi hai, return ""
40 * - Example: makeRangoliBorder("*", 5) => "*****"
41 * - Example: makeRangoliBorder("=-", 7) => "=-=-=-="
42 *
43 * @example
44 * repeatPattern("*-", 4) // => "*-*-*-*-"
45 * extractRangoliCenter("***LOTUS***", 3, 8) // => "LOTUS"
46 * splitAndJoinRangoli("red,blue", ",", "-") // => "red-blue"
47 */
48export function repeatPattern(pattern, times) {
49 if(typeof pattern !== "string" || !Number.isInteger(times) || times <= 0){
50 return ""
51 }
52 return pattern.repeat(times)
53}
54
55export function extractRangoliCenter(design, start, end) {
56 if((typeof design !== "string")||(typeof start !== "number" || typeof end !== "number" )){
57 return ""
58 }
59 return design.slice(start, end)
60}
61
62export function splitAndJoinRangoli(colorString, oldSep, newSep) {
63 if(typeof colorString !== "string"){
64 return ""
65 }
66 return colorString.split(oldSep).join(newSep)
67}
68
69export function replaceRangoliColor(design, oldColor, newColor) {
70 if(typeof design !== "string" || typeof oldColor !== "string" || typeof newColor !== "string"){
71 return ""
72 }
73
74 return design.replaceAll(oldColor, newColor)
75}
76
77export function makeRangoliBorder(char, length) {
78 if(typeof char !== "string" || length <= 0){
79 return ""
80 }
81 return char.repeat(length).slice(0, length)
82}
83