Esempio n. 1
0
        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));
                    }
                }
            }
        }
Esempio n. 2
0
        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));
                    }
                }
            }
        }