Запилил библиотеку CsConsoleFormat для форматирования текста в консоли.
Имеет удобный синтаксис для раскрашивания, переноса текста, таблиц, списков и ещё кучи всего. Понимает юникодовые символы для переносов, неразрывных пробелов и прочего. Можно рисовать в консоли примитивами и DOS-овскими символами для границ. Дружит с решарпером.
Здравствуйте, Athari , Вы писали:
A>Ну давай, расскажи мне...
Погоди, сейчас балалайку достану и спляшу.
A>.... как должен выглядеть язык разметки для документов с лейаутами....
Ты больной, не? Речь, напоминаю, идёт про консоль, где даже число строк/столбцов не гарантировано. Всё, что есть — это вывод последовательности символов + возможность задать цвет/фон. ДЛЯ ЭТОЙ задачи твоя библиотека — маразм и оверхэд. Если уж так не нравятся классические ESC-последовательности (которые вообще-то стандарт), можно придумать что-то вроде "\1\2" и т.п. (для задания цвета или переноса строк). Этого хватает за глаза и не напрягает обилием тегов. Не надо думать, что если скопировал WPF, то сразу сделал что-то умное. Да, есть большая разница между XML и простым "языком разметки цвета". Ты её не видишь, потому что сам придумал фигню и сам же ею упиваешься. Ради бога, тщеславие не вчера придумано — продолжай, но не считай других за дураков и плебеев — ты сам пока что НИЧЕГО не придумал хорошего, чтобы тут хамить. Просто зарой своё поделие и не позорься, до тебя уже десяток этих либ сделано и предано забвению ввиду полной моральной устарелости.
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# на рослин, но этим надо заниматься.
Здравствуйте, Athari , Вы писали:
A>Ну давай, расскажи мне, как должен выглядеть язык разметки для документов с лейаутами как в WPF и биндингами. Я весь внимание.
Здравствуйте, Athari , Вы писали:
A>Запилил библиотеку CsConsoleFormat для форматирования текста в консоли.
A>Имеет удобный синтаксис для раскрашивания, переноса текста, таблиц, списков и ещё кучи всего. Понимает юникодовые символы для переносов, неразрывных пробелов и прочего. Можно рисовать в консоли примитивами и DOS-овскими символами для границ. Дружит с решарпером.
Как будет выглядеть тетрис с использованием этой библиотеки?
Re: CsConsoleFormat - Форматирование текста в консоли (.NET)
Здравствуйте, Athari , Вы писали:
A>Имеет удобный синтаксис ...
A><Document> A> <Span Color="Red">Hello</Span> A> <Br/> A> <Span Color="Yellow">world!</Span> A></Document>
Не говори больше слова "удобный", вряд ли ты понимаешь его значение!
Re: CsConsoleFormat - Форматирование текста в консоли (.NET)
Здравствуйте, Athari , Вы писали:
A>Запилил библиотеку CsConsoleFormat для форматирования текста в консоли.
A>Имеет удобный синтаксис для раскрашивания, переноса текста,
Ну и зачем это?
Re[2]: CsConsoleFormat - Форматирование текста в консоли (.NET)
Здравствуйте, kov_serg, Вы писали:
_>Как будет выглядеть тетрис с использованием этой библиотеки?
Никак. Библиотека только для одноразового вывода текста.
Забавно, что вопрос про интерактивные консольные приложения возникает первым уже не в первый раз, а библиотека, которая реально реализует интерактив с окошками и кнопочками в придачу (ConsoleFramework) валяется никому не нужная. Наверное, логично интересоваться, что такого прикольного можно сделать в консоли, но эта библиотека предназначена для более приземлённых целей — в первую очередь это раскрашивание вывода консольных утилит, которые часто используются в консоли в интерактивном режиме, особенно для вывода справки по командам.
Здравствуйте, Kolesiki, Вы писали:
A>>Имеет удобный синтаксис ...
A>><Document> A>> <Span Color="Red">Hello</Span> A>> <Br/> A>> <Span Color="Yellow">world!</Span> A>></Document>
K> Не говори больше слова "удобный", вряд ли ты понимаешь его значение!
Ну давай, расскажи мне, как должен выглядеть язык разметки для документов с лейаутами как в WPF и биндингами. Я весь внимание. Я реализовал всё через XAML, который в простейшем случае превращается в HTML 3.2. Если кто не любит XML, то есть альтернативный DSL прямо в C#, который повторяет родной дотнетовый LINQ to XML (System.Xml.Linq.XElement) со всеми схлопываниеями IEnumerable и прочим. В дополнение есть методы-расширения для раскараски строк а-ля npm.js/colors.
Если есть конкретные предложения по синтаксису, а не претензии уровня "HTML — фу" и "XAML — фу", я весь внимание.
Re[3]: CsConsoleFormat - Форматирование текста в консоли (.NET)
Почему следующий? Библиотека уже умеет выводить изображения в консоль. Правда субсимвольным сглаживанием похвастаться не могу, но над этим ведётся работа.
Поддержку графики, RTF и XPS я сделал ради прикола, "чтобы было" (да и кода это много не потребовало), но если кому-то надо...
Ну вон, на Stack Overflow у вопроса про картинки в консоли 20 000 просмотров, 75 плюсов, 7 ответов и 3 баунти (конкурса в терминах RuSO). Может, кому-то действительно надо?
Некоторые консольные приложения рисуют FIGlet в консоли при выводе справки. Не перевелись ещё ценители искусства.
Re[3]: CsConsoleFormat - Форматирование текста в консоли (.N
Здравствуйте, Athari , Вы писали:
A>Никак. Библиотека только для одноразового вывода текста.
A>Забавно, что вопрос про интерактивные консольные приложения возникает первым уже не в первый раз
Лучшая интерактивня консоль у сисек https://www.youtube.com/watch?v=-zvihHxrfzM&t=202
И цвет там не главное
Re[4]: CsConsoleFormat - Форматирование текста в консоли (.N
Неправильно. В циске сделали, чтобы консоль выглядела как говно, чтобы те, кто заглядывает из-за спины сисадмина, не подумали, что тот занимается чем-то весёлым. Сисадминам сложно, им нужно репутацию поддерживать, безделье оправдывать.
У программистов же такой проблемы нет. Раскрашенный код — это норма. Поэтому и в прочих инструментах не нужно бояться сделать красиво и удобно.
Скажем, вы используете подсветку синтаксиса при редактировании кода? Или пользуетесь встроенным в винду Блокнотом для редактирования, потому что "цвет — это не главное"? И цисковый интерфейс Блокнот лучше всего повторяет, а не всякие модные Sublime Text или — упаси боже! — богомерзкие IDE типа Visual Studio с бесконечными подсказками и рефакторингами. Ещё и противная подсветка синтаксиса не отключается, приходится менять цвет каждого элемента на чёрный в настройках... И почему там не Courier New по умолчанию, как в циске?! Изверги, заставляют смотреть на Consolas!
Re[5]: CsConsoleFormat - Форматирование текста в консоли (.N
A>Неправильно. В циске сделали, чтобы консоль выглядела как говно, чтобы те, кто заглядывает из-за спины сисадмина, не подумали, что тот занимается чем-то весёлым. Сисадминам сложно, им нужно репутацию поддерживать, безделье оправдывать.
Вы не правы, она очень продуманно сделана.
A>У программистов же такой проблемы нет. Раскрашенный код — это норма. Поэтому и в прочих инструментах не нужно бояться сделать красиво и удобно.
Есть же графика, зачем издеваться над консолью. Она позволяет цепляться к устройству по двум проводам (RX,TX) и взаимодействовать с ним.
Красиво и удобно разные задачи более того с точек зрения пользователя и программиста они могут оцениваться по разному.
A>Скажем, вы используете подсветку синтаксиса при редактировании кода? Или пользуетесь встроенным в винду Блокнотом для редактирования, потому что "цвет — это не главное"? И цисковый интерфейс Блокнот лучше всего повторяет, а не всякие модные Sublime Text или — упаси боже! — богомерзкие IDE типа Visual Studio с бесконечными подсказками и рефакторингами. Ещё и противная подсветка синтаксиса не отключается, приходится менять цвет каждого элемента на чёрный в настройках... И почему там не Courier New по умолчанию, как в циске?! Изверги, заставляют смотреть на Consolas!
Причем тут шрифт. Циска по ком порту цепляется или по сети и какой шрифт зависет от вас DroidSansMono, Courier или что еще.
И раскраска текста тут как собаке пятая нога. Ваши цвета в консоле да еще в таком избыточном варианте мало кому нужны.
Для ценителей прекрасного есть 10бит цвет, 5К мониторы и хорошие видюхи, а вы им консоль.
Здравствуйте, kov_serg, Вы писали:
_>Вы не правы, она очень продуманно сделана.
И что при демонстрации работы приходится дёргать скроллбар из-за того, что страница у окошка и страница у реальной консоли разного размера — это тоже продумано? И что шрифт по умолчанию используется не из стандартных настроек (это Windows 7, там есть Consolas), а Courier New, который морально устарел лет 15 назад — это тоже продумано?
Меня не интересует, что, как и к чему подключается. Там всё может быть хоть трижды круто. Я вижу, что GUI в видео — отстой. Оцениваю я именно это.
_>Есть же графика, зачем издеваться над консолью. Она позволяет цепляться к устройству по двум проводам (RX,TX) и взаимодействовать с ним.
То есть Git в консоли вы никогда не пользуетесь? Всегда жмёте кнопочки в каком-нибудь GUI? Вы командной строкой пользуетесь только через обёртки вроде этого цискогуя, как минимум?
_>ps: Кстати если надо что-то быстренько поправить вот это блокнот https://xhmikosr.github.io/notepad2-mod лучше всяких монструозных IDE
Зачем этим огрызком от программы пользоваться? Есть же Notepad++.
Здравствуйте, Athari , Вы писали:
A>И что при демонстрации работы приходится дёргать скроллбар из-за того, что страница у окошка и страница у реальной консоли разного размера — это тоже продумано?
Жаль что вы не видите сути проблемы.
A>И что шрифт по умолчанию используется не из стандартных настроек (это Windows 7, там есть Consolas), а Courier New, который морально устарел лет 15 назад — это тоже продумано?
А арабские цифры не устарели?
A>Меня не интересует, что, как и к чему подключается. Там всё может быть хоть трижды круто. Я вижу, что GUI в видео — отстой. Оцениваю я именно это.
Это не GUI это CLI. Если вам надо сделать красивцю форматированную выдачу, то обычный html подходит почти во всех случаях. И любой шаблонизатор с этой проблемой справляется более чем хорошо.
_>>Есть же графика, зачем издеваться над консолью. Она позволяет цепляться к устройству по двум проводам (RX,TX) и взаимодействовать с ним. A>То есть Git в консоли вы никогда не пользуетесь? Всегда жмёте кнопочки в каком-нибудь GUI? Вы командной строкой пользуетесь только через обёртки вроде этого цискогуя, как минимум?
bash
_>>ps: Кстати если надо что-то быстренько поправить вот это блокнот https://xhmikosr.github.io/notepad2-mod лучше всяких монструозных IDE A>Зачем этим огрызком от программы пользоваться? Есть же Notepad++.
Не надо гнать волну, этот блокнот уделывает notepad++
Re[8]: CsConsoleFormat - Форматирование текста в консоли (.N
Здравствуйте, kov_serg, Вы писали:
_>Жаль что вы не видите сути проблемы.
Вы же её не объясняете. Ну, кроме "мне не надо, значит, никому не надо".
_>А арабские цифры не устарели?
Арабские — нет. Римские — да.
Я не случайно сказал, что Courier New устарел 15 лет назад, хотя шрифту за 60 лет. Courier New устарел не из-за времени своего создания, а из-за появления в 2001-м году Windows XP с технологией субпиксельного сглаживания ClearType и повсеместного перехода с CRT на LCD. Courier New был оптимизирован для старых технологий. (Если вы пользуетесь CRT и отключаете ClearType — да, в использовании Courier New есть смысл, так как в этом случае он выглядит отлично. Также, возможно, Courier New выглядит не так ужасно в 300+ DPI в крупном кегле, но у меня нет возможности оценить.)
_>Это не GUI это CLI. Если вам надо сделать красивцю форматированную выдачу, то обычный html подходит почти во всех случаях. И любой шаблонизатор с этой проблемой справляется более чем хорошо.
А если у вас нет GUI и вы пользуетесь консолью? Вот сидите в вашем любимом баше и вбиваете команды. Или пользуетесь той гуйной обёрткой над консолью от циски.
Нет у вас HTML и GUI ни там, ни там. А цвет — есть. (Ну, в баше есть; та консольная приблуда вряд ли умеет цвет, а роутер вряд ли умеет .NET Core.)
К слову, консоль вряд ли устареет, а вот баш уже показывает возраст. Пайплайн, построенный на бессистемном голом тексте и костылях с подпорками вокруг этой концепции, морально устаревает, хотя ещё и будет довольно долго применяться из-за царского наследия. Будущее за PowerShell.
_>Не надо гнать волну, этот блокнот уделывает notepad++
Назовите хоть один пункт, по которому Notepad2 кого-то уделывает (кроме времени с последнего релиза ).
[Edit] А, вы ссылку на mod кидали. Он даже по времени с последнего релиза никого не уделает. Впрочем, он такой же заброшенный, только версии библиотек обновляются, судя по коммитам.
A>Запилил библиотеку CsConsoleFormat для форматирования текста в консоли.
Прикольно. У меня есть несколько консольных фиговин которым никогда не понадобится тяжеловесный GUI, а возможности стандартной консоли они давно переросли. Попробую скрестить с библиотекой, спасибо.
Re[2]: CsConsoleFormat - Форматирование текста в консоли (.NET)
Здравствуйте, hi_octane, Вы писали:
_>Прикольно. У меня есть несколько консольных фиговин которым никогда не понадобится тяжеловесный GUI, а возможности стандартной консоли они давно переросли. Попробую скрестить с библиотекой, спасибо.
Фиговины опенсорсные? Если да, то как скрестите, киньте ссылку — мне будет полезно посмотреть на реальное использование.
Re[9]: CsConsoleFormat - Форматирование текста в консоли (.N
Здравствуйте, Athari , Вы писали:
_>>Жаль что вы не видите сути проблемы. A>Вы же её не объясняете. Ну, кроме "мне не надо, значит, никому не надо".
Интерфейс подразумевает взаимодействие. В цисок с эти всё нормально. Все задачи локализованы и есть справка. Всё выполнено единообразно и позволяет автоматизацию любых действий.
_>>А арабские цифры не устарели? A>Арабские — нет. Римские — да.
Рамскими никто не пользуется? XXL размер — не
A>Я не случайно сказал, что Courier New устарел 15 лет назад, хотя шрифту за 60 лет. Courier New устарел не из-за времени своего создания, а из-за появления в 2001-м году Windows XP с технологией субпиксельного сглаживания ClearType и повсеместного перехода с CRT на LCD. Courier New был оптимизирован для старых технологий. (Если вы пользуетесь CRT и отключаете ClearType — да, в использовании Courier New есть смысл, так как в этом случае он выглядит отлично. Также, возможно, Courier New выглядит не так ужасно в 300+ DPI в крупном кегле, но у меня нет возможности оценить.)
Это проблемы конкретной реализации, а не шрифта.
A>А если у вас нет GUI и вы пользуетесь консолью? Вот сидите в вашем любимом баше и вбиваете команды. Или пользуетесь той гуйной обёрткой над консолью от циски. A>Нет у вас HTML и GUI ни там, ни там. А цвет — есть. (Ну, в баше есть; та консольная приблуда вряд ли умеет цвет, а роутер вряд ли умеет .NET Core.)
Как ни странно но html там есть
A>К слову, консоль вряд ли устареет, а вот баш уже показывает возраст. Пайплайн, построенный на бессистемном голом тексте и костылях с подпорками вокруг этой концепции, морально устаревает, хотя ещё и будет довольно долго применяться из-за царского наследия. Будущее за PowerShell.
Ну ну. Powershell это чисто виндовая поделка после cmd и cscript это конечно же смотриться как великое достижение.
A>Назовите хоть один пункт, по которому Notepad2 кого-то уделывает (кроме времени с последнего релиза ).
По функционалу.
Re[10]: CsConsoleFormat - Форматирование текста в консоли (.N
Здравствуйте, kov_serg, Вы писали:
_>Рамскими никто не пользуется? XXL размер — не
Так и запишем: римские цифры вы не знаете. Размеры никакого отношения к римским цифрам не имеют. Никаких "S", "XS" и "XXXL" в римских цифрах нет, это сокращения от "extra-small" и "extra-extra-extra-large".
Римскими цифрами пользуются, конечно. В основном для понта и пафоса в частных случаях. Причём если "XX век" средний человек поймёт, то если вы будете использовать "MDCCCXCVIII" при записи даты, то на вас посмотрят как на психа.
_>Это проблемы конкретной реализации, а не шрифта.
Алгоритмы выравнивания по пиксельной сетке хранятся в самом шрифте, поэтому это проблемы именно что шрифта. (Что яббл игнорирует алгоритмы и рисует мыло — это проблемы яббла.)
_>Как ни странно но html там есть _>[url=https://i.imgur.com/3jE5S6C.png]Image: 3jE5S6C.png[/url]
Вы будете по сути спорить или писать однострочные отписки не к месту?
Вот скажите, когда вы хотите узнать, какие аргументы есть у команды, вы пишете "foo -h" или "lynx http://google.com/search?q=linux+foo+manual"?
_>Ну ну. Powershell это чисто виндовая поделка после cmd и cscript это конечно же смотриться как великое достижение.
То есть по сути возразить нечего.
A>>Назовите хоть один пункт, по которому Notepad2 кого-то уделывает (кроме времени с последнего релиза ). _>По функционалу.
То есть ни одного пункта назвать не можете.
Re[11]: CsConsoleFormat - Форматирование текста в консоли (.N
Здравствуйте, Athari , Вы писали:
A>Вот скажите, когда вы хотите узнать, какие аргументы есть у команды, вы пишете "foo -h" или "lynx http://google.com/search?q=linux+foo+manual"? https://www.gnu.org/software/libc/manual/html_node/Argp.html
foo --help
man foo
_>>Ну ну. Powershell это чисто виндовая поделка после cmd и cscript это конечно же смотриться как великое достижение. A>То есть по сути возразить нечего.
Чему возражать. Cmd ужасен, VBScript тоже недо язык, jscript лютый треш.
Вот что мешало микрософту сделать что то подобное из каробки.
Вместо этого они постоянно выкатывают новые вундер вафли не решив старых проблем.
Внешний вид консоли, копирование текста и поиск — нафига. Поиск в mmc это вообще за гранью.
_>>По функционалу. A>То есть ни одного пункта назвать не можете.
Скорость работы и запуска, закрытие по escape
Подсведка синтаксиса
Поддержка кодировок
Сворачикание блоков кода
Работа со строками, отступы списки, форматирование, регулярки и т.п.
Ничего лишнего
Когда надо больше sublime
Re[3]: CsConsoleFormat - Форматирование текста в консоли (.NET)
A>Фиговины опенсорсные? Если да, то как скрестите, киньте ссылку — мне будет полезно посмотреть на реальное использование.
Увы, пока совершенно не планируются в опен-сорс
Re[4]: CsConsoleFormat - Форматирование текста в консоли (.NET)
Здравствуйте, Kolesiki, Вы писали:
K> Ты больной, не? Речь, напоминаю, идёт про консоль, где даже число строк/столбцов не гарантировано.
На экране ширина вообще никогда не гарантирована, но это никому не мешает рисовать окошки и таблицы. Странно, не правда ли?
Библиотека помогает в том числе не беспокоиться о ширине.
K> Всё, что есть — это вывод последовательности символов + возможность задать цвет/фон.
Некоторые терминалы на *никсах поддерживают больше опций.
K> ДЛЯ ЭТОЙ задачи твоя библиотека — маразм и оверхэд.
Окей. Покажи мне код, который отформатирует вывод вот так:
А потом я покажу свой код, и мы сравним, какой более читаемый.
K> Если уж так не нравятся классические ESC-последовательности (которые вообще-то стандарт),
Которые вообще-то не поддерживаются на большинстве версий Windows, а в разных терминалах имеют разный смысл.
K> можно придумать что-то вроде "\1\2" и т.п. (для задания цвета или переноса строк). Этого хватает за глаза и не напрягает обилием тегов.
Окей. А теперь нарисуй мне банальную табличку cо справкой по аргументам вроде этой, используя свои "теги" (я про верхнюю табличку, табличка снизу для понта):
K> Не надо думать, что если скопировал WPF, то сразу сделал что-то умное. Да, есть большая разница между XML и простым "языком разметки цвета". Ты её не видишь, потому что сам придумал фигню и сам же ею упиваешься.
У тебя есть конкретные предложения читаемого языка, желательно с поддержкой в IDE? Я же тебя уже спрашивал, ты вопрос проигнорировал, просто повторив изначальное заявление. Делаю вывод, что предложить ничего ты не можешь.
В принципе можно прикрутить поверх что-нибудь HAML-образное, но поддержка в IDE помножается на ноль. К тому же эта функциональность совершенно спокойно реализуется поверх библиотеки, её саму не нужно менять.
K> Ради бога, тщеславие не вчера придумано — продолжай, но не считай других за дураков и плебеев — ты сам пока что НИЧЕГО не придумал хорошего, чтобы тут хамить. Просто зарой своё поделие и не позорься, до тебя уже десяток этих либ сделано и предано забвению ввиду полной моральной устарелости.
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[6]: Хочу похвастаться! Первый язык на основе Nitra - AMMY
Здравствуйте, 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 раз проще делать. Так что должны угнаться.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.