I appreciate this.

Over the weekend, I made the move from RC3 of Monorail (http://
castleproject.org) to the Trunk of Monorail targeting .Net 2.0.

One of the reasons I took this opportunity was for this addition.
I am currently just a user of this open source project. (no committing
rights). I've been using Monorail for about a month.

I starting using them and created a few Unit test classes to test
them. My personal test classes at the moment do not have full
coverage, but they are a start.
When targeting the .Net 2.0 framework I ran into an issue with
JSGeneratorDispatcher when it called the hide method on
JSQueryGenerator class. The resolution ended up being to add a params
attribute to the method signature of methods that have an array in the
signature.
For example changing:
 public override void Hide(string[] ids)
                {
                        SelectRelevantElements(ids);
                        CodeGenerator.Write(".hide();");
                }
To:
 public override void Hide(params string[] ids)
                {
                        SelectRelevantElements(ids);
                        CodeGenerator.Write(".hide();");
                }

- Dave

On Sep 27, 5:03 am, "Ernst Naezer" <[EMAIL PROTECTED]> wrote:
> Brilliant :) Thanks, looks good. I'll apply it after the weekend when am
> back at my dev machine.
>
> cheers,
> Ernst
>
> On Sat, Sep 27, 2008 at 9:14 AM, Mike Nichols <[EMAIL PROTECTED]>wrote:
>
>
>
> > Ernst
> > I've uploaded the patch at
> >http://support.castleproject.org/projects/MR/issues/view/MR-ISSUE-490
>
> > mike
> > On Sep 26, 5:08 pm, Mike Nichols <[EMAIL PROTECTED]> wrote:
> > > Sure...let me clean it up and make sure it is castle code compliant.
> > > Can I post it on donjon this weekend or do you need it sooner?
>
> > > On Sep 26, 8:28 am, "Ernst Naezer" <[EMAIL PROTECTED]> wrote:
>
> > > > Yeah that sounds very good, lets apply that. Can you make a patch ?
>
> > > > cheers,
> > > > Ernst
>
> > > > On Fri, Sep 26, 2008 at 5:11 PM, Mike Nichols <
> > [EMAIL PROTECTED]>wrote:
>
> > > > > Mine is similar but is more relaxed, letting me define any kind of
> > > > > selector not just ids. So I write this in my .brailjs:
> > > > > page.ReplaceHtml("#myTarget",[EMAIL PROTECTED]:"mypartial"}) or
> > > > > page.ReplaceHtml(".myTarget",[EMAIL PROTECTED]:"mypartial"})
>
> > > > > On Sep 26, 2:21 am, "Ayende Rahien" <[EMAIL PROTECTED]> wrote:
> > > > > > This is something that I did for my private use. It works on my
> > machine,
> > > > > > etc...
>
> > > > > > On Fri, Sep 26, 2008 at 12:16 PM, Ernst Naezer <
> > [EMAIL PROTECTED]
> > > > > >wrote:
>
> > > > > > > Hi guys,
>
> > > > > > > did anybody ever get to writing this and some test cases under
> > the same
> > > > > > > license as the rest of the code so we can add it to the Monorail
> > base
> > > > > and
> > > > > > > fill that empty directory :)
>
> > > > > > > cheers,
> > > > > > > Ernst
>
> > > > > > [JQueryGenerator.cs3K ]using System;
> > > > > > using System.Collections.Generic;
> > > > > > using Castle.MonoRail.Framework.JSGeneration;
>
> > > > > > namespace HibernatingRhinos
> > > > > > {
> > > > > >         public class JQueryGenerator : AbstractJSGenerator
> > > > > >         {
> > > > > >                 static IDictionary<string, string> positions = new
> > > > > Dictionary<string, string>(StringComparer.InvariantCultureIgnoreCase)
> > > > > >                 {
> > > > > >                         {"before", "before"},
> > > > > >             {"after", "after"},
> > > > > >                         {"top", "prepend"},
> > > > > >                         {"bottom", "append"},
> > > > > >                         {"prepend", "prepend"},
> > > > > >                         {"append", "append"}
> > > > > >                 };
>
> > > > > >                 public JQueryGenerator(IJSCodeGenerator
> > codeGenerator)
> > > > > >                         : base(codeGenerator)
> > > > > >                 {
> > > > > >                 }
>
> > > > > >                 public override IJSElementGenerator
> > > > > CreateElementGenerator(string root)
> > > > > >                 {
> > > > > >                         return new JQueryElementGenerator(this,
> > root);
> > > > > >                 }
>
> > > > > >                 public override void Hide(string[] ids)
> > > > > >                 {
> > > > > >                         SelectRelevantElements(ids);
> > > > > >                         CodeGenerator.Write(".hide();");
> > > > > >                 }
>
> > > > > >                 private void SelectRelevantElements(params string[]
> > ids)
> > > > > >                 {
> > > > > >                         if (ids.Length == 0)
> > > > > >                                 throw new
> > InvalidOperationException("Must
> > > > > pass at least one id");
>
> > > > > >                         CodeGenerator.Write("jQuery(");
> > > > > >                         foreach (string id in ids)
> > > > > >                         {
> > > > > >                                 CodeGenerator.Write("#" + id +
> > ",");
> > > > > >                         }
> > > > > >                         CodeGenerator.RemoveTail();
> > > > > >                         CodeGenerator.Write(")");
> > > > > >                 }
>
> > > > > >                 public override void InsertHtml(string position,
> > string
> > > > > id, object renderOptions)
> > > > > >                 {
> > > > > >                         string realPosition;
> > > > > >                         if (positions.TryGetValue(position, out
> > > > > realPosition) == false)
> > > > > >                                 throw new
> > > > > InvalidOperationException("Position " + position + " is invalid");
> > > > > >                         SelectRelevantElements(id);
> > > > > >                         CodeGenerator.Write(".");
> > > > > >                         CodeGenerator.Write(realPosition);
> > > > > >                         CodeGenerator.Write(");");
> > > > > >                 }
>
> > > > > >                 public override void Remove(string[] ids)
> > > > > >                 {
> > > > > >                         SelectRelevantElements(ids);
> > > > > >                         CodeGenerator.Write(".remove();");
> > > > > >                 }
>
> > > > > >                 public override void Replace(string id, object
> > > > > renderOptions)
> > > > > >                 {
> > > > > >                         SelectRelevantElements(id);
> > > > > >                         CodeGenerator.Write(".replaceWith(");
>
> > > > > CodeGenerator.Write(Render(renderOptions).ToString());
> > > > > >                         CodeGenerator.Write(");");
>
> > > > > >                 }
>
> > > > > >                 public override void ReplaceHtml(string id, object
> > > > > renderOptions)
> > > > > >                 {
> > > > > >                         SelectRelevantElements(id);
> > > > > >                         CodeGenerator.Write(".empty();");
> > > > > >                         SelectRelevantElements(id);
> > > > > >                         CodeGenerator.Write(".append(");
>
> > > > > CodeGenerator.Write(Render(renderOptions).ToString());
> > > > > >                         CodeGenerator.Write(");");
> > > > > >                 }
>
> > > > > >                 public override void Show(string[] ids)
> > > > > >                 {
> > > > > >                         SelectRelevantElements(ids);
> > > > > >                         CodeGenerator.Write(".show();");
> > > > > >                 }
>
> > > > > >                 public override void Toggle(string[] ids)
> > > > > >                 {
> > > > > >                         SelectRelevantElements(ids);
> > > > > >                         CodeGenerator.Write(".toggle();");
> > > > > >                 }
> > > > > >         }
>
> > > > > > }
>
> > > > > > [JQueryElementGenerator.cs< 1K ]using
> > > > > Castle.MonoRail.Framework.JSGeneration;
>
> > > > > > namespace HibernatingRhinos
> > > > > > {
> > > > > >         public class JQueryElementGenerator : IJSElementGenerator
> > > > > >         {
> > > > > >                 private readonly JQueryGenerator parent;
> > > > > >                 private readonly string root;
>
> > > > > >                 public JQueryElementGenerator(JQueryGenerator
> > parent,
> > > > > string root)
> > > > > >                 {
> > > > > >                         this.parent = parent;
> > > > > >                         this.root = root;
> > > > > >                 }
>
> > > > > >                 public void ReplaceHtml(object renderOptions)
> > > > > >                 {
> > > > > >                         parent.ReplaceHtml(root, renderOptions);
> > > > > >                 }
>
> > > > > >                 public void Replace(object renderOptions)
> > > > > >                 {
> > > > > >                         parent.Replace(root, renderOptions);
> > > > > >                 }
>
> > > > > >                 public IJSGenerator ParentGenerator
> > > > > >                 {
> > > > > >                         get { return parent; }
> > > > > >                 }
> > > > > >         }
>
> > > > > > }
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Castle Project Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/castle-project-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to