Exemple #1
0
        /// <summary> Evaluates  value for gived qualifier. </summary>
        /// <typeparam name="T">Return type</typeparam>
        /// <param name="qualifier">Qualifier: osm tag key</param>
        /// <param name="converter">Convertrs string to given type</param>
        /// <returns>Evaluated value</returns>
        public T Evaluate <T>(string qualifier, Func <string, T> converter)
        {
            Assert();

            if (!Declarations.ContainsKey(qualifier))
            {
                throw new ArgumentException(String.Format(Strings.StyleDeclarationNotFound,
                                                          qualifier, _model), qualifier);
            }

            var declaration = Declarations[qualifier];

            return(declaration.IsEval
                ? declaration.Evaluator.Walk <T>(_model)
                : converter(declaration.Value));
        }
Exemple #2
0
        /// <summary> Evaluates list of values for gived qualifier. </summary>
        /// <typeparam name="T">Return type</typeparam>
        /// <param name="qualifier">Qualifier: osm tag key</param>
        /// <param name="converter">Convertrs string to given type</param>
        public IEnumerable <T> EvaluateList <T>(string qualifier, Func <string, T> converter)
        {
            if (!Declarations.ContainsKey(qualifier))
            {
                return(Enumerable.Empty <T>());
            }

            Declaration declaration;
            var         listDeclaration = Declarations[qualifier] as ListDeclaration;

            if (listDeclaration != null)
            {
                declaration = listDeclaration.Items.First();
                return(declaration.Evaluator.Walk <IEnumerable <T> >(_model));
            }
            declaration = Declarations[qualifier];
            return(Evaluate(declaration, converter));
        }
Exemple #3
0
        /// <summary> Evaluates value for gived qualifier. If not possible, returns default. </summary>
        /// <typeparam name="T">Return type</typeparam>
        /// <param name="qualifier">Qualifier: osm tag key</param>
        /// <param name="default">Default value</param>
        /// <returns>Evaluated value</returns>
        public T EvaluateDefault <T>(string qualifier, T @default)
        {
            Assert();

            if (!Declarations.ContainsKey(qualifier))
            {
                return(@default);
            }

            var declaration = Declarations[qualifier];

            if (declaration.IsEval)
            {
                return(declaration.Evaluator.Walk <T>(_model));
            }

            return((T)Convert.ChangeType(declaration.Value, typeof(T)));
        }