Exemplo n.º 1
0
        public override object Parse(MathCell ownerMathCell)
        {
            string formula = ownerMathCell.DereferencedFormula =
                ownerMathCell.Formula = RemoveRedundantZeroes(ownerMathCell);

            if (AddressesHandler.HasAnyAddress(formula))
            {
                int i = 0;
                while (AddressesHandler.HasAnyAddress(formula)) // While formula contains any reference
                {
                    MathCell refCell    = ownerMathCell.References[i];
                    string   refAddress = refCell.OwnAddress;

                    if (refCell.Value == null)
                    {
                        refCell.EvaluateFormula();
                    }

                    string refValue = refCell.Value.ToString();
                    if (string.IsNullOrEmpty(refValue))
                    {
                        ownerMathCell.DereferencedFormula = formula = formula.Replace(refAddress, "0");
                    }
                    ownerMathCell.DereferencedFormula = formula = formula.Replace(refAddress, refValue);

                    ++i;
                }
            }

            return(base.Parse(ownerMathCell));
        }
Exemplo n.º 2
0
        public override object Parse(MathCell ownerMathCell)
        {
            ownerMathCell.ResetReferences();

            string formula = ownerMathCell.Formula;

            if (AddressesHandler.HasAnyAddress(formula))
            {
                List <string> formulaReferences = AddressesHandler.GetAddresses(formula);
                for (int i = 0; i < formulaReferences.Count; ++i)
                {
                    string reference = formulaReferences[i];

                    MathCell refCell =
                        MathCellsProvider.GetInstance.GetMathCell(reference);

                    if (!ownerMathCell.References.Contains(refCell))
                    {
                        ownerMathCell.InsertReference(refCell);
                    }

                    if (!refCell.Dependents.Contains(ownerMathCell))
                    {
                        refCell.InsertDependent(ownerMathCell);
                    }
                }
            }

            return(base.Parse(ownerMathCell));
        }