satyacode
Background
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