Advertisement
Guest User

Untitled

a guest
Nov 17th, 2017
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.67 KB | None | 0 0
  1. void ParseDescriptionFormula(RowInfo r, string columnId, StringBuilder descFormat, Dictionary<string, AbilityTKArgument> partTKArgs)
  2.         {
  3.             var formula = r.GetFormula(columnId);
  4.             if (string.IsNullOrEmpty(formula))
  5.             {
  6.                 descFormat.Append(r.GetTrimmedString(columnId));
  7.                 return;
  8.             }
  9.  
  10.             var formulaParts = formula.Split('&');
  11.             for (var i = 0; i < formulaParts.Length; i += 1)
  12.             {
  13.                 var formulaPart = formulaParts[i].Trim();
  14.                 if (formulaPart.StartsWith("\""))
  15.                 {
  16.                     var text = formulaPart.Trim('\"');
  17.                     if (text.StartsWith("(X)"))
  18.                     {
  19.                         text = text.Substring(3);
  20.                         PrintUniqueWarn("Removed (X) from description, it's deprecated, row: " + r.Row);
  21.                     }
  22.                     descFormat.Append(text);
  23.                     continue;
  24.                 }
  25.  
  26.                 object value;
  27.                 string format;
  28.  
  29.                 var match = TextFuncRegex.Match(formulaPart);
  30.                 if (match.Success)
  31.                 {
  32.                     var groups = match.Groups.Cast<Group>().ToArray();
  33.                     value = Worksheet.Calculate(groups[1].Value);
  34.                     format = (string)Worksheet.Calculate(groups[2].Value);
  35.                 }
  36.                 else
  37.                 {
  38.                     value = Worksheet.Calculate(formulaPart);
  39.                     format = "0";
  40.                 }
  41.  
  42.                 if (value is double)
  43.                 {
  44.                     value = (float)(double)value;
  45.                 }
  46.  
  47.                 descFormat.Append("{" + partTKArgs.Count + "}");
  48.                 var arg = new AbilityTKArgument() { Format = format, IsConst = true };
  49.  
  50.                 if (value is float)
  51.                 {
  52.                     arg.FloatValue = (float)value;
  53.                 }
  54.                 else if (value is string)
  55.                 {
  56.                     arg.StringValue = (string)value;
  57.                 }
  58.                 else
  59.                 {
  60.                     PrintUniqueError("Unsupported arg type: " + value.GetType() + " in row " + r.Row);
  61.                 }
  62.  
  63.                 foreach (Match cell in CellRefRegex.Matches(formulaPart))
  64.                 {
  65.                     var addr = new ExcelAddress(cell.Value);
  66.                     if (IsColumnAffectedByMastery(addr.Start.Column))
  67.                     {
  68.                         arg.IsConst = false;
  69.                     }
  70.                 }
  71.  
  72.                 partTKArgs.Add(format, arg);
  73.             }
  74.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement