Здравствуйте, Athari , Вы писали:
A>Ну давай, расскажи мне...
Погоди, сейчас балалайку достану и спляшу.
A>.... как должен выглядеть язык разметки для документов с лейаутами....
Ты больной, не? Речь, напоминаю, идёт про консоль, где даже число строк/столбцов не гарантировано. Всё, что есть — это вывод последовательности символов + возможность задать цвет/фон. ДЛЯ ЭТОЙ задачи твоя библиотека — маразм и оверхэд. Если уж так не нравятся классические ESC-последовательности (которые вообще-то стандарт), можно придумать что-то вроде "\1\2" и т.п. (для задания цвета или переноса строк). Этого хватает за глаза и не напрягает обилием тегов. Не надо думать, что если скопировал WPF, то сразу сделал что-то умное. Да, есть большая разница между XML и простым "языком разметки цвета". Ты её не видишь, потому что сам придумал фигню и сам же ею упиваешься. Ради бога, тщеславие не вчера придумано — продолжай, но не считай других за дураков и плебеев — ты сам пока что НИЧЕГО не придумал хорошего, чтобы тут хамить. Просто зарой своё поделие и не позорься, до тебя уже десяток этих либ сделано и предано забвению ввиду полной моральной устарелости.
Re[4]: CsConsoleFormat - Форматирование текста в консоли (.NET)
Здравствуйте, Kolesiki, Вы писали:
K> Ты больной, не? Речь, напоминаю, идёт про консоль, где даже число строк/столбцов не гарантировано.
На экране ширина вообще никогда не гарантирована, но это никому не мешает рисовать окошки и таблицы. Странно, не правда ли?
Библиотека помогает в том числе не беспокоиться о ширине.
K> Всё, что есть — это вывод последовательности символов + возможность задать цвет/фон.
Некоторые терминалы на *никсах поддерживают больше опций.
K> ДЛЯ ЭТОЙ задачи твоя библиотека — маразм и оверхэд.
Окей. Покажи мне код, который отформатирует вывод вот так:
А потом я покажу свой код, и мы сравним, какой более читаемый.
K> Если уж так не нравятся классические ESC-последовательности (которые вообще-то стандарт),
Которые вообще-то не поддерживаются на большинстве версий Windows, а в разных терминалах имеют разный смысл.
K> можно придумать что-то вроде "\1\2" и т.п. (для задания цвета или переноса строк). Этого хватает за глаза и не напрягает обилием тегов.
Окей. А теперь нарисуй мне банальную табличку cо справкой по аргументам вроде этой, используя свои "теги" (я про верхнюю табличку, табличка снизу для понта):
K> Не надо думать, что если скопировал WPF, то сразу сделал что-то умное. Да, есть большая разница между XML и простым "языком разметки цвета". Ты её не видишь, потому что сам придумал фигню и сам же ею упиваешься.
У тебя есть конкретные предложения читаемого языка, желательно с поддержкой в IDE? Я же тебя уже спрашивал, ты вопрос проигнорировал, просто повторив изначальное заявление. Делаю вывод, что предложить ничего ты не можешь.
В принципе можно прикрутить поверх что-нибудь HAML-образное, но поддержка в IDE помножается на ноль. К тому же эта функциональность совершенно спокойно реализуется поверх библиотеки, её саму не нужно менять.
K> Ради бога, тщеславие не вчера придумано — продолжай, но не считай других за дураков и плебеев — ты сам пока что НИЧЕГО не придумал хорошего, чтобы тут хамить. Просто зарой своё поделие и не позорься, до тебя уже десяток этих либ сделано и предано забвению ввиду полной моральной устарелости.
Здравствуйте, Athari , Вы писали:
A>Ну давай, расскажи мне, как должен выглядеть язык разметки для документов с лейаутами как в WPF и биндингами. Я весь внимание.
1. Оно работает с произвольным деревом объектов или прибито гвоздями к конкретным фреймворкам? (ReSharper работает с произвольным XAML, но в конкретных реализациях имеет дополнительные фичи типа резолва имён в биндингах и прочего.)
1.1 Насколько реалистично прикрутить операции типа bind? Это потребует изменения расширения Ammy для VS, то есть вообще без вариантов?
2. Оно работает в новых Common Project System / MSBuild Core? (WPF официально не поддерживает CPS, но есть методы прикрутить. Насчёт остальных официально поддерживаемых Ammy не в курсе. А, нашёл баг, не работает.)
Здравствуйте, Athari , Вы писали:
A>1. Оно работает с произвольным деревом объектов или прибито гвоздями к конкретным фреймворкам? (ReSharper работает с произвольным XAML, но в конкретных реализациях имеет дополнительные фичи типа резолва имён в биндингах и прочего.)
Вообще-то там описание есть.
Оно работает с любым XAML и интелисенс предоставляет из коробки. Но работает оно не с объектами, а именно с XAML, так как не все что можно сделать в XAML можно повторить объектами. Шарп оно тоже разбирает, так что в интеллисенсе он учитывается.
A>1.1 Насколько реалистично прикрутить операции типа bind? Это потребует изменения расширения Ammy для VS, то есть вообще без вариантов?
Он там и так работает. Все что есть в XAML есть в Ammy. Это чистый суперсэт (если не ошибаюсь).
A>2. Оно работает в новых Common Project System / MSBuild Core?
Вот чего не знаю, того не знаю. Сейчас дерну автора. Он ответит тебе более развернуто.
A>3. Оно прикручивается как зависимость в минимальной форме, которая не тащит за собой отладочные порты в проект и какие-то дополнительные файлы? (Я что-то не очень понял статус запросов после чтения комментариев.)
Оно все превращается в XAML. Это 100%-й прероцессор.
A>4. Оно поддерживает C# 7?
Вроде, да. Сначала там использовался наш парсер Шарпа. Я его до 7.1 довел. А сейчас, вроде бы, просто Розлин используется. Так что Шартп там будет всегда актуальным.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: CsConsoleFormat - Форматирование текста в консоли (.N
Здравствуйте, Athari , Вы писали:
A>Прикольно.
A>1. Оно работает с произвольным деревом объектов или прибито гвоздями к конкретным фреймворкам? (ReSharper работает с произвольным XAML, но в конкретных реализациях имеет дополнительные фичи типа резолва имён в биндингах и прочего.)
Оно прибито к конкретным фреймворкам, так как нужно знать основные типы вроде DependencyObject. С другой стороны, добавить поддержку новой платформы совсем не сложно. Вот, например, как была добавлена поддержка Авалонии: https://github.com/AmmyUI/AmmyUI/blob/master/src/Core/Ammy.Platforms/AvaloniaPlatform.cs
A>1.1 Насколько реалистично прикрутить операции типа bind? Это потребует изменения расширения Ammy для VS, то есть вообще без вариантов?
bind есть, как и все остальные встроенные синтаксические расширения. Для bind даже есть свой синтаксис, который позволяет определять конвертер по месту.
A>2. Оно работает в новых Common Project System / MSBuild Core? (WPF официально не поддерживает CPS, но есть методы прикрутить. Насчёт остальных официально поддерживаемых Ammy не в курсе. А, нашёл баг, не работает.)
Как раз собирался заняться этим. Помимо issue с гитхаба, мне ещё один человек написал об этом в гиттере.
A>3. Оно прикручивается как зависимость в минимальной форме, которая не тащит за собой отладочные порты в проект и какие-то дополнительные файлы? (Я что-то не очень понял статус запросов после чтения комментариев.)
Hot Reload можно вырубить через символ компиляции NO_AMMY_UPDATE
A>4. Оно поддерживает C# 7? (Странный вопрос, но есть баг со странным объяснением и ещё один, скоро год будет. Для меня это критично, потому что в коде сплошной C# 7.)
Поддерживает некоторые фичи, и не поддерживает другие. По хорошему надо бы перевести парсинг C# на рослин, но этим надо заниматься.
Здравствуйте, ionoy, Вы писали:
I>Поддерживает некоторые фичи, и не поддерживает другие. По хорошему надо бы перевести парсинг C# на рослин, но этим надо заниматься.
Если надо что-то допилить в грамматике Шарпа, скажи, я постараюсь сделать когда будет свободное время.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Хочу похвастаться! Первый язык на основе Nitra - AMMY
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, ionoy, Вы писали:
I>>Поддерживает некоторые фичи, и не поддерживает другие. По хорошему надо бы перевести парсинг C# на рослин, но этим надо заниматься.
VD>Если надо что-то допилить в грамматике Шарпа, скажи, я постараюсь сделать когда будет свободное время.
Мне кажется, это гонка которую нам никогда не выиграть. Они теперь раз в два месяца новый синтаксис добавляют. Проще заюзать рослин и обновлять его по необходимости. Там всего один NuGet package.
Если я сунусь в AmmyUI со своим CsConsoleFormat, про который никто не слышал, велик шанс, что меня не поймут.
Из AmmyUI вычленяется что-нибудь вроде System.Xaml/Newtonsoft.Json, чтобы можно было прикрутить к своей библиотеке пакет для поддержки синтаксиса? (Впрочем System.Xaml/Portable.Xaml здесь не самый лучший пример пример, так как требует добавления зависимости в основную библиотеку из-за атрибутов.)
I>bind есть, как и все остальные встроенные синтаксические расширения. Для bind даже есть свой синтаксис, который позволяет определять конвертер по месту.
Binding — это часть PresentationFramework, а не System.Xaml, и в других фреймворках, полагаю, он тоже свой. Так что если это работает универсально, как вы описали, то я не понял, как это сделано.
И чтобы два раза не вставать, хотелось бы понять ситуацию с Nitra. Полагаю, вы должны быть в курсе.
Если написать свой велосипедный синтаксис, просто упрощающий XAML до Ammy-подобного вида, но без разбора C# и прочих премудростей, и с трансформацией сразу в объекты, минуя промежуточный XAML (в идеале, наверное, генерировать код C# а-ля .designer.cs из WinForms...), то:
1. Что я при этом теряю? (Я так понимаю, мне не светит автодополнение кода по элементам из той же сборки. Code-behind у меня и так нет, это не проблема.)
2. Будет ли моя библиотека Alba.CsConsoleFormat.CoolSyntaxSupport заставлять конечное приложение тащить с собой какие-нибудь дополнительные зависимости?
3. Что мне придётся писать ручками? (Я так понимаю, надо будет прикручиваться к системе сборки и допиливать автодополнение кода.)
В общем, хотелось бы понять перспективность простого ограниченного решения — формата сериализации специально для моей библиотеки. У меня только элементы, одноразовые биндинги, ресурсы в корне и односторонние конвертеры, всё минималистично.
CsConsoleFormat - Форматирование текста в консоли (.NET)
Здравствуйте, Athari , Вы писали:
A>Здравствуйте, ionoy, Вы писали:
I>>Оно прибито к конкретным фреймворкам, так как нужно знать основные типы вроде DependencyObject. С другой стороны, добавить поддержку новой платформы совсем не сложно. Вот, например, как была добавлена поддержка Авалонии: https://github.com/AmmyUI/AmmyUI/blob/master/src/Core/Ammy.Platforms/AvaloniaPlatform.cs
A>Если я сунусь в AmmyUI со своим CsConsoleFormat, про который никто не слышал, велик шанс, что меня не поймут.
Ammy создан исключительно для упрощения разработки под XAML платформы. Так что да, скорее всего не поймут
A>Из AmmyUI вычленяется что-нибудь вроде System.Xaml/Newtonsoft.Json, чтобы можно было прикрутить к своей библиотеке пакет для поддержки синтаксиса? (Впрочем System.Xaml/Portable.Xaml здесь не самый лучший пример пример, так как требует добавления зависимости в основную библиотеку из-за атрибутов.)
Можно вытащить сам парсер, без AST части. Выпилить оттуда всё что тебе не нужно и прикрутить свой AST. Ну или голым парсером пользоваться.
I>>bind есть, как и все остальные встроенные синтаксические расширения. Для bind даже есть свой синтаксис, который позволяет определять конвертер по месту.
A>Binding — это часть PresentationFramework, а не System.Xaml, и в других фреймворках, полагаю, он тоже свой. Так что если это работает универсально, как вы описали, то я не понял, как это сделано.
Он везде свой, но различия небольшие.
A>Если написать свой велосипедный синтаксис, просто упрощающий XAML до Ammy-подобного вида, но без разбора C# и прочих премудростей, и с трансформацией сразу в объекты, минуя промежуточный XAML (в идеале, наверное, генерировать код C# а-ля .designer.cs из WinForms...), то:
A>1. Что я при этом теряю? (Я так понимаю, мне не светит автодополнение кода по элементам из той же сборки. Code-behind у меня и так нет, это не проблема.)
Автодополнение получить не так уж и сложно. Но придётся разбираться с Нитрой, без этого никак.
A>2. Будет ли моя библиотека Alba.CsConsoleFormat.CoolSyntaxSupport заставлять конечное приложение тащить с собой какие-нибудь дополнительные зависимости?
Конечное приложение — нет. Сам плагин — да.
A>3. Что мне придётся писать ручками? (Я так понимаю, надо будет прикручиваться к системе сборки и допиливать автодополнение кода.)
Ну да.
1) Пишешь MSBuild таск
2) Передаёшь туда свои файлы
3) Скармливаешь их Нитре
4) На основании результата работы Нитры генерируешь C# файлы
A>В общем, хотелось бы понять перспективность простого ограниченного решения — формата сериализации специально для моей библиотеки. У меня только элементы, одноразовые биндинги, ресурсы в корне и односторонние конвертеры, всё минималистично.
Зависит от того, насколько далеко ты хочешь с этим решением зайти. Если подсветка и интеллисенс не нужны, то можно обойтись XML парсером и всё сделать вручную. Там работы вроде немного должно получится. Если же хочется, чтобы всё было красиво, то придётся разобраться с Нитрой. Насколько я понимаю, плагин для студии уже работает, так что студийного кода тебе писать не придётся. Достаточно будет описать свой язык, ну и MSBuild таск, для компиляции. Хотя, если не хочется возиться, то можно генерировать результат по сохранению файла, без таска.
Здравствуйте, ionoy, Вы писали:
I>Автодополнение получить не так уж и сложно. Но придётся разбираться с Нитрой, без этого никак.
Даже чтобы выкинуть ненужное из Ammy, придётся разбираться с Nitra, так что тут без вариантов. Но задачка интересная, можно поиграться на досуге.
I>Зависит от того, насколько далеко ты хочешь с этим решением зайти. Если подсветка и интеллисенс не нужны, то можно обойтись XML парсером и всё сделать вручную. Там работы вроде немного должно получится. Если же хочется, чтобы всё было красиво, то придётся разобраться с Нитрой. Насколько я понимаю, плагин для студии уже работает, так что студийного кода тебе писать не придётся. Достаточно будет описать свой язык, ну и MSBuild таск, для компиляции. Хотя, если не хочется возиться, то можно генерировать результат по сохранению файла, без таска.
Подсветка и автодополнение кода нужны, без них в альтернативном языке смысла ноль, им пользоваться будет слишком сложно. Смотрю список Languages powered by Nitra — если есть "typer", значит, автодополнение и подсветка есть? Хотелось бы найти минимальный пример со всеми необходимыми мне фичами.
Re[8]: Хочу похвастаться! Первый язык на основе Nitra - AMMY
Здравствуйте, ionoy, Вы писали:
I>Мне кажется, это гонка которую нам никогда не выиграть. Они теперь раз в два месяца новый синтаксис добавляют. Проще заюзать рослин и обновлять его по необходимости. Там всего один NuGet package.
Ну, нам по любому совместимость нужна. Плюс нам эту поддержку в 10 раз проще делать. Так что должны угнаться.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.