From 5f559159fc1cd509bccf9834f5ac0ee76b430d48 Mon Sep 17 00:00:00 2001 From: Tyler Smith Date: Wed, 29 Nov 2023 23:17:13 -0400 Subject: [PATCH 01/23] Adds the template children and field attributes to the component --- .../ComponentStatementProvider.ts | 48 +++++++++++++++++-- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/src/bscPlugin/fileProviders/ComponentStatementProvider.ts b/src/bscPlugin/fileProviders/ComponentStatementProvider.ts index 6321bc2f7..0dbdff47c 100644 --- a/src/bscPlugin/fileProviders/ComponentStatementProvider.ts +++ b/src/bscPlugin/fileProviders/ComponentStatementProvider.ts @@ -7,7 +7,7 @@ import { Cache } from '../../Cache'; import * as path from 'path'; import { util } from '../../util'; import type { ProvideFileEvent } from '../../interfaces'; -import { isDottedGetExpression, isFieldStatement, isMethodStatement, isVariableExpression } from '../../astUtils/reflection'; +import { isDottedGetExpression, isFieldStatement, isMethodStatement, isVariableExpression, isLiteralExpression, isTemplateStringExpression } from '../../astUtils/reflection'; import { createFunctionStatement, createFunctionExpression, createDottedSetStatement, createVariableExpression } from '../../astUtils/creators'; import type { Statement } from '../../parser/AstNode'; import { TokenKind } from '../../lexer/TokenKind'; @@ -27,7 +27,7 @@ export class ComponentStatementProvider { const cache = new Cache(); file.ast.walk(createVisitor({ ComponentStatement: (node) => { - //force the desetPath for this component to be within the `pkg:/components` folder + //force the destPath for this component to be within the `pkg:/components` folder const destDir = cache.getOrAdd(file.srcPath, () => { return path.dirname(file.destPath).replace(/^(.+?)(?=[\/\\]|$)/, (match: string, firstDirName: string) => { return 'components'; @@ -56,12 +56,24 @@ export class ComponentStatementProvider { //declare interface field } else if (isFieldStatement(member) && member.accessModifier?.text.toLowerCase() === 'public') { - return ``; + return ``; } else { return ''; } }).filter(x => !!x); + let componentChildren = ''; + const template = statement.annotations?.find(x => x.name.toLowerCase() === 'template'); + if (template) { + componentChildren = `${this.getAnnotationValue([template])}`; + } + xmlFile.parse(undent`