@e280/stz 0.2.6 → 0.2.7

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@e280/stz",
3
- "version": "0.2.6",
3
+ "version": "0.2.7",
4
4
  "description": "everyday ts fns for everything",
5
5
  "license": "MIT",
6
6
  "author": "Chase Moskal <chasemoskal@gmail.com>",
package/s/index.ts CHANGED
@@ -43,4 +43,5 @@ export * from "./templating.js"
43
43
  export * from "./time.js"
44
44
  export * from "./trash.js"
45
45
  export * from "./types.js"
46
+ export * from "./untab.js"
46
47
 
package/s/untab.ts ADDED
@@ -0,0 +1,30 @@
1
+
2
+ export function untab(code: string) {
3
+ const lines = code.split(/\r|\n/)
4
+ let baseTabLevel: number | undefined
5
+
6
+ for (const line of lines) {
7
+ const isOnlyWhitespace = /^\s+$/.test(line)
8
+ if (!isOnlyWhitespace) {
9
+ const tabMatch = line.match(/^(\t+).+/)
10
+ if (tabMatch) {
11
+ const tabCount = tabMatch[1].length
12
+ baseTabLevel = baseTabLevel === undefined
13
+ ? tabCount
14
+ : tabCount < baseTabLevel
15
+ ? tabCount
16
+ : baseTabLevel
17
+ if (baseTabLevel === 0)
18
+ break
19
+ }
20
+ }
21
+ }
22
+
23
+ const rebaseTabRegex = new RegExp(`^\\t{${baseTabLevel}}`)
24
+
25
+ return lines
26
+ .map(line => /^\s+$/.test(line) ? "" : line)
27
+ .map(line => line.replace(rebaseTabRegex, ""))
28
+ .join("\n")
29
+ }
30
+
package/x/index.d.ts CHANGED
@@ -38,3 +38,4 @@ export * from "./templating.js";
38
38
  export * from "./time.js";
39
39
  export * from "./trash.js";
40
40
  export * from "./types.js";
41
+ export * from "./untab.js";
package/x/index.js CHANGED
@@ -38,4 +38,5 @@ export * from "./templating.js";
38
38
  export * from "./time.js";
39
39
  export * from "./trash.js";
40
40
  export * from "./types.js";
41
+ export * from "./untab.js";
41
42
  //# sourceMappingURL=index.js.map
package/x/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAE7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,gBAAgB,CAAA;AAE9B,cAAc,kBAAkB,CAAA;AAEhC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../s/index.ts"],"names":[],"mappings":"AACA,cAAc,0BAA0B,CAAA;AACxC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,eAAe,CAAA;AAE7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AAEnC,cAAc,gBAAgB,CAAA;AAE9B,cAAc,kBAAkB,CAAA;AAEhC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,mBAAmB,CAAA;AACjC,cAAc,SAAS,CAAA;AACvB,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA;AACzB,cAAc,WAAW,CAAA;AACzB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,WAAW,CAAA;AACzB,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
package/x/untab.d.ts ADDED
@@ -0,0 +1 @@
1
+ export declare function untab(code: string): string;
package/x/untab.js ADDED
@@ -0,0 +1,26 @@
1
+ export function untab(code) {
2
+ const lines = code.split(/\r|\n/);
3
+ let baseTabLevel;
4
+ for (const line of lines) {
5
+ const isOnlyWhitespace = /^\s+$/.test(line);
6
+ if (!isOnlyWhitespace) {
7
+ const tabMatch = line.match(/^(\t+).+/);
8
+ if (tabMatch) {
9
+ const tabCount = tabMatch[1].length;
10
+ baseTabLevel = baseTabLevel === undefined
11
+ ? tabCount
12
+ : tabCount < baseTabLevel
13
+ ? tabCount
14
+ : baseTabLevel;
15
+ if (baseTabLevel === 0)
16
+ break;
17
+ }
18
+ }
19
+ }
20
+ const rebaseTabRegex = new RegExp(`^\\t{${baseTabLevel}}`);
21
+ return lines
22
+ .map(line => /^\s+$/.test(line) ? "" : line)
23
+ .map(line => line.replace(rebaseTabRegex, ""))
24
+ .join("\n");
25
+ }
26
+ //# sourceMappingURL=untab.js.map
package/x/untab.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"untab.js","sourceRoot":"","sources":["../s/untab.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,KAAK,CAAC,IAAY;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACjC,IAAI,YAAgC,CAAA;IAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YACvC,IAAI,QAAQ,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;gBACnC,YAAY,GAAG,YAAY,KAAK,SAAS;oBACxC,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,QAAQ,GAAG,YAAY;wBACxB,CAAC,CAAC,QAAQ;wBACV,CAAC,CAAC,YAAY,CAAA;gBAChB,IAAI,YAAY,KAAK,CAAC;oBACrB,MAAK;YACP,CAAC;QACF,CAAC;IACF,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,MAAM,CAAC,QAAQ,YAAY,GAAG,CAAC,CAAA;IAE1D,OAAO,KAAK;SACV,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAC3C,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;SAC7C,IAAI,CAAC,IAAI,CAAC,CAAA;AACb,CAAC"}