Software zum Installieren eines Smart-Mirror Frameworks , zum Nutzen von hochschulrelevanten Informationen, auf einem Raspberry-Pi.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

regexp-prototype-es.js 6.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250
  1. /* eslint-disable node/no-unsupported-features/es-syntax */
  2. /**
  3. * @param {RegExp} regex
  4. * @param {string} newFlags
  5. * @param {Integer} [newLastIndex=regex.lastIndex]
  6. * @returns {RegExp}
  7. */
  8. function mixinRegex(regex, newFlags) {
  9. var newLastIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : regex.lastIndex;
  10. newFlags = newFlags || '';
  11. regex = new RegExp(regex.source, (newFlags.includes('g') ? 'g' : regex.global ? 'g' : '') + (newFlags.includes('i') ? 'i' : regex.ignoreCase ? 'i' : '') + (newFlags.includes('m') ? 'm' : regex.multiline ? 'm' : '') + (newFlags.includes('u') ? 'u' : regex.unicode ? 'u' : '') + (newFlags.includes('y') ? 'y' : regex.sticky ? 'y' : '') + (newFlags.includes('s') ? 's' : regex.dotAll ? 's' : ''));
  12. regex.lastIndex = newLastIndex;
  13. return regex;
  14. }
  15. /* eslint-disable no-extend-native,
  16. no-use-extend-native/no-use-extend-native,
  17. node/no-unsupported-features/es-syntax */
  18. RegExp.prototype.forEach = function (str, cb) {
  19. var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
  20. var matches,
  21. n0,
  22. i = 0;
  23. var regex = mixinRegex(this, 'g');
  24. while ((matches = regex.exec(str)) !== null) {
  25. n0 = matches.splice(0, 1);
  26. cb.apply(thisObj, matches.concat(i++, n0));
  27. }
  28. return this;
  29. };
  30. RegExp.prototype.some = function (str, cb) {
  31. var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
  32. var matches,
  33. ret,
  34. n0,
  35. i = 0;
  36. var regex = mixinRegex(this, 'g');
  37. while ((matches = regex.exec(str)) !== null) {
  38. n0 = matches.splice(0, 1);
  39. ret = cb.apply(thisObj, matches.concat(i++, n0));
  40. if (ret) {
  41. return true;
  42. }
  43. }
  44. return false;
  45. };
  46. RegExp.prototype.every = function (str, cb) {
  47. var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
  48. var matches,
  49. ret,
  50. n0,
  51. i = 0;
  52. var regex = mixinRegex(this, 'g');
  53. while ((matches = regex.exec(str)) !== null) {
  54. n0 = matches.splice(0, 1);
  55. ret = cb.apply(thisObj, matches.concat(i++, n0));
  56. if (!ret) {
  57. return false;
  58. }
  59. }
  60. return true;
  61. };
  62. RegExp.prototype.map = function (str, cb) {
  63. var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
  64. var matches,
  65. n0,
  66. i = 0;
  67. var ret = [];
  68. var regex = mixinRegex(this, 'g');
  69. while ((matches = regex.exec(str)) !== null) {
  70. n0 = matches.splice(0, 1);
  71. ret.push(cb.apply(thisObj, matches.concat(i++, n0)));
  72. }
  73. return ret;
  74. };
  75. RegExp.prototype.filter = function (str, cb) {
  76. var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
  77. var matches,
  78. n0,
  79. i = 0;
  80. var ret = [];
  81. var regex = mixinRegex(this, 'g');
  82. while ((matches = regex.exec(str)) !== null) {
  83. n0 = matches.splice(0, 1);
  84. matches = matches.concat(i++, n0);
  85. if (cb.apply(thisObj, matches)) {
  86. ret.push(n0[0]);
  87. }
  88. }
  89. return ret;
  90. };
  91. RegExp.prototype.reduce = function (str, cb, prev) {
  92. var thisObj = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
  93. var matches,
  94. n0,
  95. i = 0;
  96. var regex = mixinRegex(this, 'g');
  97. if (!prev) {
  98. if ((matches = regex.exec(str)) !== null) {
  99. n0 = matches.splice(0, 1);
  100. prev = cb.apply(thisObj, [''].concat(matches.concat(i++, n0)));
  101. }
  102. }
  103. while ((matches = regex.exec(str)) !== null) {
  104. n0 = matches.splice(0, 1);
  105. prev = cb.apply(thisObj, [prev].concat(matches.concat(i++, n0)));
  106. }
  107. return prev;
  108. };
  109. RegExp.prototype.reduceRight = function (str, cb, prevOrig, thisObjOrig) {
  110. var matches,
  111. n0,
  112. i,
  113. prev = prevOrig,
  114. thisObj = thisObjOrig;
  115. var regex = mixinRegex(this, 'g');
  116. var matchesContainer = [];
  117. thisObj = thisObj || null;
  118. while ((matches = regex.exec(str)) !== null) {
  119. matchesContainer.push(matches);
  120. }
  121. i = matchesContainer.length;
  122. if (!i) {
  123. if (arguments.length < 3) {
  124. throw new TypeError('reduce of empty matches array with no initial value');
  125. }
  126. return prev;
  127. }
  128. if (!prev) {
  129. matches = matchesContainer.splice(-1)[0];
  130. n0 = matches.splice(0, 1);
  131. prev = cb.apply(thisObj, [''].concat(matches.concat(i--, n0)));
  132. }
  133. matchesContainer.reduceRight(function (container, mtches) {
  134. n0 = mtches.splice(0, 1);
  135. prev = cb.apply(thisObj, [prev].concat(mtches.concat(i--, n0)));
  136. return container;
  137. }, matchesContainer);
  138. return prev;
  139. };
  140. RegExp.prototype.find = function (str, cb) {
  141. var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
  142. var matches,
  143. ret,
  144. n0,
  145. i = 0;
  146. var regex = mixinRegex(this, 'g');
  147. while ((matches = regex.exec(str)) !== null) {
  148. n0 = matches.splice(0, 1);
  149. ret = cb.apply(thisObj, matches.concat(i++, n0));
  150. if (ret) {
  151. return n0[0];
  152. }
  153. }
  154. return false;
  155. };
  156. RegExp.prototype.findIndex = function (str, cb) {
  157. var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
  158. var matches,
  159. ret,
  160. n0,
  161. i = 0;
  162. var regex = mixinRegex(this, 'g');
  163. while ((matches = regex.exec(str)) !== null) {
  164. n0 = matches.splice(0, 1);
  165. ret = cb.apply(thisObj, matches.concat(i++, n0));
  166. if (ret) {
  167. return i - 1;
  168. }
  169. }
  170. return -1;
  171. };
  172. RegExp.prototype.findExec = function (str, cb) {
  173. var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
  174. var matches,
  175. ret,
  176. n0,
  177. i = 0;
  178. var regex = mixinRegex(this, 'g');
  179. while ((matches = regex.exec(str)) !== null) {
  180. n0 = matches.splice(0, 1);
  181. ret = cb.apply(thisObj, matches.concat(i++, n0));
  182. if (ret) {
  183. return matches;
  184. }
  185. }
  186. return false;
  187. };
  188. RegExp.prototype.filterExec = function (str, cb) {
  189. var thisObj = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
  190. var matches,
  191. n0,
  192. i = 0;
  193. var ret = [],
  194. regex = mixinRegex(this, 'g');
  195. while ((matches = regex.exec(str)) !== null) {
  196. n0 = matches.splice(0, 1);
  197. matches.push(i++, n0[0]);
  198. if (cb.apply(thisObj, matches)) {
  199. ret.push(matches);
  200. }
  201. }
  202. return ret;
  203. };