public object Clone() { RenderingExpression clone = new RenderingExpression(); foreach (RenderingExpressionItem item in mvarItems) { clone.Items.Add(item.Clone() as RenderingExpressionItem); } return(clone); }
public static RenderingExpression Parse(string value) { RenderingExpression expr = new RenderingExpression(); bool escaping = false; StringBuilder sbLiteral = new StringBuilder(); for (int i = 0; i < value.Length; i++) { if (IsNumeric(value[i]) || (value[i] == '.' && sbLiteral.Length > 0)) { sbLiteral.Append(value[i]); } else if (value[i] == ' ') { continue; } else if (value[i] == '-') { expr.Items.Add(new OperatorRenderingExpressionItem(OperatorType.Subtract)); } else if (value[i] == '\\') { if (escaping) { sbLiteral.Append(value[i]); escaping = false; continue; } escaping = true; } else if (value[i] == '$') { if (escaping) { sbLiteral.Append(value[i]); escaping = false; continue; } if (value[i + 1] == '(') { int start = i + 2; int end = value.IndexOf(')', i + 2) - start; string variableName = value.Substring(start, end); i += 2; i += variableName.Length; expr.Items.Add(new VariableRenderingExpressionItem(variableName)); } } else { if (sbLiteral.Length > 0) { float val = Single.Parse(sbLiteral.ToString()); sbLiteral = new StringBuilder(); expr.Items.Add(new LiteralRenderingExpressionItem(val)); } } } // final loop if (sbLiteral.Length > 0) { float val = Single.Parse(sbLiteral.ToString()); sbLiteral = new StringBuilder(); expr.Items.Add(new LiteralRenderingExpressionItem(val)); } return(expr); }
public static RenderingExpression Parse(string value) { RenderingExpression expr = new RenderingExpression(); bool escaping = false; StringBuilder sbLiteral = new StringBuilder(); for (int i = 0; i < value.Length; i++) { if (IsNumeric(value[i]) || (value[i] == '.' && sbLiteral.Length > 0)) { sbLiteral.Append(value[i]); } else if (value[i] == ' ') { continue; } else if (value[i] == '-') { expr.Items.Add(new OperatorRenderingExpressionItem(OperatorType.Subtract)); } else if (value[i] == '\\') { if (escaping) { sbLiteral.Append(value[i]); escaping = false; continue; } escaping = true; } else if (value[i] == '$') { if (escaping) { sbLiteral.Append(value[i]); escaping = false; continue; } if (value[i + 1] == '(') { int start = i + 2; int end = value.IndexOf(')', i + 2) - start; string variableName = value.Substring(start, end); i += 2; i += variableName.Length; expr.Items.Add(new VariableRenderingExpressionItem(variableName)); } } else { if (sbLiteral.Length > 0) { float val = Single.Parse(sbLiteral.ToString()); sbLiteral = new StringBuilder(); expr.Items.Add(new LiteralRenderingExpressionItem(val)); } } } // final loop if (sbLiteral.Length > 0) { float val = Single.Parse(sbLiteral.ToString()); sbLiteral = new StringBuilder(); expr.Items.Add(new LiteralRenderingExpressionItem(val)); } return expr; }
public object Clone() { RenderingExpression clone = new RenderingExpression(); foreach (RenderingExpressionItem item in mvarItems) { clone.Items.Add(item.Clone() as RenderingExpressionItem); } return clone; }