/// <summary>
        ///		Obtiene la parte .format de un comando SQL
        /// </summary>
        private string GetFormatArguments(List <string> arguments)
        {
            string             result    = string.Empty;
            TableVariableModel variables = Context.Actual.GetVariablesRecursive();

            // Sólo hay un formato si realmente hay argumentos
            if (arguments.Count > 0)
            {
                // Añade el inicio del comando format
                result += ".format(";
                // Añade los argumentos
                for (int index = 0; index < arguments.Count; index++)
                {
                    // Separador
                    if (index > 0)
                    {
                        result += ", ";
                    }
                    // Argumento: si está en la tabla de variables, se pone la variable, si no está en la tabla de variables
                    // es un getArgument
                    if (variables.Exists(arguments[index]))
                    {
                        result += arguments[index];
                    }
                    else
                    {
                        result += $"getArgument('{arguments[index]}')";
                    }
                }
                // Añade el fin del comando format
                result += ")";
            }
            // Devuelve el resultado
            return(result);
        }
Ejemplo n.º 2
0
        /// <summary>
        ///		Obtiene los parámetros a partir de una tabla de variables
        /// </summary>
        private Dictionary <string, object> GetParameters(TableVariableModel tableVariable)
        {
            Dictionary <string, object> parameters = new Dictionary <string, object>();

            // Transforma los parámetros
            foreach (KeyValuePair <string, VariableModel> variable in tableVariable.GetAll())
            {
                parameters.Add(variable.Value.Name, variable.Value.Value);
            }
            // Devuelve los parámetros
            return(parameters);
        }
Ejemplo n.º 3
0
        /// <summary>
        ///		Convierte un texto con el contenido de las variables
        /// </summary>
        public string EvaluateText(ContextModel context, string text, out string error)
        {
            TableVariableModel variables = context.GetVariablesRecursive();
            string             result    = "";

            // Inicializa los argumentos de salida
            error = string.Empty;
            // Mientras quede algo de texto por interpretar ...
            while (!string.IsNullOrWhiteSpace(text) && string.IsNullOrEmpty(error))
            {
                int start = text.IndexOf(StartVariable);

                // Interpreta la variable
                if (start >= 0)
                {
                    int end;

                    // Añade el inicio al resultado
                    result += text.Left(start);
                    // Quita el token de inicio de la variable del texto
                    text = text.From(start + EndVariable.Length);
                    // Obtiene el índice de la parte final de la variable
                    end = text.IndexOf(EndVariable);
                    // Si se ha encontrado un nombre de variable
                    if (end >= 0)
                    {
                        string        variable = text.Left(end);
                        string        format   = GetFormat(variable);
                        VariableModel symbol;

                        // Quita el nombre de la variable del texto
                        text = text.From(end + EndVariable.Length);
                        // Si se ha encontrado un formato se quita del nombre de la cadena
                        if (!format.IsEmpty())
                        {
                            variable = variable.Left(variable.Length - format.Length - 1);
                        }
                        // Interpreta la cadena
                        symbol = variables.Get(variable);
                        // Si se ha encontrado, se añade el mismo valor al resultando
                        if (symbol == null)
                        {
                            error = $"Can't find the variable {variable}";
                        }
                        else
                        {
                            result += ConvertStringValue(symbol.Value, format);
                        }
                    }
                    else                                             //... no hay cadena de fin de variable se añade al resultado el comienzo de variable
                    {
                        result += StartVariable;
                    }
                }
                else
                {
                    result += text;
                    text    = "";
                }
            }
            // Devuelve el contenido
            return(result);
        }