sanket3280/code-execution
0
1const arrayWrapper = require('../wrappers/array');2const linkedListWrapper = require('../wrappers/linkedList');3const treeWrapper = require('../wrappers/tree');4const graphWrapper = require('../wrappers/graph');5const stringWrapper = require('../wrappers/string');6const primitivesWrapper = require('../wrappers/primitives');7const stackWrapper = require('../wrappers/stack');8const queueWrapper = require('../wrappers/queue');9const dequeWrapper = require('../wrappers/deque');10const heapWrapper = require('../wrappers/heap');11const trieWrapper = require('../wrappers/trie');12 13function pickTopicWrappers(topic) {14 const t = (topic || '').toLowerCase();15 const wrappers = [];16 // Always include primitives17 wrappers.push(primitivesWrapper);18 if (t.includes('array')) wrappers.push(arrayWrapper);19 if (t.includes('linked') && t.includes('list')) wrappers.push(linkedListWrapper);20 if (t.includes('tree')) wrappers.push(treeWrapper);21 if (t.includes('graph')) wrappers.push(graphWrapper);22 if (t.includes('string')) wrappers.push(stringWrapper);23 if (t.includes('stack')) wrappers.push(stackWrapper);24 if (t.includes('queue')) wrappers.push(queueWrapper);25 if (t.includes('deque')) wrappers.push(dequeWrapper);26 if (t.includes('heap') || t.includes('priority')) wrappers.push(heapWrapper);27 if (t.includes('trie')) wrappers.push(trieWrapper);28 // Future: add linkedlist, tree, graph, string, math, etc.29 return wrappers;30}31 32function applyWrappers({ sourceCode, language, topic }) {33 const wrappers = pickTopicWrappers(topic);34 let processedSourceCode = sourceCode;35 let usedRunner = false;36 for (const wrap of wrappers) {37 const res = wrap({ sourceCode: processedSourceCode, language });38 if (!res) continue;39 processedSourceCode = res.sourceCode;40 usedRunner = usedRunner || !!res.usedRunner;41 }42 return { processedSourceCode, usedRunner };43}44 45module.exports = { applyWrappers };46 47 48 