diginext-utils 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/Checker.js +27 -0
  2. package/dist/Checker.mjs +25 -0
  3. package/dist/EventDispatcher.js +51 -0
  4. package/dist/EventDispatcher.mjs +51 -0
  5. package/dist/FileUpload.js +60 -0
  6. package/dist/FileUpload.mjs +60 -0
  7. package/dist/Slug.js +329 -0
  8. package/dist/Slug.mjs +327 -0
  9. package/dist/Timer.js +11 -0
  10. package/dist/Timer.mjs +2 -0
  11. package/dist/Validation.js +33 -0
  12. package/dist/Validation.mjs +33 -0
  13. package/dist/array.js +210 -0
  14. package/dist/array.mjs +3 -0
  15. package/dist/backend/file/createDir.js +21 -0
  16. package/dist/backend/file/createDir.mjs +13 -0
  17. package/dist/backend/file/fileMove.js +37 -0
  18. package/dist/backend/file/fileMove.mjs +29 -0
  19. package/dist/backend/file/findFilesByExt.js +48 -0
  20. package/dist/backend/file/findFilesByExt.mjs +40 -0
  21. package/dist/chunk-5AL36RZR.mjs +47 -0
  22. package/dist/chunk-7IYY7BKN.mjs +136 -0
  23. package/dist/chunk-ACLBWYEO.mjs +85 -0
  24. package/dist/chunk-AHFJBIQJ.mjs +9 -0
  25. package/dist/chunk-AKU6F3WT.mjs +9 -0
  26. package/dist/chunk-FOWYH6LL.mjs +32 -0
  27. package/dist/chunk-FTE6FZSH.mjs +17 -0
  28. package/dist/chunk-JKYSZLBF.mjs +27 -0
  29. package/dist/chunk-LXQIKFED.mjs +13 -0
  30. package/dist/chunk-Q5R25OIS.mjs +185 -0
  31. package/dist/chunk-R2BH5I6O.mjs +9 -0
  32. package/dist/chunk-UKRVCU5M.mjs +166 -0
  33. package/dist/chunk-VFKAZAWF.mjs +40 -0
  34. package/dist/chunk-VZGV2BTL.mjs +27 -0
  35. package/dist/chunk-Y4ZTQWPA.mjs +68 -0
  36. package/dist/color.js +69 -0
  37. package/dist/color.mjs +62 -0
  38. package/dist/console/enableConsole.js +15 -0
  39. package/dist/console/enableConsole.mjs +2 -0
  40. package/dist/console/index.js +19 -0
  41. package/dist/console/index.mjs +2 -0
  42. package/dist/device/browser.js +40 -0
  43. package/dist/device/browser.mjs +2 -0
  44. package/dist/device/camera.js +164 -0
  45. package/dist/device/camera.mjs +3 -0
  46. package/dist/device.js +173 -0
  47. package/dist/device.mjs +2 -0
  48. package/dist/index.mjs +14 -820
  49. package/dist/math/diffDate.js +10 -0
  50. package/dist/math/diffDate.mjs +10 -0
  51. package/dist/math/positiveNumber.js +28 -0
  52. package/dist/math/positiveNumber.mjs +16 -0
  53. package/dist/math.js +51 -0
  54. package/dist/math.mjs +2 -0
  55. package/dist/object.js +56 -0
  56. package/dist/object.mjs +2 -0
  57. package/dist/permission/requestCamera.js +29 -0
  58. package/dist/permission/requestCamera.mjs +2 -0
  59. package/dist/permission/requestDeviceOrientationControl.js +176 -0
  60. package/dist/permission/requestDeviceOrientationControl.mjs +3 -0
  61. package/dist/string/formatNumber.js +28 -0
  62. package/dist/string/formatNumber.mjs +10 -0
  63. package/dist/string/generatePassword.js +27 -0
  64. package/dist/string/generatePassword.mjs +16 -0
  65. package/dist/string/generateUUID.js +14 -0
  66. package/dist/string/generateUUID.mjs +14 -0
  67. package/dist/string/name/en.js +19 -0
  68. package/dist/string/name/en.mjs +17 -0
  69. package/dist/string/name/vi.js +37 -0
  70. package/dist/string/name/vi.mjs +20 -0
  71. package/dist/string/random.js +26 -0
  72. package/dist/string/random.mjs +2 -0
  73. package/dist/string/trimNull.js +20 -0
  74. package/dist/string/trimNull.mjs +14 -0
  75. package/dist/string/url.js +89 -0
  76. package/dist/string/url.mjs +3 -0
  77. package/dist/string.js +107 -0
  78. package/dist/string.mjs +3 -0
  79. package/package.json +2 -2
  80. package/dist/index.d.ts +0 -280
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ // src/Checker.ts
6
+ var isJSON = (content) => {
7
+ if (typeof content == "object") {
8
+ try {
9
+ content = JSON.stringify(content);
10
+ } catch (err) {
11
+ return false;
12
+ }
13
+ }
14
+ if (typeof content == "string") {
15
+ try {
16
+ content = JSON.parse(content);
17
+ } catch (err) {
18
+ return false;
19
+ }
20
+ }
21
+ if (typeof content != "object") {
22
+ return false;
23
+ }
24
+ return true;
25
+ };
26
+
27
+ exports.isJSON = isJSON;
@@ -0,0 +1,25 @@
1
+ import './chunk-AKU6F3WT.mjs';
2
+
3
+ // src/Checker.ts
4
+ var isJSON = (content) => {
5
+ if (typeof content == "object") {
6
+ try {
7
+ content = JSON.stringify(content);
8
+ } catch (err) {
9
+ return false;
10
+ }
11
+ }
12
+ if (typeof content == "string") {
13
+ try {
14
+ content = JSON.parse(content);
15
+ } catch (err) {
16
+ return false;
17
+ }
18
+ }
19
+ if (typeof content != "object") {
20
+ return false;
21
+ }
22
+ return true;
23
+ };
24
+
25
+ export { isJSON };
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+
3
+ // src/EventDispatcher.ts
4
+ var EventDispatcher = class {
5
+ constructor() {
6
+ }
7
+ addEventListener(type, listener) {
8
+ if (this._listeners === void 0)
9
+ this._listeners = {};
10
+ const listeners = this._listeners;
11
+ if (listeners[type] === void 0) {
12
+ listeners[type] = [];
13
+ }
14
+ if (listeners[type].indexOf(listener) === -1) {
15
+ listeners[type].push(listener);
16
+ }
17
+ }
18
+ hasEventListener(type, listener) {
19
+ if (this._listeners === void 0)
20
+ return false;
21
+ const listeners = this._listeners;
22
+ return listeners[type] !== void 0 && listeners[type].indexOf(listener) !== -1;
23
+ }
24
+ removeEventListener(type, listener) {
25
+ if (this._listeners === void 0)
26
+ return;
27
+ const listeners = this._listeners;
28
+ const listenerArray = listeners[type];
29
+ if (listenerArray !== void 0) {
30
+ const index = listenerArray.indexOf(listener);
31
+ if (index !== -1) {
32
+ listenerArray.splice(index, 1);
33
+ }
34
+ }
35
+ }
36
+ dispatchEvent(event) {
37
+ if (this._listeners === void 0)
38
+ return;
39
+ const listeners = this._listeners;
40
+ const listenerArray = listeners[event.type];
41
+ if (listenerArray !== void 0) {
42
+ event.target = this;
43
+ const array = listenerArray.slice(0);
44
+ for (let i = 0, l = array.length; i < l; i++) {
45
+ array[i].call(this, event);
46
+ }
47
+ }
48
+ }
49
+ };
50
+
51
+ module.exports = EventDispatcher;
@@ -0,0 +1,51 @@
1
+ import './chunk-AKU6F3WT.mjs';
2
+
3
+ // src/EventDispatcher.ts
4
+ var EventDispatcher = class {
5
+ constructor() {
6
+ }
7
+ addEventListener(type, listener) {
8
+ if (this._listeners === void 0)
9
+ this._listeners = {};
10
+ const listeners = this._listeners;
11
+ if (listeners[type] === void 0) {
12
+ listeners[type] = [];
13
+ }
14
+ if (listeners[type].indexOf(listener) === -1) {
15
+ listeners[type].push(listener);
16
+ }
17
+ }
18
+ hasEventListener(type, listener) {
19
+ if (this._listeners === void 0)
20
+ return false;
21
+ const listeners = this._listeners;
22
+ return listeners[type] !== void 0 && listeners[type].indexOf(listener) !== -1;
23
+ }
24
+ removeEventListener(type, listener) {
25
+ if (this._listeners === void 0)
26
+ return;
27
+ const listeners = this._listeners;
28
+ const listenerArray = listeners[type];
29
+ if (listenerArray !== void 0) {
30
+ const index = listenerArray.indexOf(listener);
31
+ if (index !== -1) {
32
+ listenerArray.splice(index, 1);
33
+ }
34
+ }
35
+ }
36
+ dispatchEvent(event) {
37
+ if (this._listeners === void 0)
38
+ return;
39
+ const listeners = this._listeners;
40
+ const listenerArray = listeners[event.type];
41
+ if (listenerArray !== void 0) {
42
+ event.target = this;
43
+ const array = listenerArray.slice(0);
44
+ for (let i = 0, l = array.length; i < l; i++) {
45
+ array[i].call(this, event);
46
+ }
47
+ }
48
+ }
49
+ };
50
+
51
+ export { EventDispatcher as default };
@@ -0,0 +1,60 @@
1
+ 'use strict';
2
+
3
+ // src/FileUpload.ts
4
+ var logFile = "[FileUpload.js] ";
5
+ var FileUpload = {
6
+ uploadBlob(props) {
7
+ const { blob, url, params, onComplete, onError } = props;
8
+ var formData = new FormData();
9
+ formData.append("upload", blob, "img_" + +new Date() + ".jpg");
10
+ if (params) {
11
+ Object.keys(params).forEach((key) => {
12
+ var val = params[key];
13
+ formData.append(key, val);
14
+ });
15
+ }
16
+ var request = new XMLHttpRequest();
17
+ request.open("POST", url);
18
+ request.send(formData);
19
+ request.onreadystatechange = function() {
20
+ if (this.readyState == 4) {
21
+ if (this.status == 200) {
22
+ var response = {};
23
+ try {
24
+ response = JSON.parse(request.response) || "";
25
+ } catch (error) {
26
+ console.error(logFile, "Can't part JSON of the response");
27
+ }
28
+ var statusOfSafety = response.status || 0;
29
+ if (statusOfSafety == 1) {
30
+ console.log(logFile, "request: ", request);
31
+ var data = response.data || {};
32
+ console.log(logFile, data);
33
+ var _url = data["url"];
34
+ if (onComplete)
35
+ onComplete(_url);
36
+ } else {
37
+ var errMsg = "\u1EA2nh c\xF3 n\u1ED9i dung kh\xF4ng ph\xF9 h\u1EE3p.";
38
+ console.error(logFile, errMsg);
39
+ if (onError)
40
+ onError(errMsg);
41
+ }
42
+ } else {
43
+ var errMsg = "Upload \u1EA3nh kh\xF4ng th\xE0nh c\xF4ng!";
44
+ console.error(logFile, errMsg);
45
+ if (onError)
46
+ onError(errMsg);
47
+ }
48
+ }
49
+ };
50
+ request.onerror = function(res) {
51
+ var errMsg = "Upload \u1EA3nh kh\xF4ng th\xE0nh c\xF4ng!";
52
+ console.error(logFile, errMsg, "=>", res);
53
+ if (onError)
54
+ onError(errMsg);
55
+ };
56
+ }
57
+ };
58
+ var FileUpload_default = FileUpload;
59
+
60
+ module.exports = FileUpload_default;
@@ -0,0 +1,60 @@
1
+ import './chunk-AKU6F3WT.mjs';
2
+
3
+ // src/FileUpload.ts
4
+ var logFile = "[FileUpload.js] ";
5
+ var FileUpload = {
6
+ uploadBlob(props) {
7
+ const { blob, url, params, onComplete, onError } = props;
8
+ var formData = new FormData();
9
+ formData.append("upload", blob, "img_" + +new Date() + ".jpg");
10
+ if (params) {
11
+ Object.keys(params).forEach((key) => {
12
+ var val = params[key];
13
+ formData.append(key, val);
14
+ });
15
+ }
16
+ var request = new XMLHttpRequest();
17
+ request.open("POST", url);
18
+ request.send(formData);
19
+ request.onreadystatechange = function() {
20
+ if (this.readyState == 4) {
21
+ if (this.status == 200) {
22
+ var response = {};
23
+ try {
24
+ response = JSON.parse(request.response) || "";
25
+ } catch (error) {
26
+ console.error(logFile, "Can't part JSON of the response");
27
+ }
28
+ var statusOfSafety = response.status || 0;
29
+ if (statusOfSafety == 1) {
30
+ console.log(logFile, "request: ", request);
31
+ var data = response.data || {};
32
+ console.log(logFile, data);
33
+ var _url = data["url"];
34
+ if (onComplete)
35
+ onComplete(_url);
36
+ } else {
37
+ var errMsg = "\u1EA2nh c\xF3 n\u1ED9i dung kh\xF4ng ph\xF9 h\u1EE3p.";
38
+ console.error(logFile, errMsg);
39
+ if (onError)
40
+ onError(errMsg);
41
+ }
42
+ } else {
43
+ var errMsg = "Upload \u1EA3nh kh\xF4ng th\xE0nh c\xF4ng!";
44
+ console.error(logFile, errMsg);
45
+ if (onError)
46
+ onError(errMsg);
47
+ }
48
+ }
49
+ };
50
+ request.onerror = function(res) {
51
+ var errMsg = "Upload \u1EA3nh kh\xF4ng th\xE0nh c\xF4ng!";
52
+ console.error(logFile, errMsg, "=>", res);
53
+ if (onError)
54
+ onError(errMsg);
55
+ };
56
+ }
57
+ };
58
+ var FileUpload_default = FileUpload;
59
+
60
+ export { FileUpload_default as default };
package/dist/Slug.js ADDED
@@ -0,0 +1,329 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ // src/Slug.ts
6
+ var makeSlug = (s, opt = {}) => {
7
+ var defaults = {
8
+ delimiter: "-",
9
+ lowercase: true,
10
+ replacements: {},
11
+ transliterate: typeof XRegExp === "undefined" ? true : false
12
+ };
13
+ for (var k in defaults) {
14
+ if (!opt.hasOwnProperty(k)) {
15
+ opt[k] = defaults[k];
16
+ }
17
+ }
18
+ var char_map = {
19
+ \u00C0: "A",
20
+ \u00C1: "A",
21
+ \u00C2: "A",
22
+ \u00C3: "A",
23
+ \u00C4: "A",
24
+ \u00C5: "A",
25
+ \u00C6: "AE",
26
+ \u00C7: "C",
27
+ \u00C8: "E",
28
+ \u00C9: "E",
29
+ \u00CA: "E",
30
+ \u00CB: "E",
31
+ \u00CC: "I",
32
+ \u00CD: "I",
33
+ \u00CE: "I",
34
+ \u00CF: "I",
35
+ \u00D0: "D",
36
+ \u00D1: "N",
37
+ \u00D2: "O",
38
+ \u00D3: "O",
39
+ \u00D4: "O",
40
+ \u00D5: "O",
41
+ \u00D6: "O",
42
+ \u0150: "O",
43
+ \u00D8: "O",
44
+ \u00D9: "U",
45
+ \u00DA: "U",
46
+ \u00DB: "U",
47
+ \u00DC: "U",
48
+ \u0170: "U",
49
+ \u00DD: "Y",
50
+ \u00DE: "TH",
51
+ \u00DF: "ss",
52
+ \u00E0: "a",
53
+ \u00E1: "a",
54
+ \u00E2: "a",
55
+ \u00E3: "a",
56
+ \u00E4: "a",
57
+ \u00E5: "a",
58
+ \u00E6: "ae",
59
+ \u00E7: "c",
60
+ \u00E8: "e",
61
+ \u00E9: "e",
62
+ \u00EA: "e",
63
+ \u00EB: "e",
64
+ \u00EC: "i",
65
+ \u00ED: "i",
66
+ \u00EE: "i",
67
+ \u00EF: "i",
68
+ \u00F0: "d",
69
+ \u00F1: "n",
70
+ \u00F2: "o",
71
+ \u00F3: "o",
72
+ \u00F4: "o",
73
+ \u00F5: "o",
74
+ \u00F6: "o",
75
+ \u0151: "o",
76
+ \u00F8: "o",
77
+ \u00F9: "u",
78
+ \u00FA: "u",
79
+ \u00FB: "u",
80
+ \u00FC: "u",
81
+ \u0171: "u",
82
+ \u00FD: "y",
83
+ \u00FE: "th",
84
+ \u00FF: "y",
85
+ "\xA9": "(c)",
86
+ \u0391: "A",
87
+ \u0392: "B",
88
+ \u0393: "G",
89
+ \u0394: "D",
90
+ \u0395: "E",
91
+ \u0396: "Z",
92
+ \u0397: "H",
93
+ \u0398: "8",
94
+ \u0399: "I",
95
+ \u039A: "K",
96
+ \u039B: "L",
97
+ \u039C: "M",
98
+ \u039D: "N",
99
+ \u039E: "3",
100
+ \u039F: "O",
101
+ \u03A0: "P",
102
+ \u03A1: "R",
103
+ \u03A3: "S",
104
+ \u03A4: "T",
105
+ \u03A5: "Y",
106
+ \u03A6: "F",
107
+ \u03A7: "X",
108
+ \u03A8: "PS",
109
+ \u03A9: "W",
110
+ \u0386: "A",
111
+ \u0388: "E",
112
+ \u038A: "I",
113
+ \u038C: "O",
114
+ \u038E: "Y",
115
+ \u0389: "H",
116
+ \u038F: "W",
117
+ \u03AA: "I",
118
+ \u03AB: "Y",
119
+ \u03B1: "a",
120
+ \u03B2: "b",
121
+ \u03B3: "g",
122
+ \u03B4: "d",
123
+ \u03B5: "e",
124
+ \u03B6: "z",
125
+ \u03B7: "h",
126
+ \u03B8: "8",
127
+ \u03B9: "i",
128
+ \u03BA: "k",
129
+ \u03BB: "l",
130
+ \u03BC: "m",
131
+ \u03BD: "n",
132
+ \u03BE: "3",
133
+ \u03BF: "o",
134
+ \u03C0: "p",
135
+ \u03C1: "r",
136
+ \u03C3: "s",
137
+ \u03C4: "t",
138
+ \u03C5: "y",
139
+ \u03C6: "f",
140
+ \u03C7: "x",
141
+ \u03C8: "ps",
142
+ \u03C9: "w",
143
+ \u03AC: "a",
144
+ \u03AD: "e",
145
+ \u03AF: "i",
146
+ \u03CC: "o",
147
+ \u03CD: "y",
148
+ \u03AE: "h",
149
+ \u03CE: "w",
150
+ \u03C2: "s",
151
+ \u03CA: "i",
152
+ \u03B0: "y",
153
+ \u03CB: "y",
154
+ \u0390: "i",
155
+ \u015E: "S",
156
+ \u0130: "I",
157
+ \u011E: "G",
158
+ \u015F: "s",
159
+ \u0131: "i",
160
+ \u011F: "g",
161
+ \u0410: "A",
162
+ \u0411: "B",
163
+ \u0412: "V",
164
+ \u0413: "G",
165
+ \u0414: "D",
166
+ \u0415: "E",
167
+ \u0401: "Yo",
168
+ \u0416: "Zh",
169
+ \u0417: "Z",
170
+ \u0418: "I",
171
+ \u0419: "J",
172
+ \u041A: "K",
173
+ \u041B: "L",
174
+ \u041C: "M",
175
+ \u041D: "N",
176
+ \u041E: "O",
177
+ \u041F: "P",
178
+ \u0420: "R",
179
+ \u0421: "S",
180
+ \u0422: "T",
181
+ \u0423: "U",
182
+ \u0424: "F",
183
+ \u0425: "H",
184
+ \u0426: "C",
185
+ \u0427: "Ch",
186
+ \u0428: "Sh",
187
+ \u0429: "Sh",
188
+ \u042A: "",
189
+ \u042B: "Y",
190
+ \u042C: "",
191
+ \u042D: "E",
192
+ \u042E: "Yu",
193
+ \u042F: "Ya",
194
+ \u0430: "a",
195
+ \u0431: "b",
196
+ \u0432: "v",
197
+ \u0433: "g",
198
+ \u0434: "d",
199
+ \u0435: "e",
200
+ \u0451: "yo",
201
+ \u0436: "zh",
202
+ \u0437: "z",
203
+ \u0438: "i",
204
+ \u0439: "j",
205
+ \u043A: "k",
206
+ \u043B: "l",
207
+ \u043C: "m",
208
+ \u043D: "n",
209
+ \u043E: "o",
210
+ \u043F: "p",
211
+ \u0440: "r",
212
+ \u0441: "s",
213
+ \u0442: "t",
214
+ \u0443: "u",
215
+ \u0444: "f",
216
+ \u0445: "h",
217
+ \u0446: "c",
218
+ \u0447: "ch",
219
+ \u0448: "sh",
220
+ \u0449: "sh",
221
+ \u044A: "",
222
+ \u044B: "y",
223
+ \u044C: "",
224
+ \u044D: "e",
225
+ \u044E: "yu",
226
+ \u044F: "ya",
227
+ \u0404: "Ye",
228
+ \u0406: "I",
229
+ \u0407: "Yi",
230
+ \u0490: "G",
231
+ \u0454: "ye",
232
+ \u0456: "i",
233
+ \u0457: "yi",
234
+ \u0491: "g",
235
+ \u010C: "C",
236
+ \u010E: "D",
237
+ \u011A: "E",
238
+ \u0147: "N",
239
+ \u0158: "R",
240
+ \u0160: "S",
241
+ \u0164: "T",
242
+ \u016E: "U",
243
+ \u017D: "Z",
244
+ \u010D: "c",
245
+ \u010F: "d",
246
+ \u011B: "e",
247
+ \u0148: "n",
248
+ \u0159: "r",
249
+ \u0161: "s",
250
+ \u0165: "t",
251
+ \u016F: "u",
252
+ \u017E: "z",
253
+ \u0104: "A",
254
+ \u0106: "C",
255
+ \u0118: "e",
256
+ \u0141: "L",
257
+ \u0143: "N",
258
+ \u015A: "S",
259
+ \u0179: "Z",
260
+ \u017B: "Z",
261
+ \u0105: "a",
262
+ \u0107: "c",
263
+ \u0119: "e",
264
+ \u0142: "l",
265
+ \u0144: "n",
266
+ \u015B: "s",
267
+ \u017A: "z",
268
+ \u017C: "z",
269
+ \u0100: "A",
270
+ \u0112: "E",
271
+ \u0122: "G",
272
+ \u012A: "i",
273
+ \u0136: "k",
274
+ \u013B: "L",
275
+ \u0145: "N",
276
+ \u016A: "u",
277
+ \u0101: "a",
278
+ \u0113: "e",
279
+ \u0123: "g",
280
+ \u012B: "i",
281
+ \u0137: "k",
282
+ \u013C: "l",
283
+ \u0146: "n",
284
+ \u016B: "u"
285
+ };
286
+ s = s.replace(/á|à|ả|ạ|ã|ă|ắ|ằ|ẳ|ẵ|ặ|â|ấ|ầ|ẩ|ẫ|ậ/gi, "a");
287
+ s = s.replace(/é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ/gi, "e");
288
+ s = s.replace(/i|í|ì|ỉ|ĩ|ị/gi, "i");
289
+ s = s.replace(/ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ/gi, "o");
290
+ s = s.replace(/ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự/gi, "u");
291
+ s = s.replace(/ý|ỳ|ỷ|ỹ|ỵ/gi, "y");
292
+ s = s.replace(/đ/gi, "d");
293
+ s = s.replace(/\-\-\-\-\-/gi, "-");
294
+ s = s.replace(/\-\-\-\-/gi, "-");
295
+ s = s.replace(/\-\-\-/gi, "-");
296
+ s = s.replace(/\-\-/gi, "-");
297
+ s = "@" + s + "@";
298
+ s = s.replace(/\@\-|\-\@|\@/gi, "");
299
+ for (var k in opt.replacements) {
300
+ s = s.replace(RegExp(k, "g"), opt.replacements[k]);
301
+ }
302
+ if (opt.transliterate) {
303
+ for (var k in char_map) {
304
+ s = s.replace(RegExp(k, "g"), char_map[k]);
305
+ }
306
+ }
307
+ var alnum = typeof XRegExp === "undefined" ? RegExp("[^a-z0-9]+", "ig") : XRegExp("[^\\p{L}\\p{N}]+", "ig");
308
+ s = s.replace(alnum, opt.delimiter);
309
+ s = s.replace(RegExp("[" + opt.delimiter + "]{2,}", "g"), opt.delimiter);
310
+ s = s.substring(0, opt.limit);
311
+ s = s.replace(RegExp("(^" + opt.delimiter + "|" + opt.delimiter + "$)", "g"), "");
312
+ return opt.lowercase ? s.toLowerCase() : s;
313
+ };
314
+ /**
315
+ * Create a web friendly URL slug from a string.
316
+ *
317
+ * Requires XRegExp (http://xregexp.com) with unicode add-ons for UTF-8 support.
318
+ *
319
+ * Although supported, transliteration is discouraged because
320
+ * 1) most web browsers support UTF-8 characters in URLs
321
+ * 2) transliteration causes a loss of information
322
+ *
323
+ * @author Sean Murphy <sean@iamseanmurphy.com>
324
+ * @copyright Copyright 2012 Sean Murphy. All rights reserved.
325
+ * @license http://creativecommons.org/publicdomain/zero/1.0/
326
+ *
327
+ */
328
+
329
+ exports.makeSlug = makeSlug;