From e277e4cadbf1f8b5404e972ce3b174c2a0950cdd Mon Sep 17 00:00:00 2001 From: Elijah Date: Wed, 16 Feb 2011 22:53:11 -1000 Subject: [PATCH] Dynamic keyword is back for Parameters/Dictionary --- umbraco.MacroEngines.Juno/BaseContext.cs | 12 ++++++++++-- umbraco.MacroEngines.Juno/RazorUmbracoHost.cs | 2 ++ .../UmbracoCultureDictionary.cs | 8 +++++++- .../UmbracoParameterDictionary.cs | 7 ++++++- 4 files changed, 25 insertions(+), 4 deletions(-) diff --git a/umbraco.MacroEngines.Juno/BaseContext.cs b/umbraco.MacroEngines.Juno/BaseContext.cs index b0315d04f7..fcccbece5a 100644 --- a/umbraco.MacroEngines.Juno/BaseContext.cs +++ b/umbraco.MacroEngines.Juno/BaseContext.cs @@ -13,8 +13,8 @@ namespace umbraco.MacroEngines protected IParameterDictionary ParameterDictionary; protected ICultureDictionary CultureDictionary; - public IParameterDictionary Parameter { get { return ParameterDictionary; } } - public ICultureDictionary Dictionary { get { return CultureDictionary; } } + public dynamic Parameter { get { return ParameterDictionary; } } + public dynamic Dictionary { get { return CultureDictionary; } } public MacroModel Macro { get { return _macro; } } public INode Node { get { return _node; } } @@ -42,5 +42,13 @@ namespace umbraco.MacroEngines SetMembers(macroContext.Macro, macroContext.Node); } } + + public string GetParameter(string alias) { + return ParameterDictionary[alias]; + } + + public string GetDictionary(string key) { + return CultureDictionary[key]; + } } } diff --git a/umbraco.MacroEngines.Juno/RazorUmbracoHost.cs b/umbraco.MacroEngines.Juno/RazorUmbracoHost.cs index fbec90c51e..21149e0e8e 100644 --- a/umbraco.MacroEngines.Juno/RazorUmbracoHost.cs +++ b/umbraco.MacroEngines.Juno/RazorUmbracoHost.cs @@ -15,5 +15,7 @@ namespace umbraco.MacroEngines return new CSharpRazorCodeLanguage(); return base.GetCodeLanguage(); } + + } } diff --git a/umbraco.MacroEngines.Juno/UmbracoCultureDictionary.cs b/umbraco.MacroEngines.Juno/UmbracoCultureDictionary.cs index 4ef21aac88..3089a27346 100644 --- a/umbraco.MacroEngines.Juno/UmbracoCultureDictionary.cs +++ b/umbraco.MacroEngines.Juno/UmbracoCultureDictionary.cs @@ -1,10 +1,11 @@ using System; +using System.Dynamic; using umbraco.cms.businesslogic; using umbraco.cms.businesslogic.language; namespace umbraco.MacroEngines { - public class UmbracoCultureDictionary : ICultureDictionary { + public class UmbracoCultureDictionary : DynamicObject, ICultureDictionary { public string this[string key] { get { @@ -19,6 +20,11 @@ namespace umbraco.MacroEngines { get { return Language.GetByCultureCode(System.Threading.Thread.CurrentThread.CurrentUICulture.Name); } } + public override bool TryGetMember(GetMemberBinder binder, out object result) { + result = this[binder.Name]; + return true; + } + } } diff --git a/umbraco.MacroEngines.Juno/UmbracoParameterDictionary.cs b/umbraco.MacroEngines.Juno/UmbracoParameterDictionary.cs index ebf4a8c5ce..8e959c781e 100644 --- a/umbraco.MacroEngines.Juno/UmbracoParameterDictionary.cs +++ b/umbraco.MacroEngines.Juno/UmbracoParameterDictionary.cs @@ -1,12 +1,13 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Dynamic; using umbraco.cms.businesslogic.macro; using System.Linq; namespace umbraco.MacroEngines { - public class UmbracoParameterDictionary : IParameterDictionary { + public class UmbracoParameterDictionary : DynamicObject, IParameterDictionary { private readonly IEnumerable _paramsKeyValue; @@ -28,6 +29,10 @@ namespace umbraco.MacroEngines { get { return _paramsKeyValue.Where(p => p.Key == alias).Select(p => p.Value).FirstOrDefault(); } } + public override bool TryGetMember(GetMemberBinder binder, out object result) { + result = this[binder.Name]; + return true; + } } } \ No newline at end of file