Skip to content

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

Description

@sergeche

Файл 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>`;
});

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions