@nyaomaru/divider 1.3.7 → 1.4.0
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/README.md +28 -5
- package/dist/cjs/core/divider-loop.js +23 -0
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/utils/chunk.js +10 -0
- package/dist/esm/core/divider-loop.js +20 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/utils/chunk.js +7 -0
- package/dist/types/core/divider-loop.d.ts +2 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/utils/chunk.d.ts +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -118,6 +118,20 @@ const firstArrayElement = dividerLast(['hello', 'world'], 2);
|
|
|
118
118
|
// 'rld'
|
|
119
119
|
```
|
|
120
120
|
|
|
121
|
+
### 📌 `dividerLoop()` Usage
|
|
122
|
+
|
|
123
|
+
```ts
|
|
124
|
+
import { dividerLoop } from '@nyaomaru/divider';
|
|
125
|
+
|
|
126
|
+
// Divide string into chunks of given size
|
|
127
|
+
const result = dividerLoop('abcdefghij', 3);
|
|
128
|
+
// ['abc', 'def', 'ghi', 'j']
|
|
129
|
+
|
|
130
|
+
// Supports flatten option for string[]
|
|
131
|
+
const result2 = dividerLoop(['hello', 'world'], 2, { flatten: true });
|
|
132
|
+
// ['he', 'll', 'ow', 'or', 'ld']
|
|
133
|
+
```
|
|
134
|
+
|
|
121
135
|
## 🎯 Options
|
|
122
136
|
|
|
123
137
|
| Option | Type | Default | Description |
|
|
@@ -137,12 +151,21 @@ const result2 = divider(words, 2, { flatten: true });
|
|
|
137
151
|
|
|
138
152
|
## 💡 Features
|
|
139
153
|
|
|
154
|
+
### 🧩 Flexible Division
|
|
155
|
+
|
|
140
156
|
- Supports both `index-based` and `string-based` division
|
|
141
|
-
-
|
|
142
|
-
-
|
|
143
|
-
-
|
|
144
|
-
|
|
145
|
-
|
|
157
|
+
- Supports `multiple separators` (mixing indexes and characters)
|
|
158
|
+
- Works with both `string` and `string[]` input
|
|
159
|
+
- Optional `flatten` behavior to control nested results
|
|
160
|
+
|
|
161
|
+
### 🎯 Targeted Extraction
|
|
162
|
+
|
|
163
|
+
- `dividerFirst()`: Get only the first divided element
|
|
164
|
+
- `dividerLast()`: Get only the last divided element
|
|
165
|
+
|
|
166
|
+
### 🔁 Repeated Division
|
|
167
|
+
|
|
168
|
+
- `dividerLoop()`: Automatically divide into fixed-size chunks
|
|
146
169
|
|
|
147
170
|
## 🛠 Contributing
|
|
148
171
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dividerLoop = dividerLoop;
|
|
4
|
+
const is_1 = require("@/utils/is");
|
|
5
|
+
const chunk_1 = require("@/utils/chunk");
|
|
6
|
+
const divider_1 = require("@/core/divider");
|
|
7
|
+
function dividerLoop(input, size, options) {
|
|
8
|
+
var _a;
|
|
9
|
+
if (!(0, is_1.isNumber)(size) || size <= 0) {
|
|
10
|
+
console.warn('dividerLoop: chunk size must be a positive number');
|
|
11
|
+
return [];
|
|
12
|
+
}
|
|
13
|
+
const flatten = (_a = options === null || options === void 0 ? void 0 : options.flatten) !== null && _a !== void 0 ? _a : false;
|
|
14
|
+
if ((0, is_1.isString)(input)) {
|
|
15
|
+
const indexes = (0, chunk_1.generateIndexes)(input, size);
|
|
16
|
+
return (0, divider_1.divider)(input, ...indexes, { flatten });
|
|
17
|
+
}
|
|
18
|
+
const result = input.map((item) => {
|
|
19
|
+
const indexes = (0, chunk_1.generateIndexes)(item, size);
|
|
20
|
+
return (0, divider_1.divider)(item, ...indexes);
|
|
21
|
+
});
|
|
22
|
+
return (flatten ? result.flat() : result);
|
|
23
|
+
}
|
package/dist/cjs/index.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.dividerLast = exports.dividerFirst = exports.divider = void 0;
|
|
3
|
+
exports.dividerLoop = exports.dividerLast = exports.dividerFirst = exports.divider = void 0;
|
|
4
4
|
var divider_1 = require("@/core/divider");
|
|
5
5
|
Object.defineProperty(exports, "divider", { enumerable: true, get: function () { return divider_1.divider; } });
|
|
6
6
|
var divider_first_1 = require("@/core/divider-first");
|
|
7
7
|
Object.defineProperty(exports, "dividerFirst", { enumerable: true, get: function () { return divider_first_1.dividerFirst; } });
|
|
8
8
|
var divider_last_1 = require("@/core/divider-last");
|
|
9
9
|
Object.defineProperty(exports, "dividerLast", { enumerable: true, get: function () { return divider_last_1.dividerLast; } });
|
|
10
|
+
var divider_loop_1 = require("@/core/divider-loop");
|
|
11
|
+
Object.defineProperty(exports, "dividerLoop", { enumerable: true, get: function () { return divider_loop_1.dividerLoop; } });
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateIndexes = generateIndexes;
|
|
4
|
+
function generateIndexes(text, size) {
|
|
5
|
+
const indexes = [];
|
|
6
|
+
for (let i = size; i < text.length; i += size) {
|
|
7
|
+
indexes.push(i);
|
|
8
|
+
}
|
|
9
|
+
return indexes;
|
|
10
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { isString, isNumber } from '@/utils/is';
|
|
2
|
+
import { generateIndexes } from '@/utils/chunk';
|
|
3
|
+
import { divider } from '@/core/divider';
|
|
4
|
+
export function dividerLoop(input, size, options) {
|
|
5
|
+
var _a;
|
|
6
|
+
if (!isNumber(size) || size <= 0) {
|
|
7
|
+
console.warn('dividerLoop: chunk size must be a positive number');
|
|
8
|
+
return [];
|
|
9
|
+
}
|
|
10
|
+
const flatten = (_a = options === null || options === void 0 ? void 0 : options.flatten) !== null && _a !== void 0 ? _a : false;
|
|
11
|
+
if (isString(input)) {
|
|
12
|
+
const indexes = generateIndexes(input, size);
|
|
13
|
+
return divider(input, ...indexes, { flatten });
|
|
14
|
+
}
|
|
15
|
+
const result = input.map((item) => {
|
|
16
|
+
const indexes = generateIndexes(item, size);
|
|
17
|
+
return divider(item, ...indexes);
|
|
18
|
+
});
|
|
19
|
+
return (flatten ? result.flat() : result);
|
|
20
|
+
}
|
package/dist/esm/index.js
CHANGED
package/dist/types/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function generateIndexes(text: string, size: number): number[];
|