hyoo-ru / mam_mol

$mol - fastest reactive micro-modular compact flexible lazy ui web framework.
http://mol.hyoo.ru
MIT License
681 stars 59 forks source link

Doc comments in view.tree #442

Open nin-jin opened 3 years ago

nin-jin commented 3 years ago

Возможно было бы не плохо иметь возможность добавлять человекопонятные аннотации к методам прямо во view.tree. Выглядеть это может, например, так:

$my_app $mol_book

    title
        # \Text that displayed in window title. Should be non empty.
        \Hello World

    books /

        <= Greetings
            # \Page with greetings of current user. Displayed only at first start.
            $mol_page

                body /
                    <= greetings
                        # \Greetings texts. Markdown supported.
                        \Hello, {username}!

Хотя, уже не так лаконично получается.

nin-jin commented 3 years ago

Или такой вариант:

$my_app $mol_book

    title \Hello World
        # \Text that displayed in window title. Should be non empty.

    books /

        <= Greetings $mol_page
            # \Page with greetings of current user. Displayed only at first start.

            body /
                <= greetings \Hello, {username}!
                    # \Greetings texts. Markdown supported.
osv commented 2 years ago

Аннотации должни стимулировать их делать и бить понятные при скрининге текста. Древовидность проще реализовать но делает нагрузку на восприятие. Плюс в примере вводить специальный символ #

Что если сделать соглашение для коментариев. Как пример, если начинаеться из названия метода, то он и будет аннотацией.

$my_app $mol_book
    - title - Text that displayed in window title. Should be non empty.
    title \Hello World
    books /
        - Greetings - Page with greetings of current user. Displayed only at first start
        <= Greetings $mol_page
            body /
                - greetings - Greetings texts. Markdown supported.
                <= greetings \Hello, {username}!

$my_app $mol_book
    - title - Text that displayed in window title. Should be non empty.
    - Greetings - Page with greetings of current user. Displayed only at first start
    - greetings - Greetings texts. Markdown supported.
    title \Hello World
    books /
        <= Greetings $mol_page
            body /
                <= greetings \Hello, {username}!

При этом игнорируеться местоположние комментария в дереве. Что позволяет также отделить документацию от реализации.

    - foo - describtion for propery foo
    - a1 - method a1
    - a2 - method a2
    - a3 - method a3
        more describtion for a3 
    foo <= a1 <= a2 <= a3 \3333
nin-jin commented 2 years ago

Документация и комментарии - это всё же разные вещи. Во многих языках документацию вставляют в комментарии лишь от безысходности. В Python, например, есть специальный синтаксис для документации.

Если сильно разносить, то проще прямо в readme и писать.

osv commented 2 years ago

Да, не документация, а аннотации которые могли б быть в одном месте и отделены от реализации, покрайней мере мне это видеться удобным.

Аннотации в view.tree могли б

Идея выше, слегка похоже на jsdoc. Только максимально простая, в примере паттерн для выявления аннотации (?<methodName>\w+) -, но может быть и другой