Workaround для NemerleCodeGenerator
От: Mace Windu  
Дата: 20.05.11 11:03
Оценка:
Столкнулся со следующей ситуацией с CodeTypeReference:
ctr.BaseType = "SomeType<OtherType>" // неправильный формат!
ctr.TypeArguments.Count = 0

Соответственно генератор кода на Nemerle в таком виде тип и записывал в исходник.

Проблема в том, что бравые ребята из мелкософта вместо того, чтобы почитать документацию на CodeTypeReference, достали шашку и создали такой код:
public class MvcCSharpRazorCodeGenerator : CSharpRazorCodeGenerator
{
...
    private void SetBaseType(string modelTypeName)
    {
            CodeTypeReference reference = new CodeTypeReference(base.Host.DefaultBaseClass + "<" + modelTypeName + ">");
            base.GeneratedClass.BaseTypes.Clear();
            base.GeneratedClass.BaseTypes.Add(reference);
    }
...
}

А между тем в MSDN белым по желтому написано:

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);
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re: Workaround для NemerleCodeGenerator
От: Mace Windu  
Дата: 20.05.11 11:11
Оценка:
Здравствуйте, Mace Windu, Вы писали:

Forget it.
private void VisitModelSpan(ModelSpan span)
{
    string modelTypeName = span.ModelTypeName;
    CodeTypeReference reference = new CodeTypeReference(base.Host.DefaultBaseClass + "(Of " + modelTypeName + ")");
    base.GeneratedClass.BaseTypes.Clear();
    base.GeneratedClass.BaseTypes.Add(reference);
    if (base.DesignTimeMode)
    {
        this.WriteHelperVariable(span.Content, "__modelHelper");
    }
}

буду багрепорт им строчить, на всех индусов патчей не наберешься
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re: Workaround для NemerleCodeGenerator
От: seregaa Ниоткуда http://blogtani.ru
Дата: 20.05.11 11:42
Оценка:
Здравствуйте, Mace Windu, Вы писали:

MW>public class MvcCSharpRazorCodeGenerator : CSharpRazorCodeGenerator


Делаешь поддержку Razor-а для Nemerle?
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[2]: Workaround для NemerleCodeGenerator
От: Mace Windu  
Дата: 20.05.11 11:58
Оценка:
S>Делаешь поддержку Razor-а для Nemerle?

Нет.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re: Workaround для NemerleCodeGenerator
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.05.11 22:07
Оценка:
Здравствуйте, Mace Windu, Вы писали:

MW>Патч спорный — проблема то не в Nemerle, наверное не стоит его добавлять, но пусть хотя бы описание проблемы с решением на форуме будет.


Если патч решает проблему и не создает других, то почему бы и не накотить его?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Workaround для NemerleCodeGenerator
От: Ziaw Россия  
Дата: 23.05.11 06:13
Оценка:
Здравствуйте, seregaa, Вы писали:

MW>>public class MvcCSharpRazorCodeGenerator : CSharpRazorCodeGenerator


S>Делаешь поддержку Razor-а для Nemerle?


Поддержка там не шибко сложная. Сложнее решить вопросы со студией .
Re[2]: Workaround для NemerleCodeGenerator
От: Mace Windu  
Дата: 23.05.11 12:25
Оценка:
VD>Если патч решает проблему и не создает других, то почему бы и не накотить его?

1. Проблема эта присутствует только в ASP.NET MVC 3.
2. Таким же макаром в MS сделали генератор кода для views на VB.NET, т.е. патч нужно допиливать для поддержки VB-шного синтаксиса generics.

Моё мнение — не стоит дергаться, врядли кому-то кроме меня может понадобиться такое. Лучше проголосуйте за баг
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[3]: Workaround для NemerleCodeGenerator
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.05.11 14:54
Оценка:
Здравствуйте, Mace Windu, Вы писали:

MW>Моё мнение — не стоит дергаться, врядли кому-то кроме меня может понадобиться такое. Лучше проголосуйте за баг


Ты лучше им патч отправь, который бы эту проблему устранял.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Workaround для NemerleCodeGenerator
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.05.11 22:20
Оценка:
Здравствуйте, Mace Windu, Вы писали:

MW>1. Проблема эта присутствует только в ASP.NET MVC 3.

MW>2. Таким же макаром в MS сделали генератор кода для views на VB.NET, т.е. патч нужно допиливать для поддержки VB-шного синтаксиса generics.

ASP.NET MVC 3 тоже кому-то может быть нужен. Если патч ничего не ломает, то в чем проблема то?

MW>Моё мнение — не стоит дергаться, врядли кому-то кроме меня может понадобиться такое. Лучше проголосуйте за баг


Я то проголосовал. Вот только получилось ровно два голоса.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Workaround для NemerleCodeGenerator
От: alvas  
Дата: 25.05.11 10:53
Оценка:
Здравствуйте, 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?
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[5]: Workaround для NemerleCodeGenerator
От: Ziaw Россия  
Дата: 25.05.11 11:35
Оценка:
Здравствуйте, alvas, Вы писали:

A>Мне бы ASP.NET MVC 3 совершенно не помешал бы. ПМ там планируется?


Там проблема сейчас не в рэйзоре, и даже не в коддоме а более насущная. Компилятор nemerle не умеет дружить сразу с несколькими рантаймами. А сборки MVC3, похоже, имеют где-то ссылки на сборки рантайма 2.0. Вероятно проблема будет решена после того, как Хардкейс закончит перевод компилятора на CCI.

A>В общем как будет выглядеть поддержка ASP.NET MVC 3 для N?


Например так: http://code.google.com/p/nemerleonrails/wiki/Progress

Как только насущная проблема проблема будет решена, я займусь рэйзором.
Re[6]: Workaround для NemerleCodeGenerator
От: alvas  
Дата: 25.05.11 12:01
Оценка:
Здравствуйте, 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 макрос. Я не прав?
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[5]: Workaround для NemerleCodeGenerator
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.11 13:02
Оценка:
Здравствуйте, alvas, Вы писали:

A>Мне бы ASP.NET MVC 3 совершенно не помешал бы. ПМ там планируется?

A>В общем как будет выглядеть поддержка ASP.NET MVC 3 для N?

Думаю что так же как сейчас выглядит ASP.NET MVC 2.

Если хочешь чего-то радикально более крутого, то присоединяйся к группе разработчиков нашего реактивного фрймворка.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Workaround для NemerleCodeGenerator
От: Ziaw Россия  
Дата: 25.05.11 13:19
Оценка:
Здравствуйте, alvas, Вы писали:

A>Там уж сильно наворочено. Аналог Razor в N это xml макрос. Я не прав?


Аналога razor в nemerle нет. Аналогом будет компилятор под nemerle. Xml прекрасный и полезный макрос, но razor он не заменит.
Re[7]: Workaround для NemerleCodeGenerator
От: Ziaw Россия  
Дата: 25.05.11 13:22
Оценка:
Здравствуйте, alvas, Вы писали:

A>Там уж сильно наворочено.


P.S. Все что там есть можно использовать по отдельности. Например spark view engine для немерле.
Re[6]: Workaround для NemerleCodeGenerator
От: seregaa Ниоткуда http://blogtani.ru
Дата: 25.05.11 13:36
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Как только насущная проблема проблема будет решена, я займусь рэйзором.


Сохраню ссылку здесь — http://www.infoq.com/news/2011/01/Razor-Extensions
Это поверхностное изложение шагов, необходимых для добавления поддержки нового языка в Razor.
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[7]: Workaround для NemerleCodeGenerator
От: Ziaw Россия  
Дата: 25.05.11 13:53
Оценка:
Здравствуйте, seregaa, Вы писали:

S>Сохраню ссылку здесь — http://www.infoq.com/news/2011/01/Razor-Extensions

S>Это поверхностное изложение шагов, необходимых для добавления поддержки нового языка в Razor.

А тут пример:
https://github.com/dahlbyk/FSRazor
Re[8]: Workaround для NemerleCodeGenerator
От: seregaa Ниоткуда http://blogtani.ru
Дата: 25.05.11 14:19
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>А тут пример:

Z>https://github.com/dahlbyk/FSRazor

Здорово! А достаточно ли этого для поддержки дебага, комплита и подсветки?
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[6]: Workaround для NemerleCodeGenerator
От: alvas  
Дата: 25.05.11 14:55
Оценка:
Здравствуйте, 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>Если хочешь чего-то радикально более крутого, то присоединяйся к группе разработчиков нашего реактивного фрймворка.


Пока хочу минимальной поддержки. По поводу реактивного фреймворка я пока вообще не врубаюсь. Слышал "дзвин, та нэ знаю дэ вин".
С кем можно пообщаться? Неплохо было бы по скайпу
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[8]: Workaround для NemerleCodeGenerator
От: alvas  
Дата: 25.05.11 14:55
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Здравствуйте, alvas, Вы писали:


A>>Там уж сильно наворочено.


Z>P.S. Все что там есть можно использовать по отдельности. Например spark view engine для немерле.


А почему спарк?
http://alvas.net — Аудио-инструменты для .Net разработчиков
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.