You must use square brackets ([]) and not the C# angle brackets (<>) to delimit generic parameters.
Патч спорный — проблема то не в Nemerle, наверное не стоит его добавлять, но пусть хотя бы описание проблемы с решением на форуме будет.
Index: ncc/codedom/NemerleCodeGenerator.n
===================================================================
--- ncc/codedom/NemerleCodeGenerator.n (revision 9845)
+++ ncc/codedom/NemerleCodeGenerator.n (working copy)
@@ -1403,11 +1403,21 @@
else
s;
}
+
+ def fixBrackets (s : string)
+ {
+ // BaseType could have a record like this: "namespaces.SomeType<SomeOtherType>" without explicit TypeArguments
+ // We must replace <> brackets with [], used by Nemerle
+ // Side effect: I suppose that type names with <> brackets could be broken,
+ // but such names usually introduced by obfuscators so I think it will be a minor problem :)
+ // Other way, I don't know how to fix it better, cause we have only a type name string
+ s.Replace('<', '[').Replace('>', ']');
+ }
def init = trimApostroph(r.BaseType.Trim());
if (r.TypeArguments.Count == 0)
- init;
+ fixBrackets(init);
else
{
def typeArgs = array(r.TypeArguments.Count);
Здравствуйте, Mace Windu, Вы писали:
MW>Патч спорный — проблема то не в Nemerle, наверное не стоит его добавлять, но пусть хотя бы описание проблемы с решением на форуме будет.
Если патч решает проблему и не создает других, то почему бы и не накотить его?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VD>Если патч решает проблему и не создает других, то почему бы и не накотить его?
1. Проблема эта присутствует только в ASP.NET MVC 3.
2. Таким же макаром в MS сделали генератор кода для views на VB.NET, т.е. патч нужно допиливать для поддержки VB-шного синтаксиса generics.
Моё мнение — не стоит дергаться, врядли кому-то кроме меня может понадобиться такое. Лучше проголосуйте за баг
Здравствуйте, Mace Windu, Вы писали:
MW>1. Проблема эта присутствует только в ASP.NET MVC 3. MW>2. Таким же макаром в MS сделали генератор кода для views на VB.NET, т.е. патч нужно допиливать для поддержки VB-шного синтаксиса generics.
ASP.NET MVC 3 тоже кому-то может быть нужен. Если патч ничего не ломает, то в чем проблема то?
MW>Моё мнение — не стоит дергаться, врядли кому-то кроме меня может понадобиться такое. Лучше проголосуйте за баг
Я то проголосовал. Вот только получилось ровно два голоса.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Mace Windu, Вы писали:
MW>>1. Проблема эта присутствует только в ASP.NET MVC 3. MW>>2. Таким же макаром в MS сделали генератор кода для views на VB.NET, т.е. патч нужно допиливать для поддержки VB-шного синтаксиса generics.
VD>ASP.NET MVC 3 тоже кому-то может быть нужен. Если патч ничего не ломает, то в чем проблема то?
MW>>Моё мнение — не стоит дергаться, врядли кому-то кроме меня может понадобиться такое. Лучше проголосуйте за баг
VD>Я то проголосовал. Вот только получилось ровно два голоса.
Мне бы ASP.NET MVC 3 совершенно не помешал бы. ПМ там планируется?
В общем как будет выглядеть поддержка ASP.NET MVC 3 для N?
Здравствуйте, alvas, Вы писали:
A>Мне бы ASP.NET MVC 3 совершенно не помешал бы. ПМ там планируется?
Там проблема сейчас не в рэйзоре, и даже не в коддоме а более насущная. Компилятор nemerle не умеет дружить сразу с несколькими рантаймами. А сборки MVC3, похоже, имеют где-то ссылки на сборки рантайма 2.0. Вероятно проблема будет решена после того, как Хардкейс закончит перевод компилятора на CCI.
A>В общем как будет выглядеть поддержка ASP.NET MVC 3 для N?
Здравствуйте, Ziaw, Вы писали:
Z>Здравствуйте, alvas, Вы писали:
A>>Мне бы ASP.NET MVC 3 совершенно не помешал бы. ПМ там планируется?
Z>Там проблема сейчас не в рэйзоре, и даже не в коддоме а более насущная. Компилятор nemerle не умеет дружить сразу с несколькими рантаймами. А сборки MVC3, похоже, имеют где-то ссылки на сборки рантайма 2.0. Вероятно проблема будет решена после того, как Хардкейс закончит перевод компилятора на CCI.
A>>В общем как будет выглядеть поддержка ASP.NET MVC 3 для N?
Z>Например так: http://code.google.com/p/nemerleonrails/wiki/Progress
Z>Как только насущная проблема проблема будет решена, я займусь рэйзором.
Там уж сильно наворочено. Аналог Razor в N это xml макрос. Я не прав?
Здравствуйте, alvas, Вы писали:
A>Мне бы ASP.NET MVC 3 совершенно не помешал бы. ПМ там планируется? A>В общем как будет выглядеть поддержка ASP.NET MVC 3 для N?
Думаю что так же как сейчас выглядит ASP.NET MVC 2.
Если хочешь чего-то радикально более крутого, то присоединяйся к группе разработчиков нашего реактивного фрймворка.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, seregaa, Вы писали:
S>Сохраню ссылку здесь — http://www.infoq.com/news/2011/01/Razor-Extensions S>Это поверхностное изложение шагов, необходимых для добавления поддержки нового языка в Razor.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, alvas, Вы писали:
A>>Мне бы ASP.NET MVC 3 совершенно не помешал бы. ПМ там планируется? A>>В общем как будет выглядеть поддержка ASP.NET MVC 3 для N?
VD>Думаю что так же как сейчас выглядит ASP.NET MVC 2.
Такую поддержку для ASP.NET MVC 3 как сделана для ASP.NET MVC 2 и достаточно. Можно будет сразу же начать писать и на практике решить каких бантиков там не хватает.
VD>Если хочешь чего-то радикально более крутого, то присоединяйся к группе разработчиков нашего реактивного фрймворка.
Пока хочу минимальной поддержки. По поводу реактивного фреймворка я пока вообще не врубаюсь. Слышал "дзвин, та нэ знаю дэ вин".
С кем можно пообщаться? Неплохо было бы по скайпу
Здравствуйте, Ziaw, Вы писали:
Z>Здравствуйте, alvas, Вы писали:
A>>Там уж сильно наворочено.
Z>P.S. Все что там есть можно использовать по отдельности. Например spark view engine для немерле.
Здравствуйте, alvas, Вы писали:
Z>>P.S. Все что там есть можно использовать по отдельности. Например spark view engine для немерле.
A>А почему спарк?
Есть другие предложения? На тот момент было понятно, что до разора еще очень далеко. Других мощных движков было мало. Я выбирал между spark и nhaml. Спарк показался более простым для понимания.
Здравствуйте, seregaa, Вы писали:
Z>>А тут пример: Z>>https://github.com/dahlbyk/FSRazor
S>Здорово! А достаточно ли этого для поддержки дебага, комплита и подсветки?
У меня большие сомнения. Но я был бы рад приятно удивиться.
Здравствуйте, Ziaw, Вы писали:
Z>Здравствуйте, alvas, Вы писали:
Z>>>P.S. Все что там есть можно использовать по отдельности. Например spark view engine для немерле.
A>>А почему спарк?
Z>Есть другие предложения? На тот момент было понятно, что до разора еще очень далеко. Других мощных движков было мало. Я выбирал между spark и nhaml. Спарк показался более простым для понимания.
Как по мне разор тот же aspx только менее многословный. Плюс обоих в разделении кода и разметки. Я за разор, да и популярней он.
Другая крайность (забыл как называется) написанный на f#. Там полностью все код. Типа
[html
[body
[div]Hello, F#
]
]
Здравствуйте, alvas, Вы писали:
Z>>Есть другие предложения? На тот момент было понятно, что до разора еще очень далеко. Других мощных движков было мало. Я выбирал между spark и nhaml. Спарк показался более простым для понимания.
A>Как по мне разор тот же aspx только менее многословный. Плюс обоих в разделении кода и разметки. Я за разор, да и популярней он.
Не тот же. Разор при компиляции строит дерево, aspx текстовый шаблонизатор.
Здравствуйте, Ziaw, Вы писали:
Z>Здравствуйте, alvas, Вы писали:
Z>>>Есть другие предложения? На тот момент было понятно, что до разора еще очень далеко. Других мощных движков было мало. Я выбирал между spark и nhaml. Спарк показался более простым для понимания.
A>>Как по мне разор тот же aspx только менее многословный. Плюс обоих в разделении кода и разметки. Я за разор, да и популярней он.
Z>Не тот же. Разор при компиляции строит дерево, aspx текстовый шаблонизатор.
Понял. Я имел в виду в использовании. Для энд юзера так сказать.
Здравствуйте, alvas, Вы писали:
Z>>Не тот же. Разор при компиляции строит дерево, aspx текстовый шаблонизатор.
A>Понял. Я имел в виду в использовании. Для энд юзера так сказать.
Для энд юзера все мейнстрим движки для вьюх одинаковы. ASP.NET MVC, RoR, Django, Struts. Разница в сахаре.
Здравствуйте, Ziaw, Вы писали:
Z>Здравствуйте, alvas, Вы писали:
Z>>>Не тот же. Разор при компиляции строит дерево, aspx текстовый шаблонизатор.
A>>Понял. Я имел в виду в использовании. Для энд юзера так сказать.
Z>Для энд юзера все мейнстрим движки для вьюх одинаковы. ASP.NET MVC, RoR, Django, Struts. Разница в сахаре.
Так и думал что кто-то прикопается к последнему предложению
Я в курсе что на выходе html, но свои доводы за бритву я высказал.
Есть сложности с реализацией бритвы по сравнению с..?
Здравствуйте, alvas, Вы писали:
A>Я в курсе что на выходе html, но свои доводы за бритву я высказал.
Мне тоже рэйзор нравится.
A>Есть сложности с реализацией бритвы по сравнению с..?
Пока сложности вообще с запуском MVC3. Они решаемые.
Попробуй сбилдить и запустить https://github.com/dahlbyk/FSRazor если все работает и есть поддержка студии — примерно столько кода и надо (там его очень мало).
Если нет — пиши сюда фичи которых не хватает, будем оценивать сложность.
Здравствуйте, alvas, Вы писали:
A>Пока хочу минимальной поддержки. По поводу реактивного фреймворка я пока вообще не врубаюсь. Слышал "дзвин, та нэ знаю дэ вин".
Скомпилируй и запусти этот проект. Это прототип. Кроме того я его показывал на ALT.NET-е.
A>С кем можно пообщаться? Неплохо было бы по скайпу
Со мной.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Ziaw, Вы писали:
Z>Здравствуйте, alvas, Вы писали:
A>>Я в курсе что на выходе html, но свои доводы за бритву я высказал.
Z>Мне тоже рэйзор нравится.
A>>Есть сложности с реализацией бритвы по сравнению с..?
Z>Пока сложности вообще с запуском MVC3. Они решаемые.
Z>Попробуй сбилдить и запустить https://github.com/dahlbyk/FSRazor если все работает и есть поддержка студии — примерно столько кода и надо (там его очень мало).
Z>Если нет — пиши сюда фичи которых не хватает, будем оценивать сложность.
Глянул. Уложились в 10 кб кода на f#.
К сожалению сбилдить и запустить не удалось, так как нет VS 2010
S>Здорово! А достаточно ли этого для поддержки дебага, комплита и подсветки?
Привет, у тебя помнится как-то застопорилась работа по одному из направлений интеграции из-за окончания триала рефлектора. Уже решил вопрос?
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, alvas, Вы писали:
A>>Там уж сильно наворочено. Аналог Razor в N это xml макрос. Я не прав?
VD>Он лучше, но Ziaw этого не понимает .
VD>Если серьезно, то он немного другой. И не все принимают его идеологию.
Это понятно — иначе он бы назылался razor, а не xml
Я посмотрел по ссылке, что ты мне дал http://nemerle.org/wiki/XML_literals
там поддерживаются только 3 конструкции $foreach, $when и $unless. Я прав?
Здравствуйте, alvas, Вы писали:
A>Я посмотрел по ссылке, что ты мне дал http://nemerle.org/wiki/XML_literals A>там поддерживаются только 3 конструкции $foreach, $when и $unless. Я прав?
Да. И сделано это намерено. Не должно быть программирования в шаблонах. ХМЛ/ХТМЛ надо формировать рекурсивно. Для эффективного применения ХМЛ-литералов нужно писать локальные функции в которых использовать ХМЛ-литералы как средство формированиях ХМЛ-я.
Если надо сгенерировать что-то более сложно чем позволяют эти понструкции, то надо просто вынести генерацию этого сложного дела в отдельную функцию, а уже ее вызвать из другого шаблона.
Рекурсия и декомпозиция — ключ к успеху. Именно этим ХМЛ-литералы лучше любого Разора.
Плюс в них не надо заниматься обертыванием данных. Ты пренципиально не сможешь случайно засунуть в ХТМЛ какой-то фрагмент в виде текста.
На выходе у ХМЛ-литералов получается XElement. Его можно анализировать и изменять. Это тоже очень полезно. Скажем если тебе нужно вставлять в шаблон некие элементы, то можно легко написать простую функцию заменяющую элементы по имени.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
Z>>Разор при компиляции строит дерево,
VD>Во как? Ты так меня ругал за это...
Ты, как обычно, меня не слушал. Я тебя ругал за рантайм, ибо лишние тормоза. И говорил, что для контроля при компиляции это не требуется и можно докрутить даже спарк. Разор генерит текст либо в поток либо в буфер, весь контроль у него происходит на этапе компиляции.
VD>А пруфлинк есть?
Пруфа нет к сожалению, но ты можешь попробовать сделать на нем невалидный xml. Это возможно только если ты вставишь специальную не экранируемую строку в вывод.
Здравствуйте, Ziaw, Вы писали:
Z>Ты, как обычно, меня не слушал. Я тебя ругал за рантайм, ибо лишние тормоза. И говорил, что для контроля при компиляции это не требуется и можно докрутить даже спарк. Разор генерит текст либо в поток либо в буфер, весь контроль у него происходит на этапе компиляции.
Нет там никаких тормозов. Разницу в микроскоп не заметишь. А обеспечить полную защиту без рантаяма очень сложно, так как данные приходят динамически.
VD>>А пруфлинк есть?
Z>Пруфа нет к сожалению, но ты можешь попробовать сделать на нем невалидный xml. Это возможно только если ты вставишь специальную не экранируемую строку в вывод.
Ну, так строкой то значит сломать можно? Попробуй сломать строкой ХМЛ-литералы.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.