embeddings-splitter
Version:
A typescript library to split your long texts into smaller chunks to send them to OpenAI Embeddings API
39 lines (38 loc) • 1.51 kB
JavaScript
;
// function extractFunctions(code) {
// const functionRegex = /(?:async\s+)?function\s+(\w+)\s*\(([\w\s,]*)\)\s*{([\S\s]*?)}/g;
// const arrowFunctionRegex = /const\s+(\w+)\s*=\s*\(([\w\s,]*)\)\s*=>\s*{([\S\s]*?)}/g;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getChunksByJavascript = void 0;
// const functions = [];
// let match;
// while ((match = functionRegex.exec(code))) {
// const [, name, parameters, body] = match;
// functions.push({ name, parameters, body });
// }
// while ((match = arrowFunctionRegex.exec(code))) {
// const [, name, parameters, body] = match;
// functions.push({ name, parameters, body });
// }
// return functions;
// }
const typescript_1 = __importDefault(require("typescript"));
function extractFunctions(filename) {
console.log(filename);
const program = typescript_1.default.createProgram([filename], {});
const sourceFile = program.getSourceFile(filename);
console.log(sourceFile);
const collectedFunctions = [];
function visit(node) {
if (typescript_1.default.isFunctionDeclaration(node)) {
collectedFunctions.push(node.name.text);
}
typescript_1.default.forEachChild(node, visit);
}
visit(sourceFile);
return collectedFunctions;
}
exports.getChunksByJavascript = extractFunctions;