Skip to content

Commit

Permalink
support number as property type, added support for inheriting
Browse files Browse the repository at this point in the history
  • Loading branch information
AidasPa committed Mar 11, 2021
1 parent b887fb1 commit 6b30e63
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 11 deletions.
25 changes: 19 additions & 6 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@ const processCode = (code) => {
let className = null;
let firstClassReferenceLine = null;
let classHash = null;
let replaceSuper = false;

const transformedCodeArray = lines.map((line, i) => {
if(parser.isComment(line)) {
if (parser.isComment(line)) {
return '';
}
if (new RegExp(className).test(line)) {
Expand All @@ -35,7 +36,15 @@ const processCode = (code) => {
}
if (parser.isConstructor(line)) {
constructorLine = i;
return parser.replaceConstructorName(line, lines, i);
const [replaced, didReplace] = parser.replaceConstructorName(
line,
lines,
i,
);
if (didReplace) {
replaceSuper = true;
}
return replaced;
}
if (parser.isDecorator(line)) {
const [decorator, decoratorArguments] = parser.parseDecorator(line);
Expand Down Expand Up @@ -76,21 +85,25 @@ const processCode = (code) => {
classHash = newClassHash;

let times = 0;
const replacedReferencesToClasses = processedCode.map((line) => {
const replacedClassReferencesAndSuperCall = processedCode.map((line) => {
if (new RegExp(className).test(line)) {
if (times > 0) {
if (times > 0 && !line.startsWith('export')) {
return line.replace(className, `${className}_${classHash}`);
}
times += 1;
}

if (/super\(.*\)/.test(line) && replaceSuper) {
return '';
}

return line;
});

const compiledJavascript = ts.transpileModule(
replacedReferencesToClasses.join('\n'),
replacedClassReferencesAndSuperCall.join('\n'),
{
compilerOptions: { removeComments: false, target: 'es6' },
compilerOptions: { removeComments: false, target: 'es6', module: 'commonjs' },
},
).outputText;

Expand Down
13 changes: 8 additions & 5 deletions parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ const buildCompiledClass = (className) => {
module.exports = {
injectCompiledClass(code, line, className) {
const [hash, classLine] = buildCompiledClass(className);
code.splice(line + 5, 0, classLine);
console.log(code);
code.splice(line + 4, 0, ...[null, classLine]);
return [hash, code];
},
replaceClassReferenceToCompiled(className, hash, line) {
Expand Down Expand Up @@ -54,7 +53,11 @@ module.exports = {
const cleanedUp = field.replace(/ /g, '');

const [name, type] = cleanedUp.split(':');
const cleanType = type.replace(';', '');
let cleanType = type.replace(';', '');

if (cleanType === 'number') {
cleanType = 'int';
}

return [name, cleanType];
},
Expand All @@ -73,10 +76,10 @@ module.exports = {
}

if (shouldReplace) {
return line.replace('constructor', 'ctor');
return ['ctor() {', shouldReplace];
}

return line;
return [line, shouldReplace];
},
injectBootstrap(code) {
code.unshift(`
Expand Down

0 comments on commit 6b30e63

Please sign in to comment.