示例#1
0
        private void WriteToPage(object page, XVar objectToWrite)
        {
            if (objectToWrite.IsArray())
            {
                if (objectToWrite.KeyExists("method"))
                {
                    XVar             parameters    = objectToWrite.KeyExists("params") ? objectToWrite["params"] : new XVar();
                    xtMethodDelegate invokedMethod = (xtMethodDelegate)objectToWrite["method"].Value;

                    MVCFunctions.ob_start();
                    var result    = invokedMethod.Invoke(parameters);
                    var resultStr = result as object == null ? "" : result.ToString();


                    MvcHtmlString textToWrite = MvcHtmlString.Create(MVCFunctions.ob_get_contents() + resultStr);
                    MVCFunctions.ob_end_clean();

                    page.GetType().GetMethod("Write", new Type[] { typeof(MvcHtmlString) }).Invoke(page, new object[] { textToWrite });
                }
            }
            else
            {
                page.GetType().GetMethod("Write", new Type[] { typeof(MvcHtmlString) }).Invoke(page, new object[] { MvcHtmlString.Create(objectToWrite.ToString()) });
            }
        }
示例#2
0
        public System.Collections.IEnumerable GetSection(string sectionName, object page)
        {
            XVar     sectionValue = getVar(sectionName);
            XSection xSection     = new XSection();

            if (sectionValue != null)
            {
                if (sectionValue.Type == typeof(bool) && sectionValue)
                {
                    yield return(sectionName);
                }
                else if (sectionValue.IsArray())
                {
                    if (sectionValue.KeyExists("begin"))
                    {
                        WriteToPage(page, sectionValue["begin"]);
                    }
                    if (!sectionValue.KeyExists("data") ||
                        !sectionValue["data"].IsArray())
                    {
                        yield return(sectionName);
                    }
                    else
                    {
                        xSection.End = null;
                        foreach (var dataItem in sectionValue["data"].GetEnumerator())
                        {
                            if (dataItem.Value.IsArray())
                            {
                                xt_stack.Add(dataItem.Value);
                                if (dataItem.Value.KeyExists("begin"))
                                {
                                    WriteToPage(page, dataItem.Value["begin"]);
                                }
                            }
                            yield return(sectionName);

                            if (dataItem.Value.IsArray())
                            {
                                xt_stack.Remove(xt_stack.Count() - 1);
                                if (dataItem.Value.KeyExists("end"))
                                {
                                    WriteToPage(page, dataItem.Value["end"]);
                                }
                            }
                            xSection.Begin = null;
                        }
                    }
                    if (sectionValue.KeyExists("end"))
                    {
                        WriteToPage(page, sectionValue["end"]);
                    }
                }
                else if (sectionValue.Type != typeof(bool))
                {
                    yield return(sectionName);
                }
            }
        }
示例#3
0
 public XVar exists(dynamic curEvent, dynamic table = null)
 {
     if (table == null || table == "")
     {
         return(events.KeyExists(curEvent));
     }
     else
     {
         return(events.KeyExists(curEvent) && events[curEvent].KeyExists(table));
     }
 }
示例#4
0
 public object this[XVar index]
 {
     get
     {
         if (buffer.KeyExists(index))
         {
             return buffer[index];
         }
         return null;
     }
 }
示例#5
0
        private string[] buildInsertColumnNamesAndValues(IDictionary <string, string> csvColumnDataTypesDictionary, XVar data)
        {
            string[]      returnStrings = new string[2];
            StringBuilder csvColumns    = new StringBuilder();
            StringBuilder csvValues     = new StringBuilder();

            foreach (KeyValuePair <string, string> kvp in csvColumnDataTypesDictionary)
            {
                if (data.KeyExists(kvp.Key))
                {
                    if (csvColumns.Length > 0)
                    {
                        csvColumns.Append(",");
                        csvValues.Append(",");
                    }
                    csvColumns.Append(kvp.Key);
                    if (data.GetArrayItem(kvp.Key).Length() == 0)
                    {
                        csvValues.Append("NULL");
                    }
                    else if (kvp.Value.Equals("STRING"))
                    {
                        string valueString = data.GetArrayItem(kvp.Key).Replace("'", "''");
                        csvValues.AppendFormat("{0}{1}{2}", "'", valueString, "'");
                    }
                    else if (kvp.Value.Equals("NUMBER"))
                    {
                        csvValues.Append(data.GetArrayItem(kvp.Key).ToString());
                    }
                    else if (kvp.Value.Equals("DATE"))
                    {
                        csvValues.AppendFormat("{0}{1}{2}", "TO_DATE('", data.GetArrayItem(kvp.Key).ToString(), "', 'YYYYMMDD')");
                        // csvValues.AppendFormat("{0}{1}{2}", "'", data[kvp.Key], "'");
                    }
                    else
                    {
                        throw new Exception("Could not file datatype of " + kvp.Value);
                    }
                }
            }
            returnStrings[0] = csvColumns.ToString();
            returnStrings[1] = csvValues.ToString();
            return(returnStrings);
        }
示例#6
0
        private string buildWhereClauseColumnNamesAndValues(IDictionary <string, string> csvColumnDataTypesDictionary, XVar data)
        {
            string        returnString     = "";
            StringBuilder whereStmtBuilder = new StringBuilder();

            foreach (KeyValuePair <string, string> kvp in csvColumnDataTypesDictionary)
            {
                if (data.KeyExists(kvp.Key))
                {
                    if (whereStmtBuilder.Length > 0)
                    {
                        whereStmtBuilder.Append(" AND ");
                    }
                    if (kvp.Value.Equals("STRING"))
                    {
                        string valueString = data[kvp.Key].Replace("'", "''");
                        whereStmtBuilder.AppendFormat("{0} = {1}{2}{3}", kvp.Key, "'", valueString, "'");
                    }
                    else if (kvp.Value.Equals("NUMBER"))
                    {
                        whereStmtBuilder.AppendFormat("{0} = {1}", kvp.Key, data[kvp.Key]);
                    }
                    else if (kvp.Value.Equals("DATE"))
                    {
                        whereStmtBuilder.AppendFormat("{0} = {1}{2}{3}", kvp.Key, "TO_DATE('", data[kvp.Key], "', 'YYYYMMDD')");
                    }
                    else
                    {
                        throw new Exception("Could not file datatype of " + kvp.Value);
                    }
                }
            }
            returnString = whereStmtBuilder.ToString();

            return(returnString);
        }
示例#7
0
        private string[] buildUpdateColumnNamesAndValues(IDictionary <string, string> csvColumnDataTypesDictionary, XVar data)
        {
            string[]      returnStrings     = new string[1];
            StringBuilder updateStmtBuilder = new StringBuilder();

            foreach (KeyValuePair <string, string> kvp in csvColumnDataTypesDictionary)
            {
                if (data.KeyExists(kvp.Key))
                {
                    if (data.GetArrayItem(kvp.Key).Length() == 0)
                    {
                        updateStmtBuilder.AppendFormat("{0} = NULL", kvp.Key);
                    }
                    else if (kvp.Value.Equals("STRING"))
                    {
                        string valueString = data.GetArrayItem(kvp.Key).Replace("'", "''");
                        updateStmtBuilder.AppendFormat("{0}={1}{2}{3}", kvp.Key, "'", valueString, "'");
                    }
                    else if (kvp.Value.Equals("NUMBER"))
                    {
                        updateStmtBuilder.AppendFormat("{0}={1}", kvp.Key, data.GetArrayItem(kvp.Key).ToString());
                    }
                    else if (kvp.Value.Equals("DATE"))
                    {
                        updateStmtBuilder.AppendFormat("{0} = {1}{2}{3}", kvp.Key, "TO_DATE('", data.GetArrayItem(kvp.Key).ToString(), "', 'YYYYMMDD')");
                    }
                    else
                    {
                        throw new Exception("Could not file datatype of " + kvp.Value);
                    }
                }
            }
            returnStrings[0] = updateStmtBuilder.ToString();

            return(returnStrings);
        }
示例#8
0
 public XVar existsCAPTCHA(dynamic page)
 {
     return(captchas.KeyExists(page));
 }
示例#9
0
 public XVar existsMap(dynamic page)
 {
     return(maps.KeyExists(page));
 }
示例#10
0
        public static IEnumerable <XVar> IterateSheet(ExcelPackage xlsPack, XVar fieldsData, bool useFirstLine)
        {
            XVar previewData = null;

            foreach (var worksheet in xlsPack.Workbook.Worksheets)
            {
                for (int row = (useFirstLine? 1 : 2); row <= worksheet.Dimension.End.Row; ++row)
                {
                    XVar arr = XVar.Array();
                    for (int i = 0; i < worksheet.Dimension.End.Column; i++)
                    {
                        if (!fieldsData.KeyExists(i))
                        {
                            continue;
                        }

                        var  cell = worksheet.Cells[row, i + 1];
                        XVar val  = null;
                        if (cell != null && cell.Value != null)
                        {
                            bool dateCorrectlyExtracted = false;
                            if (cell.Value is DateTime)                             // sometimes date stored in a DateTime
                            {
                                val = ((DateTime)cell.Value).ToString("yyyy-MM-dd H:mm:ss");
                                dateCorrectlyExtracted = true;
                            }
                            else if (Regex.IsMatch(cell.Style.Numberformat.Format, ("([ymdHis])")))                             // sometimes date stored in a weird number
                            {
                                cell.Style.Numberformat.Format = "yyyy-MM-dd H:mm:ss";
                                val = cell.Text;
                                dateCorrectlyExtracted = true;
                            }
                            else if (cell.IsRichText)
                            {
                                val = cell.RichText.Text;
                            }
                            else
                            {
                                val = new XVar(cell.Value.ToString());
                            }

                            // the following code block looks suspicious (!)
                            if (fieldsData.KeyExists(i) && fieldsData[i]["dateTimeType"] &&                          // column should have date value,
                                !dateCorrectlyExtracted &&                                                              // but in excel it looks awfull
                                (row != 0 || !useFirstLine))                                                            // also we still dont know actual format and it is not header row
                            {
                                previewData = XVar.Array();
                                // so try to guess format from the value
                                previewData["dateFormat"] = ImportPage.extractDateFormat(val);
                            }
                        }

                        if (previewData != null)
                        {
                            arr.Add(MVCFunctions.runner_htmlspecialchars(val));
                        }
                        else
                        {
                            arr[fieldsData[i]["fName"]] = val;
                        }
                    }

                    yield return(arr);
                }
            }
        }