diff --git a/umbraco.MacroEngines.Juno/BaseContext.cs b/umbraco.MacroEngines.Juno/BaseContext.cs index fee49a30e9..c756fd041f 100644 --- a/umbraco.MacroEngines.Juno/BaseContext.cs +++ b/umbraco.MacroEngines.Juno/BaseContext.cs @@ -10,11 +10,11 @@ namespace umbraco.MacroEngines private MacroModel _macro; private INode _node; protected T CurrentModel; - protected DynamicLambdaDictionary ParameterDictionary; - protected DynamicLambdaDictionary CultureDictionary; + protected ParameterDictionary ParameterDictionary; + protected CultureDictionary CultureDictionary; - public dynamic Parameter { get { return ParameterDictionary; } } - public dynamic Dictionary { get { return CultureDictionary; } } + public ParameterDictionary Parameter { get { return ParameterDictionary; } } + public CultureDictionary Dictionary { get { return CultureDictionary; } } public MacroModel Macro { get { return _macro; } } public INode Node { get { return _node; } } diff --git a/umbraco.MacroEngines.Juno/CultureDictionary.cs b/umbraco.MacroEngines.Juno/CultureDictionary.cs index 8574b27e9a..cd023c02e8 100644 --- a/umbraco.MacroEngines.Juno/CultureDictionary.cs +++ b/umbraco.MacroEngines.Juno/CultureDictionary.cs @@ -1,30 +1,20 @@ using System; -using System.Collections.Generic; using umbraco.cms.businesslogic; using umbraco.cms.businesslogic.language; namespace umbraco.MacroEngines { - public class CultureDictionary : DynamicLambdaDictionary { - public CultureDictionary() : base(ParseDictionaryKey) { } - public static string ParseDictionaryKey(string key) { - if (string.IsNullOrEmpty(key)) - return string.Empty; - var list = new List(); - list.Add(key); - if (key.Contains("_")) - list.Add(key.Replace("_", " ")); - return GetFirstDictionaryItem(list); - } + public class CultureDictionary : LambdaDictionary { + public CultureDictionary() : base(CollectEntry) { } - public static string GetFirstDictionaryItem(IEnumerable keys) { - foreach (var item in keys) { - try { - var l = Language.GetByCultureCode(System.Threading.Thread.CurrentThread.CurrentUICulture.Name); - return new Dictionary.DictionaryItem(item).Value(l.id); - } catch (Exception errDictionary) {} + public static string CollectEntry(string key) { + try{ + var l = Language.GetByCultureCode(System.Threading.Thread.CurrentThread.CurrentUICulture.Name); + return new Dictionary.DictionaryItem(key).Value(l.id); } + catch (Exception errDictionary) { } return string.Empty; } } + } diff --git a/umbraco.MacroEngines.Juno/DynamicLambdaDictionary.cs b/umbraco.MacroEngines.Juno/DynamicLambdaDictionary.cs deleted file mode 100644 index 54cf1de6ca..0000000000 --- a/umbraco.MacroEngines.Juno/DynamicLambdaDictionary.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Dynamic; - -namespace umbraco.MacroEngines { - - public abstract class DynamicLambdaDictionary : DynamicObject { - - protected Func RequestLambda; - - protected DynamicLambdaDictionary() {} - - protected DynamicLambdaDictionary(Func requestLambda) { - if (requestLambda == null) - throw new ArgumentNullException("requestLambda"); - RequestLambda = requestLambda; - } - - public override bool TryGetMember(GetMemberBinder binder, out object result) { - result = RequestLambda.Invoke(binder.Name); - return true; - } - - } - -} diff --git a/umbraco.MacroEngines.Juno/LambdaDictionary.cs b/umbraco.MacroEngines.Juno/LambdaDictionary.cs new file mode 100644 index 0000000000..f38b9222b9 --- /dev/null +++ b/umbraco.MacroEngines.Juno/LambdaDictionary.cs @@ -0,0 +1,26 @@ +using System; +using System.Dynamic; + +namespace umbraco.MacroEngines { + + public abstract class LambdaDictionary { + + protected Func RequestLambda; + + protected LambdaDictionary() {} + + protected LambdaDictionary(Func requestLambda) { + if (requestLambda == null) + throw new ArgumentNullException("requestLambda"); + RequestLambda = requestLambda; + } + + public TValue this[string alias] { + get { + return RequestLambda.Invoke(alias); + } + } + + } + +} diff --git a/umbraco.MacroEngines.Juno/ParameterDictionary.cs b/umbraco.MacroEngines.Juno/ParameterDictionary.cs index 3b99df6c21..34a71d51b7 100644 --- a/umbraco.MacroEngines.Juno/ParameterDictionary.cs +++ b/umbraco.MacroEngines.Juno/ParameterDictionary.cs @@ -4,7 +4,7 @@ using System.Collections.Generic; using umbraco.cms.businesslogic.macro; namespace umbraco.MacroEngines { - public class ParameterDictionary : DynamicLambdaDictionary { + public class ParameterDictionary : LambdaDictionary { public ParameterDictionary(IEnumerable properties) { RequestLambda = new Func(key => { var model = properties.FirstOrDefault(p => p.Key == key); diff --git a/umbraco.MacroEngines.Juno/umbraco.MacroEngines.csproj b/umbraco.MacroEngines.Juno/umbraco.MacroEngines.csproj index 63cebbef72..76b17c4a33 100644 --- a/umbraco.MacroEngines.Juno/umbraco.MacroEngines.csproj +++ b/umbraco.MacroEngines.Juno/umbraco.MacroEngines.csproj @@ -69,7 +69,7 @@ - +