Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Сбор символов для создания компонента #2

Open
sergeche opened this issue Aug 22, 2023 · 0 comments
Open

Comments

@sergeche
Copy link
Contributor

Файл src/compiler/EndorphinContext.ts, см. TODO на строке 25

Чтобы создать компонент и какие-то особые внутренние примитивы используются специальные символы из модуля endorphin:

import { defineComponent, html } from 'endorphin';

export default defineComponent(() => {
    return html`<div>...</div>`;
});

Однако учитывая, что мы пишем в JS, пользователь может написать вот так:

import { defineComponent def, html as h } from 'endorphin';

export default def(() => {
    return h`<div>...</div>`;
});

То есть он может переименовать специальные символы (defineComponent, html) в свои (def, h) и использовать для описания компонент.

Класс EndorphinContext как раз отвечает за то, чтобы проверить, что какой-то узел AST является специальным, требующим особой обработки. Но он сейчас понимает только стандартные названия символов. Нужно научить его собирать реальные символы, которые используются в указанном AST модуля. Как минимум нужно это сделать для импортов. Максимум — понимать вот такие записи в том числе (лучше отдельным PR):

import { defineComponent, html } from 'endorphin';

const def = defineComponent;

export default def(() => {
    return html`<div>...</div>`;
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant