{"version":3,"sources":["https://lively-kernel.org/lively4/swd21-croquet/src/client/strings.js"],"names":["Strings","toUpperCaseFirst","s","length","toUpperCase","slice","toCamelCase","string","delimiter","split","map","ea","index","join","prefixSelector","prefix","matchAll","regExString","all","regEx","RegExp","m","exec","push","matchDo","func","match","call","indent","level","i","matchAllDo","longestCommonPrefix","arr1","arr","concat","sort","a1","a2","L","charAt","substring","escapeRegExp","replace","fixUmlauts","value"],"mappings":"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","file":"strings.js","sourcesContent":["/*\n * And here it is... the utitly class for awesome string manipulation!\n * #Design what are standard libraries for string manipulation? Underscore etc?\n */\n\nexport default class Strings {\n  \n  static toUpperCaseFirst(s) {\n    if (!s || s.length == 0 ) return s\n    return s[0].toUpperCase() + s.slice(1)\n  }\n  \n  static toCamelCase(string, delimiter = \" \") {\n    return string\n      .split(delimiter)\n      .map((ea, index) => index === 0 ? ea : this.toUpperCaseFirst(ea))\n      .join(\"\")\n  }\n  \n  static prefixSelector(prefix, s) {\n    return prefix + this.toUpperCaseFirst(s)\n  }\n  \n  static matchAll(regExString, s) {\n    var all  =[]\n    var regEx = new RegExp(regExString, \"gs\")\n    do {\n      var m = regEx.exec(s)\n      if (m) all.push(m)\n    } while(m)\n    return all\n  }\n\n  /* matches one, and call func with it */\n  static matchDo(regExString, s, func) {\n    var m = s.match(regExString)\n    if (m) {\n      return func.call(...m)\n    }\n  }\n\n  static indent(s, level = 1, prefix = \"  \") {\n    for(let i=0; i < level; i++) { s = prefix + s}\n    return s\n  }\n  \n  static matchAllDo(regExString, s, func) {\n    var regEx = new RegExp(regExString, \"g\")\n    do {\n      var m = regEx.exec(s)\n      if (m)  func.call(...m)\n    } while(m)\n  }\n  \n  /* source: https://www.w3resource.com/javascript-exercises/javascript-array-exercise-28.php */\n  static longestCommonPrefix(arr1){\n    const arr= arr1.concat().sort();\n    const a1= arr[0];\n    const a2= arr[arr.length-1];\n    const L= a1.length;\n    let i= 0;\n    while(i< L && a1.charAt(i)=== a2.charAt(i)) i++;\n    return a1.substring(0, i);\n  }\n    \n  /* source: https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex */  \n  static escapeRegExp(string) {\n    return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&'); // $& means the whole matched string\n  }\n    \n  static fixUmlauts(value) {\n    value = value.replace(/ä/g, 'ae');\n    value = value.replace(/ö/g, 'oe');\n    value = value.replace(/ü/g, 'ue');\n    value = value.replace(/ß/g, 'ss');\n    value = value.replace(/Ä/g, 'Ae');\n    value = value.replace(/Ö/g, 'Oe');\n    value = value.replace(/Ü/g, 'Ue');\n    return value;\n  }  \n    \n}\n"]}