internal override void format_after(format_cell cell) { if (compare_.Count < 1) return; // nothing to compare var text = cell.format_text.text; int before_idx = before_ != "" ? text.IndexOf(before_) : 0; if (before_idx >= 0) { before_idx += before_.Length; int after_idx = after_ != "" ? text.IndexOf(after_, before_idx) : text.Length; if (after_idx >= 0) { var number = text.Substring(before_idx, after_idx - before_idx).Trim(); double val; if (double.TryParse(number, out val)) { // found the number - at this point, do all comparisons text_part format_number = new text_part(0,0); foreach (var comp in compare_) { bool equal = false, less = false, greater = false; try { if (is_int_) { equal = (long) val == comp.compare_int; less = (long) val < comp.compare_int; greater = (long) val > comp.compare_int; } else { equal = val == comp.compare_double; less = val < comp.compare_double; greater = val > comp.compare_double; } } catch { // this can happen only if number is longer than 'long' equal = less = greater = false; } if (equal && comp.equal != null) format_number = format_number.merge_copy(comp.equal); else if (less && comp.less != null) format_number = format_number.merge_copy(comp.less); else if (greater && comp.greater != null) format_number = format_number.merge_copy(comp.greater); } cell.format_text.add_part( new text_part(before_idx, after_idx - before_idx, format_number)); } } } }
internal override void format_after(format_cell cell) { if (compare_.Count < 1) { return; // nothing to compare } var text = cell.format_text.text; int before_idx = before_ != "" ? text.IndexOf(before_) : 0; if (before_idx >= 0) { before_idx += before_.Length; int after_idx = after_ != "" ? text.IndexOf(after_, before_idx) : text.Length; if (after_idx >= 0) { var number = text.Substring(before_idx, after_idx - before_idx).Trim(); double val; if (double.TryParse(number, out val)) { // found the number - at this point, do all comparisons text_part format_number = new text_part(0, 0); foreach (var comp in compare_) { bool equal = false, less = false, greater = false; try { if (is_int_) { equal = (long)val == comp.compare_int; less = (long)val < comp.compare_int; greater = (long)val > comp.compare_int; } else { equal = val == comp.compare_double; less = val < comp.compare_double; greater = val > comp.compare_double; } } catch { // this can happen only if number is longer than 'long' equal = less = greater = false; } if (equal && comp.equal != null) { format_number = format_number.merge_copy(comp.equal); } else if (less && comp.less != null) { format_number = format_number.merge_copy(comp.less); } else if (greater && comp.greater != null) { format_number = format_number.merge_copy(comp.greater); } } cell.format_text.add_part(new text_part(before_idx, after_idx - before_idx, format_number)); } } } }