public ParameterValue GetValue(EvaluationContext context) { object val = context.Parameters.GetObject(BaseParameterName); if (val != null) { foreach (var prop in Properties) { val = ObjectHelper.Eval(val, prop); } } return(ParameterValue.Wrap(val)); }
public ParameterValue this[string key] { get { key = key.ToLowerInvariant(); var val = GetInternal(key); return(val ?? ParameterValue.Wrap(null)); } set { key = key.ToLowerInvariant(); SetInternal(key, value); } }
static bool TestSwitchCaseCondition(string spelling, double value) { var dialect = new DefaultDialect(); var manager = new DummyManager(); var sc = dialect.GetSwitchConditionEvaluator(new Expression { Parts = new List <ExpressionPart> { new Text { Spelling = spelling } } }, manager); var success = sc.Evaluate(ParameterValue.Wrap(value), CreateContext(null, new LanguageInfo { Key = "en-US" }, null)); Console.Out.WriteLine(value + " matches " + spelling + ": " + success); return(success); }
public static ParameterValue WithDefaultFormat <TValue>(this TValue value, string format) { var manager = LocalizationHelper.TextManager; IValueFormatter defaultFormatter = null; foreach (var dialect in manager.Dialects) { try { defaultFormatter = dialect.Value.GetValueFormatter(format, manager); } catch { } } if (defaultFormatter == null) { throw new NullReferenceException("No format found for \"" + format); } var pv = ParameterValue.Wrap(value); pv.DefaultFormat = defaultFormatter; return(pv); }
//If another namespace is needed for the pattern lookup it can be written as Namespace__Key, i.e. namespace and key seperated by two underscores '_' public ParameterValue GetValue(EvaluationContext context) { var values = context.Parameters; string actualPatternKey; if (PatternKey.StartsWith("@")) { var parts = PatternKey.Substring(1).Split('+'); actualPatternKey = (string)values.GetObject(parts[0]); if (parts.Length > 1) { actualPatternKey += parts[1]; } } else { actualPatternKey = PatternKey; } string ns = context.Namespace; int ix = actualPatternKey.IndexOf(NamespaceQualifier); if (ix != -1) { ns = actualPatternKey.Substring(0, ix); actualPatternKey = actualPatternKey.Substring(ix + NamespaceQualifier.Length); } if (actualPatternKey != null) { int i = 0; var callValues = new DicitionaryParameterSet(); foreach (var p in Parameters) { if ((p.Key.StartsWith("\"") || p.Key.StartsWith("'")) && (p.Key.EndsWith("\"") || p.Key.EndsWith("'"))) { callValues["" + i] = ParameterValue.Wrap(p.Key.Substring(1, p.Key.Length - 2)); } else { ParameterValue v = null; if (p.Value != null) { v = values[p.Key].Clone(); v.DefaultFormat = p.Value; } else { v = values[p.Key]; } callValues[p.Key] = v; callValues["" + i] = v; } ++i; } return(new UnencodedParameterValue(Manager.Get(actualPatternKey, callValues, ns: ns, language: context.Language, returnNullOnMissing: true))); } else { //The pattern key was to be looked up and wasn't in the provided values. Return null return(null); } }
public void SetObject(string key, object value) { this[key] = ParameterValue.Wrap(value); }